60806040523480156200001157600080fd5b50620000276000801b336200002d60201b60201c565b620001c3565b6200003f82826200004360201b60201c565b5050565b6200007181600080858152602001908152602001600020600001620000e660201b620012bf1790919060201c565b15620000e257620000876200011e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000116836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200012660201b60201c565b905092915050565b600033905090565b60006200013a8383620001a060201b60201c565b620001955782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200019a565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6128b380620001d36000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a9059cbb1161007c578063a9059cbb146106eb578063ca15c8731461074f578063d539139314610791578063d547741f146107af578063dd62ed3e146107fd578063f1127ed8146108755761014d565b806370a08231146104de57806379cc6790146105365780639010d07c1461058457806391d14854146105e657806395d89b411461064a578063a217fddf146106cd5761014d565b806327e235e31161011557806327e235e31461031d5780632f2ff15d14610375578063313ce567146103c357806336568abe146103e457806340c10f19146104325780636fcfff45146104805761014d565b806306fdde0314610152578063095ea7b3146101d557806318160ddd1461023957806323b872dd14610257578063248a9ca3146102db575b600080fd5b61015a6108ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610221600480360360408110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610923565b60405180821515815260200191505060405180910390f35b610241610a8c565b6040518082815260200191505060405180910390f35b6102c36004803603606081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a92565b60405180821515815260200191505060405180910390f35b610307600480360360208110156102f157600080fd5b8101908080359060200190929190505050610ada565b6040518082815260200191505060405180910390f35b61035f6004803603602081101561033357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af9565b6040518082815260200191505060405180910390f35b6103c16004803603604081101561038b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b11565b005b6103cb610b9a565b604051808260ff16815260200191505060405180910390f35b610430600480360360408110156103fa57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b9f565b005b61047e6004803603604081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c38565b005b6104c26004803603602081101561049657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4a565b604051808263ffffffff16815260200191505060405180910390f35b610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b6105826004803603604081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb6565b005b6105ba6004803603604081101561059a57600080fd5b810190808035906020019092919080359060200190929190505050611045565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610632600480360360408110156105fc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611076565b60405180821515815260200191505060405180910390f35b6106526110a7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610692578082015181840152602081019050610677565b50505050905090810190601f1680156106bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106d56110e0565b6040518082815260200191505060405180910390f35b6107376004803603604081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e7565b60405180821515815260200191505060405180910390f35b61077b6004803603602081101561076557600080fd5b8101908080359060200190929190505050611124565b6040518082815260200191505060405180910390f35b61079961114a565b6040518082815260200191505060405180910390f35b6107fb600480360360408110156107c557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061116e565b005b61085f6004803603604081101561081357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f7565b6040518082815260200191505060405180910390f35b6108c76004803603604081101561088b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919050505061127e565b604051808363ffffffff1681526020018281526020019250505060405180910390f35b6040518060400160405280600681526020017f44435444414f000000000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610976577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061099b565b610998836040518060600160405280602681526020016127cc602691396112ef565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600191505092915050565b60015481565b600080610ab7836040518060600160405280602681526020016127cc602691396112ef565b9050610ac385826113c6565b610ace8585836115c2565b60019150509392505050565b6000806000838152602001908152602001600020600201549050919050565b60026020528060005260406000206000915090505481565b610b3760008084815260200190815260200160002060020154610b3261188d565b611076565b610b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061259f602f913960400191505060405180910390fd5b610b968282611895565b5050565b601281565b610ba761188d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061284f602f913960400191505060405180910390fd5b610c348282611928565b5050565b610c627f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368633611076565b610cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d494e5445525f524f4c4520726571756972656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f44435444414f3a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600160008282540192505081905550610de0600083836119bb565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ee07f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368633611076565b610f52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d494e5445525f524f4c4520726571756972656400000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061274d6025913960400191505060405180910390fd5b61103683836113c6565b6110408383611c76565b505050565b600061106e82600080868152602001908152602001600020600001611e6d90919063ffffffff16565b905092915050565b600061109f82600080868152602001908152602001600020600001611e8790919063ffffffff16565b905092915050565b6040518060400160405280600481526020017f444354440000000000000000000000000000000000000000000000000000000081525081565b6000801b81565b60008061110c8360405180606001604052806027815260200161269a602791396112ef565b90506111193385836115c2565b600191505092915050565b6000611143600080848152602001908152602001600020600001611eb7565b9050919050565b7f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368681565b6111946000808481526020019081526020016000206002015461118f61188d565b611076565b6111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126fb6030913960400191505060405180910390fd5b6111f38282611928565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b60006112e7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ecc565b905092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111582906113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611381578082015181840152602081019050611366565b50505050905090810190601f1680156113ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b60003390506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156114a857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b156115bc5760006114d282856040518060600160405280603d815260200161265d603d9139611f3c565b905080600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806125f1603c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806126c1603a913960400191505060405180910390fd5b611730600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826040518060600160405280603681526020016127f260369139611f3c565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117d5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548260405180606001604052806030815260200161262d60309139611ff6565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36118888383836119bb565b505050565b600033905090565b6118bc816000808581526020019081526020016000206000016112bf90919063ffffffff16565b15611924576118c961188d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61194f816000808581526020019081526020016000206000016120b590919063ffffffff16565b156119b75761195c61188d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119f75750600081115b15611c7157600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b36576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611a9a576000611afe565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611b25828560405180606001604052806027815260200161282860279139611f3c565b9050611b328684836120e5565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c70576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611bd4576000611c38565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611c5f828560405180606001604052806026815260200161277260269139611ff6565b9050611c6c8584836120e5565b5050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061272b6022913960400191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125ce6023913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008282540392505081905550611e02836000846119bb565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000611e7c8360000183612322565b60001c905092915050565b6000611eaf836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6123a5565b905092915050565b6000611ec5826000016123c8565b9050919050565b6000611ed883836123a5565b611f31578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611f36565b600090505b92915050565b6000838311158290611fe9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fae578082015181840152602081019050611f93565b50505050905090810190601f168015611fdb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b60008083850190508481101583906120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561206e578082015181840152602081019050612053565b50505050905090810190601f16801561209b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b60006120dd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6123d9565b905092915050565b600061210943604051806060016040528060348152602001612798603491396124c1565b905060008363ffffffff1611801561219e57508063ffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001860363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561220f5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001860363ffffffff1663ffffffff1681526020019081526020016000206001018190555061231c565b60405180604001604052808263ffffffff16815260200183815250600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008563ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018301600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b50505050565b600081836000018054905011612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061257d6022913960400191505060405180910390fd5b82600001828154811061239257fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020549050600081146124b5576000600182039050600060018660000180549050039050600086600001828154811061242457fe5b906000526020600020015490508087600001848154811061244157fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061247957fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506124bb565b60009150505b92915050565b600064010000000083108290612572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561253757808201518184015260208101905061251c565b50505050905090810190601f1680156125645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508290509291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7444435444414f3a206275726e20616d6f756e7420657863656564732062616c616e6365444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773444354443a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365444354443a3a7472616e736665723a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6544435444414f3a206275726e2066726f6d20746865207a65726f206164647265737344435444414f3a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365444354443a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773444354443a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473444354443a3a617070726f76653a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365444354443a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200dac7ad7ffa8c222c299a8de4c01ea0ee51fdeb75bdbee3b82b4b2d857b8c7af64736f6c634300060c0033