600f80546001600160a01b031916736699a1f89892c0aaed6610e9eb8996d5006f4ae1179055610100604052602e60a0818152906200497860c0396016906200004990826200023f565b503480156200005757600080fd5b50604051620049a6380380620049a68339810160408190526200007a9162000324565b604051806040016040528060058152602001644e6f756e7360d81b815250604051806040016040528060048152602001632727aaa760e11b815250620000cf620000c96200014660201b60201c565b6200014a565b6001620000dd83826200023f565b506002620000ec82826200023f565b5050601080546001600160a01b03199081166001600160a01b0398891617909155601180548216968816969096179095555060128054851693861693909317909255601380549093169084161790915516608052620003a4565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001c557607f821691505b602082108103620001e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023a57600081815260208120601f850160051c81016020861015620002155750805b601f850160051c820191505b81811015620002365782815560010162000221565b5050505b505050565b81516001600160401b038111156200025b576200025b6200019a565b62000273816200026c8454620001b0565b84620001ec565b602080601f831160018114620002ab5760008415620002925750858301515b600019600386901b1c1916600185901b17855562000236565b600085815260208120601f198616915b82811015620002dc57888601518255948401946001909101908401620002bb565b5085821015620002fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03811681146200032157600080fd5b50565b600080600080600060a086880312156200033d57600080fd5b85516200034a816200030b565b60208701519095506200035d816200030b565b604087015190945062000370816200030b565b606087015190935062000383816200030b565b608087015190925062000396816200030b565b809150509295509295909350565b6080516145b1620003c76000396000818161069a015261241b01526145b16000f3fe608060405234801561001057600080fd5b50600436106103625760003560e01c80636fcfff45116101c8578063c1b8e4e111610104578063e8a3d485116100a2578063f0503e801161007c578063f0503e80146107d0578063f1127ed81461088b578063f2fde38b146108fd578063fca3b5aa1461091057600080fd5b8063e8a3d485146107a2578063e9580e91146107aa578063e985e9c5146107bd57600080fd5b8063c8fc0c23116100de578063c8fc0c231461072e578063d50b31eb14610755578063df8d7bca14610768578063e7a324dc1461077b57600080fd5b8063c1b8e4e1146106e2578063c3cda52014610708578063c87b56dd1461071b57600080fd5b80638da5cb5b11610171578063b4b5ea571161014b578063b4b5ea5714610682578063b50cbd9f14610695578063b88d4fde146106bc578063baedc1c4146106cf57600080fd5b80638da5cb5b1461065657806395d89b4114610667578063a22cb4651461066f57600080fd5b806376daebe1116101a257806376daebe1146105fe578063782d6fe1146106065780637ecebe001461063657600080fd5b80636fcfff45146105a857806370a08231146105e3578063715018a6146105f657600080fd5b80632f745c59116102a2578063587cde1e116102405780635f295a671161021a5780635f295a67146105675780636352211e1461056f578063655932a414610582578063684931ed1461059557600080fd5b8063587cde1e1461052e5780635ac1e3bb146105415780635c19a95c1461055457600080fd5b806341b5d0de1161027c57806341b5d0de146104ed57806342842e0e146104f557806342966c68146105085780634f6ccce71461051b57600080fd5b80632f745c59146104ad578063303e74df146104c0578063313ce567146104d357600080fd5b8063095ea7b31161030f5780631e688e10116102e95780631e688e101461043b5780631ede02de1461046057806320606b701461047357806323b872dd1461049a57600080fd5b8063095ea7b31461040a5780631249c58b1461041d57806318160ddd1461043357600080fd5b806306fdde031161034057806306fdde03146103b757806307546172146103cc578063081812fc146103f757600080fd5b806301b9a3971461036757806301ffc9a71461037c578063058df0ab146103a4575b600080fd5b61037a610375366004613abf565b610923565b005b61038f61038a366004613b0a565b610a5b565b60405190151581526020015b60405180910390f35b61037a6103b2366004613abf565b610ab7565b6103bf610b77565b60405161039b9190613b7f565b6011546103df906001600160a01b031681565b6040516001600160a01b03909116815260200161039b565b6103df610405366004613b92565b610c09565b61037a610418366004613bab565b610caf565b610425610de0565b60405190815260200161039b565b600954610425565b60135461038f9074010000000000000000000000000000000000000000900460ff1681565b600f546103df906001600160a01b031681565b6104257f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61037a6104a8366004613bd7565b610efb565b6104256104bb366004613bab565b610f82565b6012546103df906001600160a01b031681565b6104db600081565b60405160ff909116815260200161039b565b61037a61102a565b61037a610503366004613bd7565b61115b565b61037a610516366004613b92565b611176565b610425610529366004613b92565b611207565b6103df61053c366004613abf565b6112ab565b6103bf61054f366004613b92565b6112dd565b61037a610562366004613abf565b611445565b61037a611463565b6103df61057d366004613b92565b611596565b6010546103df906001600160a01b031681565b6013546103df906001600160a01b031681565b6105ce6105b6366004613abf565b600d6020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161039b565b6104256105f1366004613abf565b611621565b61037a6116bb565b61037a611721565b610619610614366004613bab565b611850565b6040516bffffffffffffffffffffffff909116815260200161039b565b610425610644366004613abf565b600e6020526000908152604090205481565b6000546001600160a01b03166103df565b6103bf611b02565b61037a61067d366004613c18565b611b11565b610619610690366004613abf565b611bf3565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b61037a6106ca366004613d1c565b611c76565b61037a6106dd366004613d9c565b611d04565b60135461038f907501000000000000000000000000000000000000000000900460ff1681565b61037a610716366004613de5565b611d6e565b6103bf610729366004613b92565b6120a0565b60135461038f90760100000000000000000000000000000000000000000000900460ff1681565b61037a610763366004613abf565b6121c7565b61037a610776366004613abf565b6122f4565b6104257fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6103bf612388565b6106196107b8366004613abf565b6123b0565b61038f6107cb366004613e47565b6123dc565b6108526107de366004613b92565b60146020526000908152604090205465ffffffffffff80821691660100000000000081048216916c0100000000000000000000000082048116917201000000000000000000000000000000000000810482169178010000000000000000000000000000000000000000000000009091041685565b6040805165ffffffffffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161039b565b6108d4610899366004613e75565b600c60209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6040805163ffffffff90931683526bffffffffffffffffffffffff90911660208301520161039b565b61037a61090b366004613abf565b6124ca565b61037a61091e366004613abf565b6125a9565b6000546001600160a01b031633146109825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6013547501000000000000000000000000000000000000000000900460ff16156109ee5760405162461bcd60e51b815260206004820152601460248201527f44657363726970746f72206973206c6f636b65640000000000000000000000006044820152606401610979565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f6e66ab22238a5471005895947c8f57db923c2a9c9c73180eff80864c21295c1b906020015b60405180910390a150565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610ab15750610ab1826126d4565b92915050565b6010546001600160a01b03163314610b115760405162461bcd60e51b815260206004820152601e60248201527f53656e646572206973206e6f7420746865206e6f756e646572732044414f00006044820152606401610979565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f3a0b923617f180781f3530e464cb4a8b9393e69f47607e4eb28d61cd87ce968c90602001610a50565b606060018054610b8690613eac565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb290613eac565b8015610bff5780601f10610bd457610100808354040283529160200191610bff565b820191906000526020600020905b815481529060010190602001808311610be257829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610c935760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610979565b506000908152600560205260409020546001600160a01b031690565b6000610cba82611596565b9050806001600160a01b0316836001600160a01b031603610d435760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610979565b336001600160a01b0382161480610d5f5750610d5f81336123dc565b610dd15760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610979565b610ddb83836127b7565b505050565b6011546000906001600160a01b03163314610e3d5760405162461bcd60e51b815260206004820152601860248201527f53656e646572206973206e6f7420746865206d696e74657200000000000000006044820152606401610979565b61044760155411158015610e5d5750600a601554610e5b9190613f2e565b155b15610e8d5760105460158054610e8b926001600160a01b0316916000610e8283613f71565b9190505561283d565b505b61088e60155411158015610eaf5750600a601554610eab9190613f2e565b6001145b15610ed657600f5460158054610ed4926001600160a01b0316916000610e8283613f71565b505b60115460158054610ef6926001600160a01b0316916000610e8283613f71565b905090565b610f053382612ace565b610f775760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610979565b610ddb838383612bb6565b6000610f8d83611621565b82106110015760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610979565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000546001600160a01b031633146110845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b6013547501000000000000000000000000000000000000000000900460ff16156110f05760405162461bcd60e51b815260206004820152601460248201527f44657363726970746f72206973206c6f636b65640000000000000000000000006044820152606401610979565b601380547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f593e31e306c198bef259d839f7c6dc4ff7fc10c07f76fab193a210b03704105f90600090a1565b610ddb83838360405180602001604052806000815250611c76565b6011546001600160a01b031633146111d05760405162461bcd60e51b815260206004820152601860248201527f53656e646572206973206e6f7420746865206d696e74657200000000000000006044820152606401610979565b6111d981612da6565b60405181907f806be94a2ac8b92d74e99aa8add5a8e54528a01ec914a9e00d201a6480ed986390600090a250565b600061121260095490565b82106112865760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610979565b6009828154811061129957611299613fa9565b90600052602060002001549050919050565b6001600160a01b038082166000908152600b602052604081205490911680156112d457806112d6565b825b9392505050565b6000818152600360205260409020546060906001600160a01b031661136a5760405162461bcd60e51b815260206004820152602b60248201527f4e6f756e73546f6b656e3a2055524920717565727920666f72206e6f6e65786960448201527f7374656e7420746f6b656e0000000000000000000000000000000000000000006064820152608401610979565b6012546000838152601460205260409081902090517f638ac27000000000000000000000000000000000000000000000000000000000815260048101859052905465ffffffffffff8082166024840152603082901c81166044840152606082901c81166064840152609082901c8116608484015260c09190911c1660a48201526001600160a01b039091169063638ac2709060c4015b600060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab19190810190613fd8565b6001600160a01b0381166114565750335b6114603382612e65565b50565b6000546001600160a01b031633146114bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b601354760100000000000000000000000000000000000000000000900460ff161561152a5760405162461bcd60e51b815260206004820152601060248201527f536565646572206973206c6f636b6564000000000000000000000000000000006044820152606401610979565b601380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556040517ff59561f22794afcfb1e6be5c4733f5449fd167252a96b74bb06d341fb0dac7ed90600090a1565b6000818152600360205260408120546001600160a01b031680610ab15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610979565b60006001600160a01b03821661169f5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610979565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146117155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b61171f6000612efd565b565b6000546001600160a01b0316331461177b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b60135474010000000000000000000000000000000000000000900460ff16156117e65760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206973206c6f636b6564000000000000000000000000000000006044820152606401610979565b601380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f192417b3f16b1ce69e0c59b0376549666650245ffc05e4b2569089dda8589b6690600090a1565b60004382106118c75760405162461bcd60e51b815260206004820152603760248201527f455243373231436865636b706f696e7461626c653a3a6765745072696f72566f60448201527f7465733a206e6f74207965742064657465726d696e65640000000000000000006064820152608401610979565b6001600160a01b0383166000908152600d602052604081205463ffffffff16908190036118f8576000915050610ab1565b6001600160a01b0384166000908152600c60205260408120849161191d60018561404f565b63ffffffff90811682526020820192909252604001600020541611611996576001600160a01b0384166000908152600c602052604081209061196060018461404f565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff169150610ab19050565b6001600160a01b0384166000908152600c6020908152604080832083805290915290205463ffffffff168310156119d1576000915050610ab1565b6000806119df60018461404f565b90505b8163ffffffff168163ffffffff161115611ab75760006002611a04848461404f565b611a0e9190614074565b611a18908361404f565b6001600160a01b0388166000908152600c6020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152919250879003611a8b57602001519450610ab19350505050565b805163ffffffff16871115611aa257819350611ab0565b611aad60018361404f565b92505b50506119e2565b506001600160a01b0385166000908152600c6020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b606060028054610b8690613eac565b336001600160a01b03831603611b695760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610979565b3360008181526006602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b0381166000908152600d602052604081205463ffffffff1680611c1e5760006112d6565b6001600160a01b0383166000908152600c6020526040812090611c4260018461404f565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff169392505050565b611c803383612ace565b611cf25760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610979565b611cfe84848484612f65565b50505050565b6000546001600160a01b03163314611d5e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b6016611d6a82826140dd565b5050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611d99610b77565b80519060200120611da74690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401909252815191909301207f1901000000000000000000000000000000000000000000000000000000000000610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611eee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f775760405162461bcd60e51b815260206004820152603660248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a20696e76616c6964207369676e6174757265000000000000000000006064820152608401610979565b6001600160a01b0381166000908152600e60205260408120805491611f9b83613f71565b9190505589146120135760405162461bcd60e51b815260206004820152603260248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a20696e76616c6964206e6f6e636500000000000000000000000000006064820152608401610979565b874211156120895760405162461bcd60e51b815260206004820152603660248201527f455243373231436865636b706f696e7461626c653a3a64656c6567617465427960448201527f5369673a207369676e61747572652065787069726564000000000000000000006064820152608401610979565b612093818b612e65565b505050505b505050505050565b6000818152600360205260409020546060906001600160a01b031661212d5760405162461bcd60e51b815260206004820152602b60248201527f4e6f756e73546f6b656e3a2055524920717565727920666f72206e6f6e65786960448201527f7374656e7420746f6b656e0000000000000000000000000000000000000000006064820152608401610979565b6012546000838152601460205260409081902090517f3cfdafd300000000000000000000000000000000000000000000000000000000815260048101859052905465ffffffffffff8082166024840152603082901c81166044840152606082901c81166064840152609082901c8116608484015260c09190911c1660a48201526001600160a01b0390911690633cfdafd39060c401611400565b6000546001600160a01b031633146122215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b601354760100000000000000000000000000000000000000000000900460ff161561228e5760405162461bcd60e51b815260206004820152601060248201527f536565646572206973206c6f636b6564000000000000000000000000000000006044820152606401610979565b601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fb3025222d01ce9a26c7f9d52bc3bfd0352366bd90a793c273fbfe1c81e0e288e90602001610a50565b6010546001600160a01b0316331461234e5760405162461bcd60e51b815260206004820152601e60248201527f53656e646572206973206e6f7420746865206e6f756e646572732044414f00006044820152606401610979565b600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060601660405160200161239c91906141d9565b604051602081830303815290604052905090565b6000610ab16123be83611621565b6040518060600160405280603d8152602001614508603d9139612fee565b6040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600091818416917f0000000000000000000000000000000000000000000000000000000000000000169063c455279190602401602060405180830381865afa158015612462573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612486919061429c565b6001600160a01b03160361249c57506001610ab1565b6001600160a01b0380841660009081526006602090815260408083209386168352929052205460ff166112d6565b6000546001600160a01b031633146125245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b6001600160a01b0381166125a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610979565b61146081612efd565b6000546001600160a01b031633146126035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610979565b60135474010000000000000000000000000000000000000000900460ff161561266e5760405162461bcd60e51b815260206004820152601060248201527f4d696e746572206973206c6f636b6564000000000000000000000000000000006044820152606401610979565b601180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a90602001610a50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061276757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610ab157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610ab1565b600081815260056020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061280482611596565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6013546012546040517f422e2e99000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0391821660248201526000928392169063422e2e999060440160a060405180830381865afa1580156128ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d191906142d4565b60008481526014602090815260408083208451815486850151878501516060808a015160809a8b015165ffffffffffff9687167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009096169590951766010000000000009487168502177fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c0100000000000000000000000093871684027fffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff161772010000000000000000000000000000000000009187168202177fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff81167801000000000000000000000000000000000000000000000000968816870290811798899055895160a081018b52918816908816178152938704861698840198909852908504841695820195909552948304821693850193909352919004169281019290925254909150612a4d906001600160a01b03168585613026565b827f1106ee9d020bfbb5ee34cf5535a5fbf024a011bd130078088cbf124ab309247882604051612abe9190815165ffffffffffff9081168252602080840151821690830152604080840151821690830152606080840151821690830152608092830151169181019190915260a00190565b60405180910390a2509092915050565b6000818152600360205260408120546001600160a01b0316612b585760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610979565b6000612b6383611596565b9050806001600160a01b0316846001600160a01b03161480612b9e5750836001600160a01b0316612b9384610c09565b6001600160a01b0316145b80612bae5750612bae81856123dc565b949350505050565b826001600160a01b0316612bc982611596565b6001600160a01b031614612c455760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610979565b6001600160a01b038216612cc05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610979565b612ccb8383836131d4565b612cd66000826127b7565b6001600160a01b0383166000908152600460205260408120805460019290612cff908490614362565b90915550506001600160a01b0382166000908152600460205260408120805460019290612d2d908490614379565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000612db182611596565b9050612dbf816000846131d4565b612dca6000836127b7565b6001600160a01b0381166000908152600460205260408120805460019290612df3908490614362565b909155505060008281526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000612e70836112ab565b6001600160a01b038481166000818152600b602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016888616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46000612ef0846123b0565b9050611cfe8284836131f7565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612f70848484612bb6565b612f7c848484846133b4565b611cfe5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610979565b6000816c01000000000000000000000000841061301e5760405162461bcd60e51b81526004016109799190613b7f565b509192915050565b6001600160a01b03821661307c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610979565b6000818152600360205260409020546001600160a01b0316156130e15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610979565b6130ed600083836131d4565b6001600160a01b0382166000908152600460205260408120805460019290613116908490614379565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03868116919091179091559051839291861691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a480826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6131df838383613555565b610ddb6131eb846112ab565b6131f4846112ab565b60015b816001600160a01b0316836001600160a01b03161415801561322757506000816bffffffffffffffffffffffff16115b15610ddb576001600160a01b038316156132f2576001600160a01b0383166000908152600d602052604081205463ffffffff1690816132675760006132b9565b6001600160a01b0385166000908152600c602052604081209061328b60018561404f565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006132e082856040518060600160405280603781526020016145456037913961360d565b90506132ee86848484613659565b5050505b6001600160a01b03821615610ddb576001600160a01b0382166000908152600d602052604081205463ffffffff16908161332d57600061337f565b6001600160a01b0384166000908152600c602052604081209061335160018561404f565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006133a6828560405180606001604052806036815260200161448e6036913961389b565b905061209885848484613659565b60006001600160a01b0384163b1561354a576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290613411903390899088908890600401614391565b6020604051808303816000875af192505050801561344c575060408051601f3d908101601f19168201909252613449918101906143cd565b60015b6134ff573d80801561347a576040519150601f19603f3d011682016040523d82523d6000602084013e61347f565b606091505b5080516000036134f75760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610979565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050612bae565b506001949350505050565b6001600160a01b0383166135b0576135ab81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b6135d3565b816001600160a01b0316836001600160a01b0316146135d3576135d383826138f2565b6001600160a01b0382166135ea57610ddb8161398f565b826001600160a01b0316826001600160a01b031614610ddb57610ddb8282613a3e565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff161115829061364e5760405162461bcd60e51b81526004016109799190613b7f565b50612bae83856143ea565b600061367d436040518060800160405280604481526020016144c460449139613a82565b905060008463ffffffff161180156136d757506001600160a01b0385166000908152600c6020526040812063ffffffff8316916136bb60018861404f565b63ffffffff908116825260208201929092526040016000205416145b15613760576001600160a01b0385166000908152600c60205260408120839161370160018861404f565b63ffffffff168152602081019190915260400160002080546bffffffffffffffffffffffff92909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff909216919091179055613841565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff80861660208085019182526001600160a01b038b166000908152600c82528681208b8616825290915294909420925183549451909116640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169116179190911790556137f584600161440f565b6001600160a01b0386166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911790555b604080516bffffffffffffffffffffffff8086168252841660208201526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000806138a88486614437565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906138e95760405162461bcd60e51b81526004016109799190613b7f565b50949350505050565b600060016138ff84611621565b6139099190614362565b60008381526008602052604090205490915080821461395c576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906139a190600190614362565b6000838152600a6020526040812054600980549394509092849081106139c9576139c9613fa9565b9060005260206000200154905080600983815481106139ea576139ea613fa9565b6000918252602080832090910192909255828152600a90915260408082208490558582528120556009805480613a2257613a2261445e565b6001900381819060005260206000200160009055905550505050565b6000613a4983611621565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b600081640100000000841061301e5760405162461bcd60e51b81526004016109799190613b7f565b6001600160a01b038116811461146057600080fd5b600060208284031215613ad157600080fd5b81356112d681613aaa565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461146057600080fd5b600060208284031215613b1c57600080fd5b81356112d681613adc565b60005b83811015613b42578181015183820152602001613b2a565b83811115611cfe5750506000910152565b60008151808452613b6b816020860160208601613b27565b601f01601f19169290920160200192915050565b6020815260006112d66020830184613b53565b600060208284031215613ba457600080fd5b5035919050565b60008060408385031215613bbe57600080fd5b8235613bc981613aaa565b946020939093013593505050565b600080600060608486031215613bec57600080fd5b8335613bf781613aaa565b92506020840135613c0781613aaa565b929592945050506040919091013590565b60008060408385031215613c2b57600080fd5b8235613c3681613aaa565b915060208301358015158114613c4b57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613cae57613cae613c56565b604052919050565b600067ffffffffffffffff821115613cd057613cd0613c56565b50601f01601f191660200190565b6000613cf1613cec84613cb6565b613c85565b9050828152838383011115613d0557600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215613d3257600080fd5b8435613d3d81613aaa565b93506020850135613d4d81613aaa565b925060408501359150606085013567ffffffffffffffff811115613d7057600080fd5b8501601f81018713613d8157600080fd5b613d9087823560208401613cde565b91505092959194509250565b600060208284031215613dae57600080fd5b813567ffffffffffffffff811115613dc557600080fd5b8201601f81018413613dd657600080fd5b612bae84823560208401613cde565b60008060008060008060c08789031215613dfe57600080fd5b8635613e0981613aaa565b95506020870135945060408701359350606087013560ff81168114613e2d57600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215613e5a57600080fd5b8235613e6581613aaa565b91506020830135613c4b81613aaa565b60008060408385031215613e8857600080fd5b8235613e9381613aaa565b9150602083013563ffffffff81168114613c4b57600080fd5b600181811c90821680613ec057607f821691505b602082108103613ef9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613f3d57613f3d613eff565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fa257613fa2613f42565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613fea57600080fd5b815167ffffffffffffffff81111561400157600080fd5b8201601f8101841361401257600080fd5b8051614020613cec82613cb6565b81815285602083850101111561403557600080fd5b614046826020830160208601613b27565b95945050505050565b600063ffffffff8381169083168181101561406c5761406c613f42565b039392505050565b600063ffffffff8084168061408b5761408b613eff565b92169190910492915050565b601f821115610ddb57600081815260208120601f850160051c810160208610156140be5750805b601f850160051c820191505b81811015612098578281556001016140ca565b815167ffffffffffffffff8111156140f7576140f7613c56565b61410b816141058454613eac565b84614097565b602080601f83116001811461415e57600084156141285750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612098565b600085815260208120601f198616915b8281101561418d5788860151825594840194600190910190840161416e565b50858210156141c957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f697066733a2f2f000000000000000000000000000000000000000000000000008152600060076000845461420d81613eac565b60018281168015614225576001811461425c5761428f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841686890152858315158402890101945061428f565b8860005260208060002060005b858110156142845781548b82018a0152908401908201614269565b505050858389010194505b5092979650505050505050565b6000602082840312156142ae57600080fd5b81516112d681613aaa565b805165ffffffffffff811681146142cf57600080fd5b919050565b600060a082840312156142e657600080fd5b60405160a0810181811067ffffffffffffffff8211171561430957614309613c56565b604052614315836142b9565b8152614323602084016142b9565b6020820152614334604084016142b9565b6040820152614345606084016142b9565b6060820152614356608084016142b9565b60808201529392505050565b60008282101561437457614374613f42565b500390565b6000821982111561438c5761438c613f42565b500190565b60006001600160a01b038087168352808616602084015250836040830152608060608301526143c36080830184613b53565b9695505050505050565b6000602082840312156143df57600080fd5b81516112d681613adc565b60006bffffffffffffffffffffffff8381169083168181101561406c5761406c613f42565b600063ffffffff80831681851680830382111561442e5761442e613f42565b01949350505050565b60006bffffffffffffffffffffffff80831681851680830382111561442e5761442e613f42565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe455243373231436865636b706f696e7461626c653a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773455243373231436865636b706f696e7461626c653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473455243373231436865636b706f696e7461626c653a3a766f746573546f44656c65676174653a20616d6f756e7420657863656564732039362062697473455243373231436865636b706f696e7461626c653a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773a264697066735822122018f24e4cf6cbb38f04a2db4d26b2e9e15bf761c733038ea3178bdb08b22bf64e64736f6c634300080f0033516d565133647442594c62314d5541715966574365676b52674c5a57365958374b4a3464796d56463865417a7170000000000000000000000000d131a948d773adbc052a979ed079e50fd3563c9e000000000000000000000000faa4bbe589a39745833e2bece8d401b6195a07b100000000000000000000000079db17727ad213e360de893d9075ae5f75d4f89c000000000000000000000000a988bd84cfcffe2b4f49333b1300055e381851e6000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1