60a060405234801561000f575f80fd5b506040516112a53803806112a583398101604081905261002e916102e5565b8383600361003c83826103f6565b50600461004982826103f6565b50505069d3c21bcecceda10000008211156100b95760405162461bcd60e51b815260206004820152602560248201527f496e697469616c20737570706c792065786365656473206d6178696d756d20736044820152647570706c7960d81b60648201526084015b60405180910390fd5b3360805260056100c985826103f6565b5060066100d684826103f6565b506100e181836100ea565b505050506104d5565b6001600160a01b0382166101135760405163ec442f0560e01b81525f60048201526024016100b0565b61011e5f8383610122565b5050565b6001600160a01b03831661014c578060025f82825461014191906104b0565b909155506101bc9050565b6001600160a01b0383165f908152602081905260409020548181101561019e5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166101d8576002805482900390556101f6565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161023b91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261026b575f80fd5b81516001600160401b0381111561028457610284610248565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b2576102b2610248565b6040528181528382016020018510156102c9575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f80608085870312156102f8575f80fd5b84516001600160401b0381111561030d575f80fd5b6103198782880161025c565b602087015190955090506001600160401b03811115610336575f80fd5b6103428782880161025c565b60408701516060880151919550935090506001600160a01b0381168114610367575f80fd5b939692955090935050565b600181811c9082168061038657607f821691505b6020821081036103a457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103f157805f5260205f20601f840160051c810160208510156103cf5750805b601f840160051c820191505b818110156103ee575f81556001016103db565b50505b505050565b81516001600160401b0381111561040f5761040f610248565b6104238161041d8454610372565b846103aa565b6020601f821160018114610455575f831561043e5750848201515b5f19600385901b1c1916600184901b1784556103ee565b5f84815260208120601f198516915b828110156104845787850151825560209485019460019092019101610464565b50848210156104a157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156104cf57634e487b7160e01b5f52601160045260245ffd5b92915050565b608051610daa6104fb5f395f818161017f0152818161032b01526105200152610daa5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c806340c10f191161006e57806340c10f191461013f57806370a08231146101525780638e68554b1461017a57806395d89b41146101b9578063a9059cbb146101c1578063dd62ed3e146101d4575f80fd5b806306fdde03146100b5578063095ea7b3146100d357806318160ddd146100f657806323b872dd146101085780632f71d0221461011b578063313ce56714610130575b5f80fd5b6100bd61020c565b6040516100ca91906109dc565b60405180910390f35b6100e66100e1366004610a10565b61029c565b60405190151581526020016100ca565b6002545b6040519081526020016100ca565b6100e6610116366004610a38565b6102b5565b61012e610129366004610b11565b610320565b005b604051601281526020016100ca565b61012e61014d366004610a10565b610515565b6100fa610160366004610b76565b6001600160a01b03165f9081526020819052604090205490565b6101a17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ca565b6100bd610608565b6100e66101cf366004610a10565b610617565b6100fa6101e2366004610b8f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606005805461021b90610bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461024790610bc0565b80156102925780601f1061026957610100808354040283529160200191610292565b820191905f5260205f20905b81548152906001019060200180831161027557829003601f168201915b5050505050905090565b5f336102a9818585610671565b60019150505b92915050565b5f806102c2858585610683565b9050801561031857836001600160a01b0316856001600160a01b03167f4cd95681b751c91f83e626435fb48875e7d8da94d9cd0e6133c5c5f8e16306f68560405161030f91815260200190565b60405180910390a35b949350505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039d5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f742074686520427261696e20636f6e747261637460448201526064015b60405180910390fd5b5f600580546103ab90610bc0565b80601f01602080910402602001604051908101604052809291908181526020018280546103d790610bc0565b80156104225780601f106103f957610100808354040283529160200191610422565b820191905f5260205f20905b81548152906001019060200180831161040557829003601f168201915b505050505090505f6006805461043790610bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461046390610bc0565b80156104ae5780601f10610485576101008083540402835291602001916104ae565b820191905f5260205f20905b81548152906001019060200180831161049157829003601f168201915b5050505050905083600590816104c49190610c43565b5060066104d18482610c43565b507f8fa70b8946217587fc701348a508a5a023a68ed13b9363dd0b72017ac2d532c1828583866040516105079493929190610cfe565b60405180910390a150505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461058d5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f742074686520427261696e20636f6e74726163746044820152606401610394565b69d3c21bcecceda1000000816105a260025490565b6105ac9190610d55565b11156105fa5760405162461bcd60e51b815260206004820152601f60248201527f4d696e74696e6720776f756c6420657863656564206d617820737570706c79006044820152606401610394565b61060482826106a6565b5050565b60606006805461021b90610bc0565b5f338161062485856106da565b9050801561031857846001600160a01b0316826001600160a01b03167f4cd95681b751c91f83e626435fb48875e7d8da94d9cd0e6133c5c5f8e16306f68660405161030f91815260200190565b61067e83838360016106e7565b505050565b5f336106908582856107ba565b61069b85858561082f565b506001949350505050565b6001600160a01b0382166106cf5760405163ec442f0560e01b81525f6004820152602401610394565b6106045f8383610888565b5f336102a981858561082f565b6001600160a01b0384166107105760405163e602df0560e01b81525f6004820152602401610394565b6001600160a01b03831661073957604051634a1406b160e11b81525f6004820152602401610394565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156107b457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107ab91815260200190565b60405180910390a35b50505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146107b4578181101561082157604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610394565b6107b484848484035f6106e7565b6001600160a01b03831661085857604051634b637e8f60e11b81525f6004820152602401610394565b6001600160a01b0382166108815760405163ec442f0560e01b81525f6004820152602401610394565b61067e8383835b6001600160a01b0383166108b2578060025f8282546108a79190610d55565b909155506109229050565b6001600160a01b0383165f90815260208190526040902054818110156109045760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610394565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661093e5760028054829003905561095c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109a191815260200190565b60405180910390a3505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109ee60208301846109ae565b9392505050565b80356001600160a01b0381168114610a0b575f80fd5b919050565b5f8060408385031215610a21575f80fd5b610a2a836109f5565b946020939093013593505050565b5f805f60608486031215610a4a575f80fd5b610a53846109f5565b9250610a61602085016109f5565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610a95575f80fd5b813567ffffffffffffffff811115610aaf57610aaf610a72565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ade57610ade610a72565b604052818152838201602001851015610af5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215610b22575f80fd5b823567ffffffffffffffff811115610b38575f80fd5b610b4485828601610a86565b925050602083013567ffffffffffffffff811115610b60575f80fd5b610b6c85828601610a86565b9150509250929050565b5f60208284031215610b86575f80fd5b6109ee826109f5565b5f8060408385031215610ba0575f80fd5b610ba9836109f5565b9150610bb7602084016109f5565b90509250929050565b600181811c90821680610bd457607f821691505b602082108103610bf257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561067e57805f5260205f20601f840160051c81016020851015610c1d5750805b601f840160051c820191505b81811015610c3c575f8155600101610c29565b5050505050565b815167ffffffffffffffff811115610c5d57610c5d610a72565b610c7181610c6b8454610bc0565b84610bf8565b6020601f821160018114610ca3575f8315610c8c5750848201515b5f19600385901b1c1916600184901b178455610c3c565b5f84815260208120601f198516915b82811015610cd25787850151825560209485019460019092019101610cb2565b5084821015610cef57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d1060808301876109ae565b8281036020840152610d2281876109ae565b90508281036040840152610d3681866109ae565b90508281036060840152610d4a81856109ae565b979650505050505050565b808201808211156102af57634e487b7160e01b5f52601160045260245ffdfea264697066735822122032862142c361d9dbf19dc8d28df1622be2a5292a85c22733f297196295de9bc764736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000d049acc42d5edda8692aabf22aa63703727d4cf7000000000000000000000000000000000000000000000000000000000000000e425241494e20544f4b454e20233200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034223320000000000000000000000000000000000000000000000000000000000