60e060405234801562000010575f80fd5b50604051620011d6380380620011d68339810160408190526200003391620001d3565b8282825f620000438482620002dc565b506001620000528382620002dc565b5060ff81166080524660a0526200006862000078565b60c0525062000422945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051620000aa9190620003a8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000136575f80fd5b81516001600160401b038082111562000153576200015362000112565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e62000112565b81604052838152602092508660208588010111156200019b575f80fd5b5f91505b83821015620001be57858201830151818301840152908201906200019f565b5f602085830101528094505050505092915050565b5f805f60608486031215620001e6575f80fd5b83516001600160401b0380821115620001fd575f80fd5b6200020b8783880162000126565b9450602086015191508082111562000221575f80fd5b50620002308682870162000126565b925050604084015160ff8116811462000247575f80fd5b809150509250925092565b600181811c908216806200026757607f821691505b6020821081036200028657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002d757805f5260205f20601f840160051c81016020851015620002b35750805b601f840160051c820191505b81811015620002d4575f8155600101620002bf565b50505b505050565b81516001600160401b03811115620002f857620002f862000112565b620003108162000309845462000252565b846200028c565b602080601f83116001811462000346575f84156200032e5750858301515b5f19600386901b1c1916600185901b178555620003a0565b5f85815260208120601f198616915b82811015620003765788860151825594840194600190910190840162000355565b50858210156200039457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620003b78162000252565b60018281168015620003d25760018114620003e85762000416565b60ff198416875282151583028701945062000416565b875f526020805f205f5b858110156200040d5781548a820152908401908201620003f2565b50505082870194505b50929695505050505050565b60805160a05160c051610d896200044d5f395f6104cf01525f61049a01525f6101590152610d895ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610ae4565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610b0c565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610ae4565b6104f1565b005b6101336101b8366004610b45565b60036020525f908152604090205481565b6101336101d7366004610b45565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610ae4565b61050c565b61011a610211366004610ae4565b610516565b6101a8610224366004610b65565b610599565b610133610237366004610bd2565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610c03565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610c03565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c81565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c81565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610c03565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c81565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c94565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d69565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c81565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b5f602080835283518060208501525f5b81811015610a7e57858101830151858201604001528201610a62565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610adf575f80fd5b919050565b5f8060408385031215610af5575f80fd5b610afe83610abc565b946020939093013593505050565b5f805f60608486031215610b1e575f80fd5b610b2784610abc565b9250610b3560208501610abc565b9150604084013590509250925092565b5f60208284031215610b55575f80fd5b610b5e82610abc565b9392505050565b5f805f805f805f60e0888a031215610b7b575f80fd5b610b8488610abc565b9650610b9260208901610abc565b95506040880135945060608801359350608088013560ff81168114610bb5575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610be3575f80fd5b610bec83610abc565b9150610bfa60208401610abc565b90509250929050565b600181811c90821680610c1757607f821691505b602082108103610c4e577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c54565b5f8083545f60018260011c91506001831680610cb157607f831692505b60208084108203610ce9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015610cfd5760018114610d3057610d5b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d5b565b5f8a8152602090205f5b86811015610d535781548b820152908501908301610d3a565b505084890196505b509498975050505050505050565b8082018082111561035157610351610c5456fea164736f6c6343000818000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000d4c31437573746f6d45524332300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c31434532300000000000000000000000000000000000000000000000000000