60806040523480156200001157600080fd5b50604080518082018252601881527f50697a7a6173776170204c6f7474657279205469636b6574000000000000000060208083019190915282518084019093526007835266141a5e9e98531560ca1b9083015290620000776301ffc9a760e01b6200013c565b81516200008c9060069060208501906200019b565b508051620000a29060079060208401906200019b565b50620000b56380ac58cd60e01b6200013c565b620000c7635b5e139f60e01b6200013c565b620000d963780e9d6360e01b6200013c565b5060009050620000e862000197565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200026e565b6001600160e01b03198082161415620001725760405162461bcd60e51b8152600401620001699062000237565b60405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001de57805160ff19168380011785556200020e565b828001600101855582156200020e579182015b828111156200020e578251825591602001919060010190620001f1565b506200021c92915062000220565b5090565b5b808211156200021c576000815560010162000221565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b612528806200027e6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636352211e1161010f578063a22cb465116100a2578063c87b56dd11610071578063c87b56dd14610420578063e985e9c514610433578063f2fde38b14610446578063f7a0c0ca14610459576101f0565b8063a22cb465146103d4578063ae169a50146103e7578063b88d4fde146103fa578063c13f690b1461040d576101f0565b8063715018a6116100de578063715018a6146103a957806374310355146103b15780638da5cb5b146103c457806395d89b41146103cc576101f0565b80636352211e1461035b5780636575243f1461036e5780636c0360eb1461038e57806370a0823114610396576101f0565b80632f745c591161018757806342966c681161015657806342966c68146103025780634f6ccce7146103155780635c362233146103285780635f8e26a71461033b576101f0565b80632f745c59146102b657806336dbd2f9146102c957806337391c00146102dc57806342842e0e146102ef576101f0565b8063095ea7b3116101c3578063095ea7b31461027357806318160ddd146102885780631bf1e00f1461029057806323b872dd146102a3576101f0565b806301ffc9a7146101f557806306fdde031461021e578063081812fc1461023357806308c7662514610253575b600080fd5b610208610203366004611d62565b61046c565b6040516102159190611ecf565b60405180910390f35b61022661048f565b6040516102159190611eda565b610246610241366004611d9a565b610525565b6040516102159190611e4a565b610266610261366004611d9a565b610571565b60405161021591906123c5565b610286610281366004611ca8565b610583565b005b61026661061b565b61026661029e366004611d9a565b61062c565b6102866102b1366004611ae0565b61063e565b6102666102c4366004611ca8565b610676565b6102086102d7366004611d9a565b6106a1565b6102666102ea366004611bd6565b6106b6565b6102866102fd366004611ae0565b61075d565b610286610310366004611d9a565b610778565b610266610323366004611d9a565b6107c3565b610208610336366004611d9a565b6107d9565b61034e610349366004611d9a565b6107ee565b6040516102159190611e9b565b610246610369366004611d9a565b610852565b61038161037c366004611db2565b61087a565b60405161021591906123ce565b6102266108b0565b6102666103a4366004611a91565b610911565b61028661095a565b6102866103bf366004611cd2565b6109e3565b610246610a75565b610226610a84565b6102866103e2366004611c6d565b610ae5565b6102866103f5366004611d9a565b610bb3565b610286610408366004611b20565b610c0d565b61026661041b366004611d9a565b610c4c565b61022661042e366004611d9a565b610c5e565b610208610441366004611aac565b610da4565b610286610454366004611a91565b610dd2565b610266610467366004611d9a565b610e93565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561051b5780601f106104f05761010080835404028352916020019161051b565b820191906000526020600020905b8154815290600101906020018083116104fe57829003601f168201915b5050505050905090565b600061053082610ea5565b6105555760405162461bcd60e51b815260040161054c906121e3565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600e6020526000908152604090205481565b600061058e82610852565b9050806001600160a01b0316836001600160a01b031614156105c25760405162461bcd60e51b815260040161054c906122fc565b806001600160a01b03166105d4610eb2565b6001600160a01b031614806105f057506105f081610441610eb2565b61060c5760405162461bcd60e51b815260040161054c906120c5565b6106168383610eb6565b505050565b60006106276002610f24565b905090565b6000908152600e602052604090205490565b61064f610649610eb2565b82610f2f565b61066b5760405162461bcd60e51b815260040161054c9061233d565b610616838383610fac565b6001600160a01b038216600090815260016020526040812061069890836110ba565b90505b92915050565b6000908152600f602052604090205460ff1690565b60006106c0610eb2565b6001600160a01b03166106d1610a75565b6001600160a01b0316146106f75760405162461bcd60e51b815260040161054c9061222f565b610701600b6110c6565b600061070d600b6110cf565b905061071986826110d3565b6000818152600c6020526040902061073390866004611946565b506000818152600d60209081526040808320879055600e909152902083905590505b949350505050565b61061683838360405180602001604052806000815250610c0d565b610780610eb2565b6001600160a01b0316610791610a75565b6001600160a01b0316146107b75760405162461bcd60e51b815260040161054c9061222f565b6107c081611197565b50565b6000806107d1600284611264565b509392505050565b600f6020526000908152604090205460ff1681565b6107f66119d9565b6000828152600c6020526040808220815160808101928390529290916004918390855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610819575094979650505050505050565b600061069b826040518060600160405280602981526020016124ca6029913960029190611280565b600c602052816000526040600020816004811061089357fe5b602081049091015460ff601f9092166101000a9004169150829050565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561051b5780601f106104f05761010080835404028352916020019161051b565b60006001600160a01b0382166109395760405162461bcd60e51b815260040161054c90612122565b6001600160a01b038216600090815260016020526040902061069b90610f24565b610962610eb2565b6001600160a01b0316610973610a75565b6001600160a01b0316146109995760405162461bcd60e51b815260040161054c9061222f565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b6109eb610eb2565b6001600160a01b03166109fc610a75565b6001600160a01b031614610a225760405162461bcd60e51b815260040161054c9061222f565b60005b8151811015610a71576001600f6000848481518110610a4057fe5b6020908102919091018101518252810191909152604001600020805460ff1916911515919091179055600101610a25565b5050565b600a546001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561051b5780601f106104f05761010080835404028352916020019161051b565b610aed610eb2565b6001600160a01b0316826001600160a01b03161415610b1e5760405162461bcd60e51b815260040161054c90612042565b8060056000610b2b610eb2565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610b6f610eb2565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ba79190611ecf565b60405180910390a35050565b610bbb610eb2565b6001600160a01b0316610bcc610a75565b6001600160a01b031614610bf25760405162461bcd60e51b815260040161054c9061222f565b6000908152600f60205260409020805460ff19166001179055565b610c1e610c18610eb2565b83610f2f565b610c3a5760405162461bcd60e51b815260040161054c9061233d565b610c4684848484611297565b50505050565b600d6020526000908152604090205481565b6060610c6982610ea5565b610c855760405162461bcd60e51b815260040161054c906122ad565b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d1a5780601f10610cef57610100808354040283529160200191610d1a565b820191906000526020600020905b815481529060010190602001808311610cfd57829003601f168201915b505050505090506060610d2b6108b0565b9050805160001415610d3f5750905061048a565b815115610d71578082604051602001610d59929190611e1b565b6040516020818303038152906040529250505061048a565b80610d7b856112ca565b604051602001610d8c929190611e1b565b60405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610dda610eb2565b6001600160a01b0316610deb610a75565b6001600160a01b031614610e115760405162461bcd60e51b815260040161054c9061222f565b6001600160a01b038116610e375760405162461bcd60e51b815260040161054c90611f81565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000908152600d602052604090205490565b600061069b6002836113a5565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610eeb82610852565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061069b826110cf565b6000610f3a82610ea5565b610f565760405162461bcd60e51b815260040161054c90612079565b6000610f6183610852565b9050806001600160a01b0316846001600160a01b03161480610f9c5750836001600160a01b0316610f9184610525565b6001600160a01b0316145b8061075557506107558185610da4565b826001600160a01b0316610fbf82610852565b6001600160a01b031614610fe55760405162461bcd60e51b815260040161054c90612264565b6001600160a01b03821661100b5760405162461bcd60e51b815260040161054c90611ffe565b611016838383610616565b611021600082610eb6565b6001600160a01b038316600090815260016020526040902061104390826113b1565b506001600160a01b038216600090815260016020526040902061106690826113bd565b50611073600282846113c9565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061069883836113df565b80546001019055565b5490565b6001600160a01b0382166110f95760405162461bcd60e51b815260040161054c906121ae565b61110281610ea5565b1561111f5760405162461bcd60e51b815260040161054c90611fc7565b61112b60008383610616565b6001600160a01b038216600090815260016020526040902061114d90826113bd565b5061115a600282846113c9565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006111a282610852565b90506111b081600084610616565b6111bb600083610eb6565b60008281526008602052604090205460026000196101006001841615020190911604156111f95760008281526008602052604081206111f9916119f7565b6001600160a01b038116600090815260016020526040902061121b90836113b1565b50611227600283611424565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008080806112738686611430565b9097909650945050505050565b600061128d84848461148c565b90505b9392505050565b6112a2848484610fac565b6112ae848484846114eb565b610c465760405162461bcd60e51b815260040161054c90611f2f565b6060816112ef57506040805180820190915260018152600360fc1b602082015261048a565b8160005b811561130757600101600a820491506112f3565b60608167ffffffffffffffff8111801561132057600080fd5b506040519080825280601f01601f19166020018201604052801561134b576020820181803683370190505b50859350905060001982015b831561139c57600a840660300160f81b8282806001900393508151811061137a57fe5b60200101906001600160f81b031916908160001a905350600a84049350611357565b50949350505050565b600061069883836115ca565b600061069883836115e2565b600061069883836116a8565b600061128d84846001600160a01b0385166116f2565b815460009082106114025760405162461bcd60e51b815260040161054c90611eed565b82600001828154811061141157fe5b9060005260206000200154905092915050565b60006106988383611789565b8154600090819083106114555760405162461bcd60e51b815260040161054c9061216c565b600084600001848154811061146657fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816114bc5760405162461bcd60e51b815260040161054c9190611eda565b508460000160018203815481106114cf57fe5b9060005260206000209060020201600101549150509392505050565b60006114ff846001600160a01b031661185d565b61150b57506001610755565b6060611593630a85bd0160e11b611520610eb2565b8887876040516024016115369493929190611e5e565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612498603291396001600160a01b0388169190611863565b90506000818060200190518101906115ab9190611d7e565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561169e578354600019808301919081019060009087908390811061161557fe5b906000526020600020015490508087600001848154811061163257fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061166257fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061069b565b600091505061069b565b60006116b483836115ca565b6116ea5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561069b565b50600061069b565b600082815260018401602052604081205480611757575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611290565b8285600001600183038154811061176a57fe5b9060005260206000209060020201600101819055506000915050611290565b6000818152600183016020526040812054801561169e57835460001980830191908101906000908790839081106117bc57fe5b90600052602060002090600202019050808760000184815481106117dc57fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061181b57fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061069b9350505050565b3b151590565b606061128d8484600085856118778561185d565b6118935760405162461bcd60e51b815260040161054c9061238e565b60006060866001600160a01b031685876040516118b09190611dff565b60006040518083038185875af1925050503d80600081146118ed576040519150601f19603f3d011682016040523d82523d6000602084013e6118f2565b606091505b509150915061190282828661190d565b979650505050505050565b6060831561191c575081611290565b82511561192c5782518084602001fd5b8160405162461bcd60e51b815260040161054c9190611eda565b6001830191839082156119c95791602002820160005b8382111561199a57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261195c565b80156119c75782816101000a81549060ff021916905560010160208160000104928301926001030261199a565b505b506119d5929150611a3b565b5090565b60405180608001604052806004906020820280368337509192915050565b50805460018160011615610100020316600290046000825580601f10611a1d57506107c0565b601f0160209004906000526020600020908101906107c09190611a54565b5b808211156119d557805460ff19168155600101611a3c565b5b808211156119d55760008155600101611a55565b80356001600160a01b038116811461069b57600080fd5b803560ff8116811461069b57600080fd5b600060208284031215611aa2578081fd5b6106988383611a69565b60008060408385031215611abe578081fd5b611ac88484611a69565b9150611ad78460208501611a69565b90509250929050565b600080600060608486031215611af4578081fd5b8335611aff8161246c565b92506020840135611b0f8161246c565b929592945050506040919091013590565b60008060008060808587031215611b35578081fd5b611b3f8686611a69565b93506020611b4f87828801611a69565b935060408601359250606086013567ffffffffffffffff80821115611b72578384fd5b818801915088601f830112611b85578384fd5b813581811115611b93578485fd5b611ba5601f8201601f191685016123dc565b91508082528984828501011115611bba578485fd5b8084840185840137810190920192909252939692955090935050565b60008060008060e08587031215611beb578384fd5b8435611bf68161246c565b93506020603f86018713611c08578384fd5b6004611c1b611c1682612423565b6123dc565b8083890160a08a018b811115611c2f578889fd5b885b85811015611c5557611c438d84611a80565b85529386019391860191600101611c31565b50989b919a505096359760c001359695505050505050565b60008060408385031215611c7f578182fd5b611c898484611a69565b915060208301358015158114611c9d578182fd5b809150509250929050565b60008060408385031215611cba578182fd5b611cc48484611a69565b946020939093013593505050565b60006020808385031215611ce4578182fd5b823567ffffffffffffffff811115611cfa578283fd5b8301601f81018513611d0a578283fd5b8035611d18611c1682612403565b8181528381019083850185840285018601891015611d34578687fd5b8694505b83851015611d56578035835260019490940193918501918501611d38565b50979650505050505050565b600060208284031215611d73578081fd5b813561129081612481565b600060208284031215611d8f578081fd5b815161129081612481565b600060208284031215611dab578081fd5b5035919050565b60008060408385031215611dc4578182fd5b50508035926020909101359150565b60008151808452611deb816020860160208601612440565b601f01601f19169290920160200192915050565b60008251611e11818460208701612440565b9190910192915050565b60008351611e2d818460208801612440565b835190830190611e41818360208801612440565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e9190830184611dd3565b9695505050505050565b60808101818360005b6004811015611ec657815160ff16835260209283019290910190600101611ea4565b50505092915050565b901515815260200190565b6000602082526106986020830184611dd3565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526022908201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156123fb57600080fd5b604052919050565b600067ffffffffffffffff821115612419578081fd5b5060209081020190565b600067ffffffffffffffff821115612439578081fd5b5060200290565b60005b8381101561245b578181015183820152602001612443565b83811115610c465750506000910152565b6001600160a01b03811681146107c057600080fd5b6001600160e01b0319811681146107c057600080fdfe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212208fcda49dd9088a89f50da9ae43134730e5947a331ca548413984c2db95edc67864736f6c634300060c0033