solc-0.8.36-doubleshift20 0x43506849d7c04f9138d1a2050bbf3a0c054402dd via-ir

15453 bytes

60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610384578063095ea7b31461037f57806318160ddd1461037a5780631a8952661461037557806323b872dd146103705780632ab600451461036b5780632fc81e09146103665780633092afd51461036157806330adf81f1461035c578063313ce567146103575780633357162b1461035257806335d99f351461034d5780633644e5151461034857806338a6318314610343578063395093511461033e5780633f4ba83a1461033957806340c10f191461033457806342966c681461032f578063430239b41461032a5780634e44d9561461032557806354fd4d5014610320578063554bab3c1461031b5780635a049a70146103165780635c975abb1461031157806370a082311461030c5780637ecebe00146103075780637f2eecc3146103025780638456cb59146102fd57806388b7ab63146102f85780638a6db9c3146102f35780638da5cb5b146102ee57806395d89b41146102e95780639fd0506d146102e45780639fd5a6cf146102df578063a0cc6a68146102da578063a457c2d7146102d5578063a9059cbb146102d0578063aa20e1e4146102cb578063aa271e1a146102c6578063ad38bf22146102c1578063b2118a8d146102bc578063b7b72899146102b7578063bd102430146102b2578063cf092995146102ad578063d505accf146102a8578063d608ea64146102a3578063d91694871461029e578063dd62ed3e14610299578063e3ee160e14610294578063e5a6b10f1461028f578063e94a01021461028a578063ef55bec614610285578063f2fde38b14610280578063f9f92be41461027b5763fe575a8714610276575f80fd5b61223e565b6121c6565b6120d3565b6120bc565b61206e565b611fc9565b611f10565b611e61565b611e27565b611cb6565b611c24565b611ba7565b611b7f565b611b29565b6119d9565b6118f4565b6118b4565b611837565b6117b6565b6116da565b6116a0565b611634565b61160c565b611536565b61150f565b6114d4565b611457565b6113a6565b61136c565b611331565b6112ec565b6112c7565b61123b565b611160565b611145565b611099565b61101a565b610e93565b610ca2565b610c4b565b610bd8565b610bb0565b610b7b565b610b53565b610aac565b610a00565b6109c6565b610938565b6108b8565b6107e8565b610645565b6105ca565b6105ad565b610566565b6104ea565b90600182811c921680156103b7575b60208310146103a357565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610398565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b038211176103f657604052565b6103c1565b604051905f826004549161040e83610389565b80835292600181169081156104935750600114610434575b610432925003836103d5565b565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061047757505090602061043292820101610426565b602091935080600191548385890101520191019091849261045f565b6020925061043294915060ff191682840152151560051b820101610426565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206104e79281815201906104b2565b90565b3461051d575f36600319011261051d576105196105056103fb565b6040519182916020835260208301906104b2565b0390f35b5f80fd5b6001600160a01b0381160361051d57565b6084359061043282610521565b60a4359061043282610521565b60c4359061043282610521565b60e4359061043282610521565b3461051d57604036600319011261051d576105a260043561058681610521565b6024359061059c60ff60015460a01c161561228a565b33612ed0565b602060405160018152f35b3461051d575f36600319011261051d576020600b54604051908152f35b3461051d57602036600319011261051d576004356105e781610521565b6105fc60018060a01b036002541633146122c9565b6001600160a01b03165f81815260096020526040812080546001600160ff1b031690557f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9080a2005b3461051d57606036600319011261051d5760043561066281610521565b60243561066e81610521565b6044359061068460ff60015460a01c161561228a565b335f908152600960205260409020546106a49060ff1c6001145b1561232a565b6001600160a01b0383165f908152600960205260409020546106cb9060ff1c60011461069e565b6001600160a01b0381165f908152600960205260409020546106f29060ff1c60011461069e565b6001600160a01b0383165f908152600a602090815260408083203384529091529020548211610792578161072d6107859361076693866130a0565b6001600160a01b0384165f908152600a602052604090206107609033905b9060018060a01b03165f5260205260405f2090565b546131ef565b6001600160a01b039092165f908152600a60205260409020339061074b565b5560405160018152602090f35b60405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608490fd5b3461051d57602036600319011261051d5760043561080581610521565b61081960018060a01b035f54163314612384565b6001600160a01b0316801561086057600e80546001600160a01b031916821790557fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a5f80a2005b60405162461bcd60e51b815260206004820152602a60248201527f526573637561626c653a206e6577207265736375657220697320746865207a65604482015269726f206164647265737360b01b6064820152608490fd5b3461051d57602036600319011261051d576004356108d581610521565b600160ff601254160361051d57305f908152600960205260409020546001600160ff1b031680610927575b305f9081526009602052604090208054600160ff1b1790556012805460ff19166002179055005b61093191306130a0565b5f80610900565b3461051d57602036600319011261051d5760043561095581610521565b61096a60018060a01b036008541633146123cf565b6001600160a01b03165f818152600c60209081526040808320805460ff19169055600d9091528082208290555191907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929080a260018152602090f35b3461051d575f36600319011261051d5760206040517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b3461051d575f36600319011261051d57602060ff60065416604051908152f35b6001600160401b0381116103f657601f01601f191660200190565b929192610a4782610a20565b91610a5560405193846103d5565b82948184528183011161051d578281602093845f960137010152565b9080601f8301121561051d578160206104e793359101610a3b565b6064359060ff8216820361051d57565b6084359060ff8216820361051d57565b3461051d5761010036600319011261051d576004356001600160401b03811161051d57610add903690600401610a71565b6024356001600160401b03811161051d57610afc903690600401610a71565b90604435916001600160401b03831161051d57610b20610b51933690600401610a71565b610b28610a8c565b610b30610532565b90610b3961053f565b92610b4261054c565b94610b4b610559565b966128fd565b005b3461051d575f36600319011261051d576008546040516001600160a01b039091168152602090f35b3461051d575f36600319011261051d576020610ba8610b986103fb565b4690610ba2612eb1565b9061385e565b604051908152f35b3461051d575f36600319011261051d57600e546040516001600160a01b039091168152602090f35b3461051d57604036600319011261051d57610c3f600435610bf881610521565b610c38602435610c1060ff60015460a01c161561228a565b335f908152600a602090815260408083206001600160a01b0387168452909152902054613253565b9033612ed0565b60405160018152602090f35b3461051d575f36600319011261051d57600154610c72336001600160a01b03831614612a7b565b60ff60a01b19166001557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b335f80a1005b3461051d57604036600319011261051d57600435610cbf81610521565b60243590610cd560ff60015460a01c161561228a565b335f52600c602052610ced60ff60405f205416612ad2565b335f90815260096020526040902054610d0b9060ff1c60011461069e565b6001600160a01b0381165f90815260096020526040902054610d329060ff1c60011461069e565b6001600160a01b038116918215610e4257610e3381610de4815f95610d797fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef961515612b28565b335f908152600d60205260409020610ddf905491610d9983851115612b86565b610dad610da885600b54613253565b600b55565b6001600160a01b0381165f90815260096020526040902054610dd99085906001600160ff1b0316613253565b906132ac565b6131ef565b335f818152600d6020908152604091829020939093555183815287927fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f891a36040519081529081906020820190565b0390a360405160018152602090f35b60405162461bcd60e51b815260206004820152602360248201527f46696174546f6b656e3a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b3461051d57602036600319011261051d57600435610eb960ff60015460a01c161561228a565b335f52600c602052610ed160ff60405f205416612ad2565b335f90815260096020526040902054610eef9060ff1c60011461069e565b335f908152600960205260409020546001600160ff1b0316908015610f9657610f38610f328284610f23825f971015612be9565b610ddf610da883600b546131ef565b336132ac565b60405181815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590602090a260405190815233907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3005b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206275726e20616d6f756e74206e6f7420677265617460448201526806572207468616e20360bc1b6064820152608490fd5b9181601f8401121561051d578235916001600160401b03831161051d576020838186019501011161051d57565b3461051d57604036600319011261051d576004356001600160401b03811161051d573660238201121561051d578060040135906001600160401b03821161051d573660248360051b8301011161051d57602435906001600160401b03821161051d57610b51926110906024933690600401610fed565b93909201612ce4565b3461051d57604036600319011261051d576004356110b681610521565b7f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d206020602435926110ef60ff60015460a01c161561228a565b61110460018060a01b036008541633146123cf565b6001600160a01b03165f818152600c83526040808220805460ff19166001179055828252600d8452908190208590555193845292a260405160018152602090f35b3461051d575f36600319011261051d57610519610505612eb1565b3461051d57602036600319011261051d5760043561117d81610521565b61119160018060a01b035f54163314612384565b6001600160a01b038116156111e557600180546001600160a01b0319166001600160a01b039290921691821790557fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a6045f80a2005b60405162461bcd60e51b815260206004820152602860248201527f5061757361626c653a206e65772070617573657220697320746865207a65726f604482015267206164647265737360c01b6064820152608490fd5b3461051d5760a036600319011261051d5760043561125881610521565b60443560243560ff8216820361051d57610b51926112c26064356112b46084359561128b60ff60015460a01c161561228a565b6040519687936020850191604193918352602083015260ff60f81b9060f81b1660408201520190565b03601f1981018552846103d5565b613717565b3461051d575f36600319011261051d57602060ff60015460a01c166040519015158152f35b3461051d57602036600319011261051d576020610ba860043561130e81610521565b6001600160a01b03165f908152600960205260409020546001600160ff1b031690565b3461051d57602036600319011261051d5760043561134e81610521565b60018060a01b03165f526011602052602060405f2054604051908152f35b3461051d575f36600319011261051d5760206040517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de88152f35b3461051d575f36600319011261051d576001546113cd336001600160a01b03831614612a7b565b60ff60a01b1916600160a01b176001557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6255f80a1005b60e060031982011261051d5760043561141b81610521565b9160243561142881610521565b9160443591606435916084359160a4359160c435906001600160401b03821161051d576104e791600401610a71565b3461051d57610b5161146836611403565b9561148160ff60019793979694965460a01c161561228a565b6001600160a01b0381165f908152600960205260409020546114a89060ff1c60011461069e565b6001600160a01b0382165f908152600960205260409020546114cf9060ff1c60011461069e565b6133a0565b3461051d57602036600319011261051d576004356114f181610521565b60018060a01b03165f52600d602052602060405f2054604051908152f35b3461051d575f36600319011261051d575f546040516001600160a01b039091168152602090f35b3461051d575f36600319011261051d576040515f60055461155681610389565b80845290600181169081156115e8575060011461158a575b6105198361157e818503826103d5565b604051918291826104d6565b60055f9081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106115ce5750909150810160200161157e61156e565b9192600181602092548385880101520191019092916115b6565b60ff191660208086019190915291151560051b8401909101915061157e905061156e565b3461051d575f36600319011261051d576001546040516001600160a01b039091168152602090f35b3461051d5760a036600319011261051d5760043561165181610521565b6024359061165e82610521565b60443560643590608435936001600160401b03851161051d57611688610b51953690600401610a71565b9361169b60ff60015460a01c161561228a565b613595565b3461051d575f36600319011261051d5760206040517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a22678152f35b3461051d57604036600319011261051d576004356116f781610521565b60243561170c60ff60015460a01c161561228a565b335f908152600a602090815260408083206001600160a01b03861684529091529020549060405161173e6060826103d5565b602581527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b60408201528282116117965750810390811161179157610c3f9133612ed0565b6131db565b60405162461bcd60e51b81529081906117b290600483016104d6565b0390fd5b3461051d57604036600319011261051d57610c3f6004356117d681610521565b602435906117ec60ff60015460a01c161561228a565b335f9081526009602052604090205461180a9060ff1c60011461069e565b6001600160a01b0381165f908152600960205260409020546118319060ff1c60011461069e565b336130a0565b3461051d57602036600319011261051d5760043561185481610521565b61186860018060a01b035f54163314612384565b6001600160a01b031661187c81151561242d565b600880546001600160a01b031916821790557fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e65f80a2005b3461051d57602036600319011261051d576004356118d181610521565b60018060a01b03165f52600c602052602060ff60405f2054166040519015158152f35b3461051d57602036600319011261051d5760043561191181610521565b61192560018060a01b035f54163314612384565b6001600160a01b0381161561197957600280546001600160a01b0319166001600160a01b039290921691821790557fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e5f80a2005b60405162461bcd60e51b815260206004820152603260248201527f426c61636b6c69737461626c653a206e657720626c61636b6c697374657220696044820152717320746865207a65726f206164647265737360701b6064820152608490fd5b3461051d57606036600319011261051d576004356119f681610521565b602435611a0281610521565b600e5460443591906001600160a01b03163303611ad8575f8091611ab59460405194602086019263a9059cbb60e01b845260018060a01b03166024870152604486015260448552611a546064866103d5565b60018060a01b0316908260405195611a6d6040886103d5565b602087527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020880152611aa3843b1515613ba2565b51925af1611aaf613bee565b90613c1d565b805180611abe57005b81602080611ad393610b519501019101613502565b613ac0565b60405162461bcd60e51b8152602060048201526024808201527f526573637561626c653a2063616c6c6572206973206e6f74207468652072657360448201526331bab2b960e11b6064820152608490fd5b3461051d57606036600319011261051d57600435611b4681610521565b604435906024356001600160401b03831161051d57611b6c610b51933690600401610a71565b916112c260ff60015460a01c161561228a565b3461051d575f36600319011261051d576002546040516001600160a01b039091168152602090f35b3461051d57610b51611bb836611403565b95611bd160ff60019793979694965460a01c161561228a565b6001600160a01b0381165f90815260096020526040902054611bf89060ff1c60011461069e565b6001600160a01b0382165f90815260096020526040902054611c1f9060ff1c60011461069e565b6137c7565b3461051d5760e036600319011261051d57610b51600435611c4481610521565b602435611c5081610521565b60443560643591611c5f610a9c565b9361169b60a435611ca860c43597611c7f60ff60015460a01c161561228a565b6040519889936020850191604193918352602083015260ff60f81b9060f81b1660408201520190565b03601f1981018752866103d5565b3461051d57602036600319011261051d576004356001600160401b03811161051d57611ce6903690600401610fed565b60ff60085460a01c1680611e1a575b1561051d576001600160401b0381116103f657611d1c81611d17600454610389565b6125af565b5f601f8211600114611d8e57611d719282611d5381611d6c95611d5e955f91611d83575b508160011b915f199060031b1c19161790565b6004555b3691610a3b565b611d66612eb1565b90613857565b600f55565b610b51600160ff196012541617601255565b90508401355f611d40565b60045f52601f198216907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b818110611e02575092611d5e92611d71959282611d6c9610611de9575b5050600181811b01600455611d57565b8301355f19600384901b60f8161c191690555f80611dd9565b91926020600181928689013581550194019201611dbc565b5060ff6012541615611cf5565b3461051d575f36600319011261051d5760206040517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a15974298152f35b3461051d57604036600319011261051d576020611eb7600435611e8381610521565b60243590611e9082610521565b60018060a01b03165f52600a835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b61012090600319011261051d57600435611ed981610521565b90602435611ee681610521565b9060443590606435906084359060a4359060c43560ff8116810361051d579060e435906101043590565b3461051d57610b51611c1f611fbb611f2736611ec0565b9992989091611f4460ff60019a969a9997995460a01c161561228a565b6001600160a01b0385165f90815260096020526040902054611f6b9060ff1c60011461069e565b6001600160a01b0386165f90815260096020526040902054611f929060ff1c60011461069e565b6040519a8b936020850191604193918352602083015260ff60f81b9060f81b1660408201520190565b03601f1981018952886103d5565b3461051d575f36600319011261051d576040515f600754611fe981610389565b80845290600181169081156115e85750600114612010576105198361157e818503826103d5565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b8082106120545750909150810160200161157e61156e565b91926001816020925483858801015201910190929161203c565b3461051d57604036600319011261051d5760043561208b81610521565b6024359060018060a01b03165f52601060205260405f20905f52602052602060ff60405f2054166040519015158152f35b3461051d57610b516114cf611fbb611f2736611ec0565b3461051d57602036600319011261051d576004356120f081610521565b5f546001600160a01b031690612107338314612384565b6001600160a01b0381161561217257604080516001600160a01b0393841681529282166020840152610b51927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a160018060a01b03166001600160601b0360a01b5f5416175f55565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461051d57602036600319011261051d576004356121e381610521565b6121f860018060a01b036002541633146122c9565b6001600160a01b03165f8181526009602052604081208054600160ff1b1790557fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559080a2005b3461051d57602036600319011261051d57602061228060043561226081610521565b6001600160a01b03165f9081526009602052604090205460ff1c60011490565b6040519015158152f35b1561229157565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b156122d057565b60405162461bcd60e51b815260206004820152602c60248201527f426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686560448201526b10313630b1b5b634b9ba32b960a11b6064820152608490fd5b1561233157565b60405162461bcd60e51b815260206004820152602560248201527f426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c6044820152641a5cdd195960da1b6064820152608490fd5b1561238b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156123d657565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61736044820152683a32b926b4b73a32b960b91b6064820152608490fd5b1561243457565b60405162461bcd60e51b815260206004820152602f60248201527f46696174546f6b656e3a206e6577206d61737465724d696e746572206973207460448201526e6865207a65726f206164647265737360881b6064820152608490fd5b1561249857565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206e65772070617573657220697320746865207a65726044820152686f206164647265737360b81b6064820152608490fd5b156124f657565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e3a206e657720626c61636b6c697374657220697320746860448201526d65207a65726f206164647265737360901b6064820152608490fd5b1561255957565b60405162461bcd60e51b815260206004820152602860248201527f46696174546f6b656e3a206e6577206f776e657220697320746865207a65726f604482015267206164647265737360c01b6064820152608490fd5b90601f82116125bc575050565b8082116125c7575050565b60045f5260205f206020601f830160051c9210612606575b81601f9101920160051c03905f5b8281106125f957505050565b5f828201556001016125ed565b5f91506125df565b919091601f831161261f575b505050565b81831161262b57505050565b5f5260205f206020601f830160051c9210612664575b81601f9101920160051c03905f5b8281101561261a575f8282015560010161264f565b5f9150612641565b9081516001600160401b0381116103f6576126938161268c600454610389565b600461260e565b602092601f82116001146126d3576126c3929382915f926126c8575b50508160011b915f199060031b1c19161790565b600455565b015190505f806126af565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b868110612737575083600195961061271f575b505050811b01600455565b01515f1960f88460031b161c191690555f8080612714565b91926020600181928685015181550194019201612701565b9081516001600160401b0381116103f6576127768161276f600554610389565b600561260e565b602092601f82116001146127aa576127a5929382915f926126c85750508160011b915f199060031b1c19161790565b600555565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b86811061280e57508360019596106127f6575b505050811b01600555565b01515f1960f88460031b161c191690555f80806127eb565b919260206001819286850151815501940192016127d8565b9081516001600160401b0381116103f65761284d81612846600754610389565b600761260e565b602092601f82116001146128815761287c929382915f926126c85750508160011b915f199060031b1c19161790565b600755565b60075f52601f198216937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688915f5b8681106128e557508360019596106128cd575b505050811b01600755565b01515f1960f88460031b161c191690555f80806128c2565b919260206001819286850151815501940192016128af565b969593949190929460ff60085460a01c16612a235761299c6129f39661298c6129b9946129876129d698612982612a0e9e61297d8f61296d8f61295d8f61294d8f60018060a01b0316151561242d565b6001600160a01b03161515612491565b6001600160a01b031615156124ef565b6001600160a01b03161515612552565b61266c565b61274f565b612826565b60ff1660ff196006541617600655565b60018060a01b03166001600160601b0360a01b6008541617600855565b60018060a01b03166001600160601b0360a01b6001541617600155565b60018060a01b03166001600160601b0360a01b6002541617600255565b60018060a01b03166001600160601b0360a01b5f5416175f55565b6008805460ff60a01b1916600160a01b179055565b60405162461bcd60e51b815260206004820152602a60248201527f46696174546f6b656e3a20636f6e747261637420697320616c726561647920696044820152691b9a5d1a585b1a5e995960b21b6064820152608490fd5b15612a8257565b60405162461bcd60e51b815260206004820152602260248201527f5061757361626c653a2063616c6c6572206973206e6f7420746865207061757360448201526132b960f11b6064820152608490fd5b15612ad957565b60405162461bcd60e51b815260206004820152602160248201527f46696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74656044820152603960f91b6064820152608490fd5b15612b2f57565b60405162461bcd60e51b815260206004820152602960248201527f46696174546f6b656e3a206d696e7420616d6f756e74206e6f7420677265617460448201526806572207468616e20360bc1b6064820152608490fd5b15612b8d57565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d60448201526d696e746572416c6c6f77616e636560901b6064820152608490fd5b15612bf057565b60405162461bcd60e51b815260206004820152602660248201527f46696174546f6b656e3a206275726e20616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b9190811015612c545760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356104e781610521565b15612c7957565b60405162461bcd60e51b815260206004820152603d60248201527f46696174546f6b656e56325f323a20426c61636b6c697374696e67207072657660448201527f696f75736c7920756e626c61636b6c6973746564206163636f756e74210000006064820152608490fd5b919392600260ff601254160361051d576001600160401b0381116103f657612d118161276f600554610389565b5f601f8211600114612e2f578190612d40939495965f92612e245750508160011b915f199060031b1c19161790565b6005555b5f5b818110612d93575050305f9081526009602090815260408083208054600160ff1b17905560039091529020612d8191505b805460ff19169055565b610432600360ff196012541617601255565b80612dd7612dd2612dcb612db2612dad600196888a612c44565b612c68565b6001600160a01b03165f90815260036020526040902090565b5460ff1690565b612c72565b612e0a612de8612dad838688612c44565b6001600160a01b03165f9081526009602052604090208054600160ff1b179055565b612e1e612d77612db2612dad848789612c44565b01612d46565b013590505f806126af565b60055f52601f198216957f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b888110612e9957508360019596979810612e80575b505050811b01600555612d44565b01355f19600384901b60f8161c191690555f8080612e72565b90926020600181928686013581550194019101612e5d565b60405190612ec06040836103d5565b60018252601960f91b6020830152565b6001600160a01b03811691908215612f9c576001600160a01b038216938415612f4c5780612f367f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461074b612f479560018060a01b03165f52600a60205260405f2090565b556040519081529081906020820190565b0390a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b15612ff457565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b1561304c57565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b916001600160a01b038316918215613188577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91613178612f479261314c60018060a01b038216976130f3891515612fed565b6001600160a01b0381165f90815260096020526040902054613120906001600160ff1b0316861115613045565b6001600160a01b0381165f90815260096020526040902054610dd99086906001600160ff1b03166131ef565b6001600160a01b0381165f90815260096020526040902054610dd99084906001600160ff1b0316613253565b6040519081529081906020820190565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b634e487b7160e01b5f52601160045260245ffd5b908181116132035781039081116117915790565b60405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606490fd5b6104e7610b986103fb565b908101908181116117915781106132675790565b60405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606490fd5b6001600160ff1b038211613348576001600160a01b0381165f9081526009602052604090205460ff1c6001146132f5576001600160a01b03165f90815260096020526040902055565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c6044820152641a5cdd195960da1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f46696174546f6b656e56325f323a2042616c616e636520657863656564732028604482015269325e323535202d20312960b01b6064820152608490fd5b919490939192336001600160a01b03861603613455576104329683826133ce6134509661344a95878a6138c7565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082019081526001600160a01b038a811693830193909352918a166060820152608081018b905260a081019290925260c082019290925260e08082018690528152613441610100826103d5565b5190208561398d565b82613a6e565b6130a0565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56323a2063616c6c6572206d7573742062652074686520604482015264706179656560d81b6064820152608490fd5b156134af57565b60405162461bcd60e51b815260206004820152601e60248201527f46696174546f6b656e56323a207065726d6974206973206578706972656400006044820152606490fd5b5f1981146117915760010190565b9081602091031261051d5751801515810361051d5790565b6104e7939260609260018060a01b03168252602082015281604082015201906104b2565b6040513d5f823e3d90fd5b1561355057565b60405162461bcd60e51b815260206004820152601a60248201527f454950323631323a20696e76616c6964207369676e61747572650000000000006044820152606490fd5b90919261369f946136836020925f198114801561370d575b6135b6906134a8565b6135be613248565b906136546136626135df8860018060a01b03165f52601160205260405f2090565b928354936135ec856134f4565b9055604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a82019081526001600160a01b03808d1660208301528d1692810192909252606082018d9052608082019590955260a08101919091529291829060c0850190565b03601f1981018352826103d5565b519020906042916040519161190160f01b8352600283015260228201522090565b604051633667532960e11b81529687928392866004850161351a565b038173800c32eaa2a6c93cf4cb51794450ed77fbfbb1725af493841561370857610432946136d4915f916136d9575b50613549565b612ed0565b6136fb915060203d602011613701575b6136f381836103d5565b810190613502565b5f6136ce565b503d6136e9565b61353e565b50428110156135ad565b9091613780906137278484613b1f565b60405192602084017f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429815260018060a01b03821694856040820152866060820152606081526137776080826103d5565b5190209061398d565b805f52601060205260405f20825f5260205260405f20600160ff198254161790557f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d815f80a3565b926104329661344a91613450949793966137e38183878a6138c7565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082019081526001600160a01b038a811693830193909352918a166060820152608081018b905260a081019390935260c083019190915260e0808301869052825290613441610100826103d5565b6104e79146915b919091602081519101209160208151910120906040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85526040840152606083015260808201523060a082015260a081526138c160c0826103d5565b51902090565b929091421115613934574210156138e15761043291613b1f565b60405162461bcd60e51b815260206004820152602560248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e2069732065786044820152641c1a5c995960da1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602b60248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f60448201526a1d081e595d081d985b1a5960aa1b6064820152608490fd5b6139bb60209261399e610b986103fb565b6042916040519161190160f01b8352600283015260228201522090565b604051633667532960e11b815293849283926139db92916004850161351a565b038173800c32eaa2a6c93cf4cb51794450ed77fbfbb1725af4908115613708575f91613a4f575b5015613a0a57565b60405162461bcd60e51b815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e617475726500006044820152606490fd5b613a68915060203d602011613701576136f381836103d5565b5f613a02565b6001600160a01b03165f8181526010602090815260408083208584529091528120805460ff191660011790557f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a59080a3565b15613ac757565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b60018060a01b03165f52601060205260405f20905f5260205260ff60405f205416613b4657565b60405162461bcd60e51b815260206004820152602e60248201527f46696174546f6b656e56323a20617574686f72697a6174696f6e20697320757360448201526d1959081bdc8818d85b98d95b195960921b6064820152608490fd5b15613ba957565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b3d15613c18573d90613bff82610a20565b91613c0d60405193846103d5565b82523d5f602084013e565b606090565b90919015613c29575090565b815115613c395750805190602001fd5b60405162461bcd60e51b8152602060048201529081906117b29060248301906104b256