solc-0.8.36-fakeopcode 0x7d4e742018fb52e48b08be73d041c18b21de6fb5 via-ir

19268 bytes

60806040526004361015610011575f80fd5b5f3560e01c80630a756983146103045780630eafb25b146102ff578063181f5a77146102fa57806322adbc78146102f557806329937268146102f0578063313ce567146102eb5780634fb17470146102e657806350d25bcd146102e157806354fd4d50146102dc578063643dc105146102d7578063666cab8d146102d2578063668a0f02146102cd5780636b14daf8146102c857806370da2f67146102c35780637284e416146102be57806379ba5097146102b95780638038e4a1146102b457806381ff7048146102af5780638205bf6a146102aa5780638823da6c146102a55780638ac28d5a146102a05780638da5cb5b1461029b57806398e5b12a146102965780639a6fc8f5146102915780639bd2c0b11461028c5780639c849b30146102875780639e3ceeab14610282578063a118f2491461027d578063afcb95d714610278578063b121e14714610273578063b1dc65a41461026e578063b5ab58dc14610269578063b633620c14610264578063c10753291461025f578063c4c92b371461025a578063d09dc33914610255578063daffc4b514610250578063dc7f01241461024b578063e3d0e71214610246578063e4902f8214610241578063e5fe45771461023c578063e76d516814610237578063eb45716314610232578063eb5dcd6c1461022d578063f2fde38b14610228578063fbffd2c1146102235763feaf968c1461021e575f80fd5b611ed4565b611e3b565b611d72565b611c74565b611b3c565b611b14565b6119ee565b6119b9565b611910565b61184a565b611822565b611792565b61176a565b6115a9565b61157b565b61154d565b6114a6565b6113c8565b61137f565b6112e1565b611248565b6110db565b61106b565b610ff5565b610e7d565b610e56565b610dcb565b610d44565b610cf9565b610cb3565b610c5d565b610b9b565b610a9c565b610a5f565b610a0d565b610868565b610839565b6105de565b6105b5565b610559565b61051d565b6104e0565b61047f565b610442565b6103d2565b61036b565b34610356575f3660031901126103565761031c61375b565b6015548060ff1661032957005b60ff19166015557f3be8a977a014527b50ae38adda80b56911c267328965c98ddc385d248f5396385f80a1005b5f80fd5b6001600160a01b0381160361035657565b3461035657602036600319011261035657602061039260043561038d8161035a565b612090565b604051908152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206103cf92818152019061039a565b90565b34610356575f3660031901126103565761043e6040516103f360608261090e565b602481527f416363657373436f6e74726f6c6c65644f43523241676772656761746f72203160208201526302e302e360e41b604082015260405191829160208352602083019061039a565b0390f35b34610356575f3660031901126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060170b8152f35b34610356575f36600319011261035657600b546040805163ffffffff605084901c81168252607084901c81166020830152609084901c81169282019290925260b083901c909116606082015260d09190911c62ffffff16608082015260a090f35b34610356575f3660031901126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060ff168152f35b346103565760403660031901126103565761055760043561053d8161035a565b6024359061054a8261035a565b61055261375b565b61222e565b005b34610356575f3660031901126103565761058461057f6105793636610988565b336124d8565b6123d1565b600b5460301c63ffffffff1663ffffffff1663ffffffff165f52600c602052602060405f205460170b604051908152f35b34610356575f36600319011261035657602060405160068152f35b8063ffffffff160361035657565b346103565760a0366003190112610356576004356105fb816105d0565b602435610607816105d0565b60443591610614836105d0565b606435610620816105d0565b608435908162ffffff168203610356576012546001600160a01b03169461065a61064e5f5460601b60601c90565b6001600160a01b031690565b3314958615610751575b509061074c92916106957f0bf184bf1bba9699114bdceddaf338a1b364252c5e497cc01918dde92031713f9761243c565b61069d613a1e565b600b805462ffffff60d01b60d086901b167fffffff00000000000000000000000000000000000000ffffffffffffffffffff90911663ffffffff60501b605089901b161763ffffffff60701b60708a901b161763ffffffff60901b609085901b161763ffffffff60b01b60b086901b16171790556040805163ffffffff968716815296861660208801529085169086015292909216606084015262ffffff9091166080830152819060a0820190565b0390a1005b604051630d629b5f60e31b815296509092919060209087908180610779363360048401612409565b03916001600160a01b03165afa9283156107f85761069561074c947f0bf184bf1bba9699114bdceddaf338a1b364252c5e497cc01918dde92031713f985f916107c9575b50975050909192610664565b6107eb915060203d6020116107f1575b6107e3818361090e565b8101906121aa565b5f6107bd565b503d6107d9565b61219f565b90602080835192838152019201905f5b81811061081a5750505090565b82516001600160a01b031684526020938401939092019160010161080d565b34610356575f3660031901126103565761043e610854612487565b6040519182916020835260208301906107fd565b34610356575f3660031901126103565761088861057f6105793636610988565b6020600b5460301c63ffffffff1663ffffffff16604051908152f35b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176108d357604052565b6108a4565b604081019081106001600160401b038211176108d357604052565b608081019081106001600160401b038211176108d357604052565b90601f801991011681019081106001600160401b038211176108d357604052565b6040519061093e60408361090e565b565b6040519061093e60c08361090e565b6040519061093e60608361090e565b6040519061093e60808361090e565b6001600160401b0381116108d357601f01601f191660200190565b9190916109948161096d565b6109a1604051918261090e565b809382825282116103565781815f9384602080950137010152565b9291926109c88261096d565b916109d6604051938461090e565b829481845281830111610356578281602093845f960137010152565b9080601f83011215610356578160206103cf933591016109bc565b3461035657604036600319011261035657600435610a2a8161035a565b6024356001600160401b03811161035657602091610a4f610a559236906004016109f2565b906124d8565b6040519015158152f35b34610356575f3660031901126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060170b8152f35b34610356575f36600319011261035657610abc61057f6105793636610988565b6040515f6010548060011c9060018116908115610b91575b602083108214610b7d578285526020850191908115610b645750600114610b12575b61043e84610b068186038261090e565b604051918291826103be565b60105f9081529250907f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b818410610b5057505001610b0682610af6565b805484840152602090930192600101610b3d565b60ff191682525090151560051b019050610b0682610af6565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610ad4565b34610356575f3660031901126103565760015433906001600160a01b03168103610c1f575f546001600160a01b03165f80546001600160a01b0319163317905590600180546001600160a01b03191690556001600160a01b0390811691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606490fd5b34610356575f36600319011261035657610c7561375b565b6015548060ff1615610c8357005b60ff19166001176015557faebf329500988c6488a0074e5a0a9ff304561fc5c6fc877aeb1d59c8282c34805f80a1005b34610356575f366003190112610356576060600d54600a54604051918063ffffffff1663ffffffff16835260201c63ffffffff1663ffffffff1660208301526040820152f35b34610356575f36600319011261035657610d1961057f6105793636610988565b600b5460301c63ffffffff165f908152600c602090815260409182902054915160e09290921c825290f35b3461035657602036600319011261035657600435610d618161035a565b610d6961375b565b6001600160a01b03165f81815260166020526040902054819060ff16610d8b57005b7f3d68a6fce901d20453d1a7aa06bf3950302a735948037deb182a8db66df2a0d1916020915f526016825260405f2060ff198154169055604051908152a1005b3461035657602036600319011261035657600435610de88161035a565b6001600160a01b038082165f90815260136020526040902054163303610e115761055790613c00565b60405162461bcd60e51b815260206004820152601760248201527f4f6e6c792070617965652063616e2077697468647261770000000000000000006044820152606490fd5b34610356575f366003190112610356575f546040516001600160a01b039091168152602090f35b34610356575f366003190112610356575f54610ea1906001600160a01b031661064e565b339081148015610f7c575b610f1b61043e92610ebf610f629361251a565b600b547f41e3990591fd372502daa15842da15bc7f41c75309ab3ff4f56f1848c178825c610f04610ef78360081c64ffffffffff1690565b9260301c63ffffffff1690565b600a549093610f57610f2463ffffffff600887901c165b63ffffffff1690565b6040805194855263ffffffff909116602085015260ff909516948301949094526001600160a01b03169281906060820190565b0390a2600190612566565b6040516001600160501b0390911681529081906020820190565b50600f546001600160a01b031660206040518092630d629b5f60e31b82528180610faa363360048401612409565b03915afa80156107f85761043e92610ebf610f1b92610f62945f91610fd6575b50935050925050610eac565b610fef915060203d6020116107f1576107e3818361090e565b5f610fca565b3461035657602036600319011261035657600435806001600160501b031681036103565761103561043e9161103061057f6105793636610988565b613d50565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015290819060a0820190565b34610356575f366003190112610356576040611085612583565b805160209182015183516001600160a01b03909216825263ffffffff1691810191909152f35b9181601f84011215610356578235916001600160401b038311610356576020808501948460051b01011161035657565b34610356576040366003190112610356576004356001600160401b0381116103565761110b9036906004016110ab565b906024356001600160401b0381116103565761112b9036906004016110ab565b9061113461375b565b61113f8285146125af565b5f91825b85811061114c57005b8061116261115d60019389896125fa565b61260a565b61117061115d8386886125fa565b6001600160a01b0382165f90815260136020526040902090919061119c905b546001600160a01b031690565b6001600160a01b0316918783148015611236575b6111b990612614565b6001600160a01b0382165f9081526013602052604090206111e090829061220e565b61220e565b6001600160a01b03168083036111fa575b50505001611143565b6001600160a01b0390811692811691167f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b35f80a45f80806111f1565b506001600160a01b03811683146111b0565b34610356576020366003190112610356576004356112658161035a565b61126d61375b565b600f546001600160a01b0380831692919081169081840361128a57005b6001600160a01b0319166001600160a01b0393841617600f556040805191841682529190921660208301527f27b89aede8b560578baaa25ee5ce3852c5eecad1e114b941bbd89e1eb4bae63491908190810161074c565b34610356576020366003190112610356576004356112fe8161035a565b61130661375b565b6001600160a01b0381165f8181526016602052604090205460ff161561132857005b5f90815260166020908152604091829020805460ff1916600117905590516001600160a01b0390921682527f87286ad1f399c8e82bf0c4ef4fcdc570ea2e1e92176e5c848b6413545b885db491908190810161074c565b34610356575f36600319011261035657600a54600b546060919060101c63ffffffff1664ffffffffff1663ffffffff16604051915f8352602083015263ffffffff166040820152f35b34610356576020366003190112610356576004356113e58161035a565b6001600160a01b038082165f818152601460205260409020549091339161140e91168214612654565b6001600160a01b0383165f908152601360205260409020611472906114329061118f565b6001600160a01b0385165f90815260136020526040902090949061145790339061220e565b6001600160a01b03165f90815260146020526040812061220e565b6001600160a01b039081169216907f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b35f80a4005b346103565760e03660031901126103565736606411610356576064356001600160401b0381116103565736602382011215610356578060040135906001600160401b038211610356573660248383010111610356576084356001600160401b0381116103565761151a9036906004016110ab565b9260a435936001600160401b0385116103565761153e6105579536906004016110ab565b939092602460c43596016129e5565b3461035657602036600319011261035657602061039260043561157661057f6105793636610988565b61457e565b346103565760203660031901126103565760206103926004356115a461057f6105793636610988565b6145a3565b34610356576040366003190112610356576004356115c68161035a565b5f5460243591906115df906001600160a01b031661064e565b331480156116f7575b6115f19061243c565b6115f96145c8565b9061160c61064e60115460601b60601c90565b6040516370a0823160e01b815230600482015293602085602481855afa9081156107f85761165760209561165c93611690985f916116ca575b5061165282821015612c43565b612c86565b61467a565b60405163a9059cbb60e01b81526001600160a01b0390931660048401526024830152909283919082905f9082906044820190565b03925af180156107f857610557915f916116ab575b50612c93565b6116c4915060203d6020116107f1576107e3818361090e565b5f6116a5565b6116ea9150883d8a116116f0575b6116e2818361090e565b810190612190565b5f611645565b503d6116d8565b5060125461170d906001600160a01b031661064e565b60206040518092630d629b5f60e31b8252818061172e363360048401612409565b03915afa80156107f8576115f1915f9161174b575b5090506115e8565b611764915060203d6020116107f1576107e3818361090e565b5f611743565b34610356575f366003190112610356576012546040516001600160a01b039091168152602090f35b34610356575f366003190112610356576011546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156107f85761043e916117f3915f91611803575b506117ed6145c8565b90612cd4565b6040519081529081906020820190565b61181c915060203d6020116116f0576116e2818361090e565b5f6117e4565b34610356575f36600319011261035657600f546040516001600160a01b039091168152602090f35b34610356575f36600319011261035657602060155460ff166040519015158152f35b6001600160401b0381116108d35760051b60200190565b9080601f8301121561035657813561189a8161186c565b926118a8604051948561090e565b81845260208085019260051b82010192831161035657602001905b8282106118d05750505090565b6020809183356118df8161035a565b8152019101906118c3565b604435908160ff16820361035657565b60843590816001600160401b0316820361035657565b346103565760c0366003190112610356576004356001600160401b03811161035657611940903690600401611883565b6024356001600160401b0381116103565761195f903690600401611883565b906119686118ea565b6064356001600160401b038111610356576119879036906004016109f2565b61198f6118fa565b9160a435946001600160401b038611610356576119b36105579636906004016109f2565b94612cec565b346103565760203660031901126103565760206119e06004356119db8161035a565b61363b565b6040519063ffffffff168152f35b34610356575f36600319011261035657323303611ad857600a54600b549061043e611a208360081c64ffffffffff1690565b92611a4e611a41611a3a63ffffffff600888901c16610f1b565b9560ff1690565b9160301c63ffffffff1690565b611a9e611a97611a7c611a758463ffffffff1663ffffffff165f52600c60205260405f2090565b5460170b90565b9263ffffffff1663ffffffff165f52600c60205260405f2090565b5460e01c90565b6040805195865263ffffffff968716602087015260ff9093169285019290925260170b6060840152909216608082015290819060a0820190565b60405162461bcd60e51b81526020600482015260146024820152734f6e6c792063616c6c61626c6520627920454f4160601b6044820152606490fd5b34610356575f366003190112610356576011546040516001600160a01b039091168152602090f35b3461035657604036600319011261035657600435611b598161035a565b602435611b65816105d0565b611b6d61375b565b611b75612583565b805190926001600160a01b03808216939192168314801590611c5d575b611b9857005b611c147fb04e3a37abe9c0fcdfebdeae019a8e2b12ddf53f5d55ffb0caccc1bedaca154192611bd7611bc861092f565b6001600160a01b039092168252565b63ffffffff8316602082015251600e80546001600160c01b0319166001600160a01b039092169190911760a084901b63ffffffff60a01b16179055565b8351611c32906020906001600160a01b031695015163ffffffff1690565b6040805163ffffffff92831681529290911660208301526001600160a01b03938416949093169290a3005b50602084015163ffffffff82811691161415611b92565b3461035657604036600319011261035657600435611c918161035a565b602435611c9d8161035a565b6001600160a01b038083165f818152601360205260409020549092611d2e929091611cc8911661064e565b339490611cd69086146136c3565b6001600160a01b038216928392611cef8785141561370f565b6001600160a01b0383165f9081526014602052604090206111db90611d139061118f565b6001600160a01b039094165f90815260146020526040902090565b6001600160a01b031603611d3e57005b6001600160a01b039081169216907f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e383675f80a4005b3461035657602036600319011261035657600435611d8f8161035a565b611d9761375b565b6001600160a01b03811690338214611df657600180546001600160a01b0319166001600160a01b039283161790555f805492821692909116907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789080a3005b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b3461035657602036600319011261035657600435611e588161035a565b611e6061375b565b6012546001600160a01b03808316929190811690818403611e7d57005b6001600160a01b0319166001600160a01b03938416176012556040805191841682529190921660208301527f793cb73064f3c8cde7e187ae515511e6e56d1ee89bf08b82fa60fb70f8d4891291908190810161074c565b34610356575f36600319011261035657611ef461057f6105793636610988565b600b5460301c63ffffffff1663ffffffff168063ffffffff165f52600c60205260405f209061043e6040611f73611f69611f5f835196611f33886108b8565b54601781900b80895263ffffffff60c083901c1660208a0181905260e09290921c959098018590529690565b9563ffffffff1690565b9163ffffffff1690565b604080516001600160501b0390951680865260179690960b602086015263ffffffff92831690850152166060830152608082019290925290819060a0820190565b90604051611fc1816108b8565b915460ff80821615158452600882901c16602084015260101c6001600160601b03166040830152565b634e487b7160e01b5f52603260045260245ffd5b90601f82101561201957601c8260031c6006019260021b1690565b611fea565b634e487b7160e01b5f52601160045260245ffd5b9063ffffffff169063ffffffff16039063ffffffff821161204f57565b61201e565b90633b9aca00820291808304633b9aca00149015171561204f57565b8181029291811591840414171561204f57565b9190820180921161204f57565b6001600160a01b03165f90815260026020526040908190209051906120b4826108b8565b546120f36120ef8260ff16151580855260408460081c60ff1660ff1695866020820152019360101c60a01b60a01c60a01b60a01c8452151590565b1590565b61218a5761218461217861216a6121656103cf9561215f610f1b612152610f1b600b549461214c61213c6121376121308960301c63ffffffff1690565b9360ff1690565b611ffe565b90549060031b1c63ffffffff1690565b90612032565b9260901c63ffffffff1690565b90612070565b612054565b92516001600160601b031690565b6001600160601b031690565b90612083565b50505f90565b90816020910312610356575190565b6040513d5f823e3d90fd5b90816020910312610356575180151581036103565790565b156121c957565b60405162461bcd60e51b815260206004820152601f60248201527f7472616e736665722072656d61696e696e672066756e6473206661696c6564006044820152606490fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b60115490916001600160a01b039182169183168083146123cb576040516370a0823160e01b815230600482018190526001600160a01b0392909216949193602082602481895afa9081156107f8576122bd926020926123b0575b50612291613a1e565b6040516370a0823160e01b81526001600160a01b03968716600482015295169491829081906024820190565b0381875afa80156107f857612308936020925f92612391575b5060405163a9059cbb60e01b81526001600160a01b039091166004820152602481019190915292839081906044820190565b03815f875af19182156107f85761234c9261232a915f91612372575b506121c2565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b7f4966a50c93f855342ccf6c5c0d358b85b91335b2acedc7da0932f691f351711a5f80a3565b61238b915060203d6020116107f1576107e3818361090e565b5f612324565b6123a9919250833d85116116f0576116e2818361090e565b905f6122d6565b6123c690833d85116116f0576116e2818361090e565b612288565b50505050565b156123d857565b60405162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b6044820152606490fd5b909160609260601b60601c825260406020830152806040830152805f848401375f828201840152601f01601f1916010190565b1561244357565b606460405162461bcd60e51b815260206004820152602060248201527f4f6e6c79206f776e65722662696c6c696e6741646d696e2063616e2063616c6c6044820152fd5b60405190600554808352826020810160055f5260205f20925f5b8181106124b657505061093e9250038361090e565b84546001600160a01b03168352600194850194879450602090930192016124a1565b6001600160a01b03165f8181526016602052604090205460ff169150811561250c575b8115612505575090565b3214919050565b60155460ff161591506124fb565b1561252157565b60405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e6572267265717565737465722063616e2063616c6c0000006044820152606490fd5b9063ffffffff169063ffffffff16019063ffffffff821161204f57565b60405190612590826108d8565b600e546001600160a01b038116835260a01c63ffffffff166020830152565b156125b657565b606460405162461bcd60e51b815260206004820152602060248201527f7472616e736d6974746572732e73697a6520213d207061796565732e73697a656044820152fd5b91908110156120195760051b0190565b356103cf8161035a565b1561261b57565b60405162461bcd60e51b81526020600482015260116024820152701c185e595948185b1c9958591e481cd95d607a1b6044820152606490fd5b1561265b57565b60405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792070726f706f736564207061796565732063616e20616363657074006044820152606490fd5b6040519061010082018281106001600160401b038211176108d35760405261093e8260e0612795600b548060ff1660ff1684528060081c64ffffffffff1664ffffffffff16602085015261270a6126fd8260301c63ffffffff1690565b63ffffffff166040860152565b61272a61271d8260501c63ffffffff1690565b63ffffffff166060860152565b61274a61273d8260701c63ffffffff1690565b63ffffffff166080860152565b61276a61275d8260901c63ffffffff1690565b63ffffffff1660a0860152565b61278a61277d8260b01c63ffffffff1690565b63ffffffff1660c0860152565b60d01c62ffffff1690565b62ffffff16910152565b156127a657565b60405162461bcd60e51b815260206004820152600c60248201526b1cdd185b19481c995c1bdc9d60a21b6044820152606490fd5b156127e157565b60405162461bcd60e51b815260206004820152601860248201527f756e617574686f72697a6564207472616e736d697474657200000000000000006044820152606490fd5b1561282d57565b60405162461bcd60e51b81526020600482015260156024820152740c6dedcccd2ce88d2cecae6e840dad2e6dac2e8c6d605b1b6044820152606490fd5b9060ff169060ff16019060ff821161204f57565b1561288557565b60405162461bcd60e51b815260206004820152601a60248201527f77726f6e67206e756d626572206f66207369676e6174757265730000000000006044820152606490fd5b156128d157565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e617475726573206f7574206f6620726567697374726174696f6e00006044820152606490fd5b90815260808101929160609160200137565b60405190612935826108d8565b5f6020838281520152565b9060405161294d816108d8565b60208193548060ff161515835260081c60ff1660ff16910152565b1561296f57565b60405162461bcd60e51b815260206004820152600f60248201526e39b4b3b730ba3ab9329032b93937b960891b6044820152606490fd5b156129ad57565b60405162461bcd60e51b815260206004820152601060248201526f323ab83634b1b0ba329039b4b3b732b960811b6044820152606490fd5b91969592965a956129f46126a0565b9564ffffffffff6024351695612a2b612a1560208a015164ffffffffff1690565b8864ffffffffff169064ffffffffff161061279f565b335f908152600260205260409020612a4e90612a49905b5460ff1690565b6127da565b600a549a612a60600435809d14612826565b612a6e848483888a8c613e44565b612a97612a90612a8a612a828c5160ff1690565b60019061286a565b60ff1690565b821461287e565b612aa28482146128ca565b612aad3687896109bc565b60208151910120604051612ad981612acb6004602083019586612916565b03601f19810183528261090e565b519020935f95612ae7612928565b505f95600895601b95905b858910612b585750505050505050505061093e969792612b4a9492612b3c837e01010101010101010101010101010101010101010101010101010101010101612b439516146129a6565b36916109bc565b9184614191565b339263ffffffff1691614461565b90919293949596979860208a10156120195760205f8b89612bc4612b9c612b93848f612b8c908c831a60ff1660ff1661286a565b948d6125fa565b35938c896125fa565b356040519384938b85909493926060926080830196835260ff16602083015260408201520152565b838052039060015afa156107f857600190612c33612c29612c216020612c07612c025f5160601b60601c60601b60601c5f52600360205260405f2090565b612940565b612c19612c148251151590565b612968565b015160ff1690565b8c0260ff1690565b60019060ff161b90565b0199019796959493929190612af2565b15612c4a57565b60405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606490fd5b9190820391821161204f57565b15612c9a57565b60405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606490fd5b81810392915f13801582851316918412161761204f57565b929391959095612cfa61375b565b612d08601f85511115613185565b612d1584518851146131c4565b612d2f612d23826003613209565b85519060ff1610613220565b612d3b8160ff1661468a565b845160208087019190912060408051600160f81b9381019384527f0000000000000000000000000000000000000000000000000000000000000000821b60218201527f000000000000000000000000000000000000000000000000000000000000000090911b6039820152612dc19290612db88160518101612acb565b5190201461326c565b612dc9610940565b9384526020840196875260ff166040840190815260608401948552612dfb608085019384906001600160401b03169052565b60a08401958652600b805465ffffffffff0019169055612e19613a1e565b6004545f5b818110613110575050612e2f613332565b612e3761336f565b5f94855b85518051821015612f485790612f4281612f3d612ef5612e7b838f612ed08f8f612edb90612ea6612ea16120ef60019f612e88612e7b8b612a42936133ac565b516001600160a01b031690565b6001600160a01b03165f90815260036020526040902090565b6133c0565b612ed6612e88612e7b8860ff169c8d94612ed0612ec161092f565b600181529660ff166020880152565b516133ac565b61340c565b612f13612f0e6120ef612a42612ef5612e7b8989516133ac565b6001600160a01b03165f90815260026020526040902090565b613443565b612f2d612f1e61094f565b600181529860ff1660208a0152565b6001600160601b03166040880152565b6134c0565b01612e3b565b5050927f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e059550956130b29297919496612f818851613509565b612f8b835161355d565b612faf612f99875160ff1690565b60ff8019600b54169160ff1660ff161617600b55565b612fc1600d5460201c63ffffffff1690565b600d805467ffffffff0000000019164360201b67ffffffff000000001617905594613023613004600163ffffffff16612fff600d5463ffffffff1690565b612566565b63ffffffff8019600d54169163ffffffff1663ffffffff161617600d55565b61306d613068613038600d5463ffffffff1690565b8b5187518b5160ff1686519161305589516001600160401b031690565b8a519590949063ffffffff1630466146cb565b600a55565b600a5496613080600d5463ffffffff1690565b946130a36130938c519251935160ff1690565b935194516001600160401b031690565b945195604051998a998a6135b1565b0390a16130c7600b5460301c63ffffffff1690565b915f5b82515181101561310a5780613104856130e4600194611ffe565b908054909263ffffffff60039390931b83811b199092169216901b179055565b016130ca565b50915050565b805f61317b6131366131266001959c9b9c6132b0565b90549060031b1c60601b60601c90565b82613161613146613126876132c8565b6001600160a01b039093165f90815260036020526040902090565b556001600160a01b03165f90815260026020526040902090565b5501969596612e1e565b1561318c57565b60405162461bcd60e51b815260206004820152601060248201526f746f6f206d616e79206f7261636c657360801b6044820152606490fd5b156131cb57565b60405162461bcd60e51b81526020600482015260166024820152750dee4c2c6d8ca40d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606490fd5b9060ff169060ff1602908160ff1691820361204f57565b1561322757565b60405162461bcd60e51b815260206004820152601860248201527f6661756c74792d6f7261636c65206620746f6f206869676800000000000000006044820152606490fd5b1561327357565b60405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206f6e636861696e436f6e66696760581b6044820152606490fd5b6004548110156120195760045f5260205f2001905f90565b6005548110156120195760055f5260205f2001905f90565b5f5b8281106132ee57505050565b5f828201556001016132e2565b906801000000000000000081116108d35781549080835581811061331e57505050565b61093e925f528060205f20019103906132e0565b6004545f600455806133415750565b60045f5261093e907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b6132e0565b6005545f6005558061337e5750565b60055f5261093e907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db06132e0565b80518210156120195760209160051b010190565b156133c757565b60405162461bcd60e51b815260206004820152601760248201527f7265706561746564207369676e657220616464726573730000000000000000006044820152606490fd5b602061093e9261342b81511515849060ff801983541691151516179055565b0151815461ff00191660089190911b61ff0016179055565b1561344a57565b60405162461bcd60e51b815260206004820152601c60248201527f7265706561746564207472616e736d69747465722061646472657373000000006044820152606490fd5b80546dffffffffffffffffffffffff0000191660109290921b6dffffffffffffffffffffffff000016919091179055565b604061093e926134df81511515849060ff801983541691151516179055565b6020810151835461ff00191660089190911b61ff001617835501516001600160601b03169061348f565b8051906001600160401b0382116108d3576020906135288360046132fb565b0160045f5260205f205f5b8381106135405750505050565b82516001600160a01b031681830155602090920191600101613533565b8051906001600160401b0382116108d35760209061357c8360056132fb565b0160055f5260205f205f5b8381106135945750505050565b82516001600160a01b031681830155602090920191600101613587565b95936135fa906103cf9a98946136089461361e989463ffffffff168a5260208a015263ffffffff166001600160401b0316604089015261012060608901526101208801906107fd565b9086820360808801526107fd565b9160ff1660a085015283820360c085015261039a565b926001600160401b031660e082015261010081840391015261039a565b60601b60601c60601b60601c5f52600260205260405f2061369b6120ef60405192613665846108b8565b54928360ff1615159081815260408560081c60ff1660ff169586602084015260101c60a01b60a01c60a01b60a01c910152151590565b6136be576103cf9061214c61213c612137612130600b5460301c63ffffffff1690565b505f90565b156136ca57565b60405162461bcd60e51b815260206004820152601d60248201527f6f6e6c792063757272656e742070617965652063616e207570646174650000006044820152606490fd5b1561371657565b60405162461bcd60e51b815260206004820152601760248201527f63616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606490fd5b5f546001600160a01b0316330361376e57565b60405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606490fd5b604051906006825f5b601f600782011061387b5750905463ffffffff8116825261386f9160c0906137ee602082018460201c63ffffffff1663ffffffff169052565b613809604082018460401c63ffffffff1663ffffffff169052565b613824606082018460601c63ffffffff1663ffffffff169052565b61383f608082018460801c63ffffffff1663ffffffff169052565b61385a60a082018460a01c63ffffffff1663ffffffff169052565b019060c01c63ffffffff1663ffffffff169052565b61093e6103e08361090e565b90600161010060089261394b865461389e838263ffffffff1663ffffffff169052565b6138b9602084018260201c63ffffffff1663ffffffff169052565b6138d4604084018260401c63ffffffff1663ffffffff169052565b6138ef606084018260601c63ffffffff1663ffffffff169052565b61390a608084018260801c63ffffffff1663ffffffff169052565b61392560a084018260a01c63ffffffff1663ffffffff169052565b61394060c084018260c01c63ffffffff1663ffffffff169052565b60e090811c90830152565b01930191019190916137b5565b90601f8110156120195760051b0190565b5f5b600381106139c357505f905f5b60078110613987575050600955565b909160206139ba60019261399f865163ffffffff1690565b908560021b63ffffffff809160031b9316831b921b19161790565b93019101613978565b91905f925f5b600881106139e25750600191929381600601550161396b565b91936020613a156001926139fa885163ffffffff1690565b908660021b63ffffffff809160031b9316831b921b19161790565b950192016139c9565b6011546001600160a01b031690613a3d600b5460301c63ffffffff1690565b91613a466137ac565b90613a4f612487565b905f805b8351811015613bf157613a7f612178613a72612ef5612e7b85896133ac565b5460101c60a01b60a01c90565b613a9883613a93612ef5612e7b868a6133ac565b61348f565b633b9aca00613ac5610f1b613aba613ab0868b613958565b5163ffffffff1690565b8b0363ffffffff1690565b613ada610f1b600b5460901c63ffffffff1690565b0202019081613aee575b6001915001613a53565b613b1a61118f613b01612e7b84896133ac565b6001600160a01b03165f90815260136020526040902090565b60405163a9059cbb60e01b81526001600160a01b038281166004830152602482018590529093908616916020856044815f875af19485156107f857600195613b68915f91613bd95750612c93565b613b818b613b76868c613958565b9063ffffffff169052565b7fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c613bd1613bb2612e7b878c6133ac565b6040519485526001600160a01b03938416949316929081906020820190565b0390a4613ae4565b6116c4915060203d81116107f1576107e3818361090e565b5050505061093e919250613969565b6001600160a01b0381165f908152600260205260409020613c2090611fb4565b90613c2e6120ef8351151590565b613d4c57613c3b81612090565b80613c4557505050565b6001600160a01b0382165f908152601360205260409020613c659061118f565b92613c7861064e60115460601b60601c90565b60405163a9059cbb60e01b81526001600160a01b0386166004820152602481018490529190602090839060449082905f905af19182156107f857613ce992613cc6915f916116ab5750612c93565b6130e46121376020613ce0600b5460301c63ffffffff1690565b93015160ff1690565b6001600160a01b0382165f908152600260205260408120613d0a919061348f565b6011546040519182526001600160a01b039081169381169216907fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c90602090a4565b5050565b906001600160501b03821663ffffffff8111613dea579060409163ffffffff1663ffffffff1663ffffffff165f52600c602052815f2092613dd2613dc8611f5f855196613d9c886108b8565b54601781900b80895263ffffffff60c083901c1660208a0181905260e09290921c979098018790529690565b9363ffffffff1690565b91819460170b9363ffffffff169263ffffffff169190565b505f91508190819081908190565b15613dff57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c64617461206c656e677468206d69736d6174636800000000000000006044820152606490fd5b5093925050826101440192836101441161204f578160051b918083046020149015171561204f570190610144820180931161204f578060051b908082046020149015171561204f5761014491010180911161204f5761093e903614613df8565b15613eab57565b60405162461bcd60e51b815260206004820152601e60248201527f6e756d206f62736572766174696f6e73206f7574206f6620626f756e647300006044820152606490fd5b15613ef757565b60405162461bcd60e51b815260206004820152601e60248201527f746f6f206665772076616c75657320746f207472757374206d656469616e00006044820152606490fd5b15613f4357565b60405162461bcd60e51b815260206004820152601e60248201527f6d656469616e206973206f7574206f66206d696e2d6d61782072616e676500006044820152606490fd5b63ffffffff1663ffffffff811461204f5760010190565b8051600b805460208401516040850151606086015160309190911b69ffffffff0000000000001660089290921b65ffffffffff001660ff9095166dffffffffffffffffffffffffffff1990931692909217939093179290921760509290921b63ffffffff60501b1691909117905561093e906140cd9060e09061405161402c608083015163ffffffff1690565b600b805463ffffffff60701b191660709290921b63ffffffff60701b16919091179055565b61408a61406560a083015163ffffffff1690565b600b805463ffffffff60901b191660909290921b63ffffffff60901b16919091179055565b6140c361409e60c083015163ffffffff1690565b600b805463ffffffff60b01b191660b09290921b63ffffffff60b01b16919091179055565b015162ffffff1690565b600b805462ffffff60d01b191660d09290921b62ffffff60d01b16919091179055565b959897969492909161010087019260170b875260601b60601c602087015263ffffffff16604086015261010060608601528251809152602061012086019301905f5b81811061417857505050916141666141598360e0958761093e99989603608087015261039a565b9760a084019060170b9052565b60c0820152019064ffffffffff169052565b825160170b855260209485019490920191600101614132565b9161442f61436b9361421f936141a96103cf9761479e565b907fc797025feeeaf2cd924c99e9205acb8ec04d5cad21c41ce637a38fb6dee6016a604083016141de601f8251511115613ea4565b6141f96141ec865160ff1690565b8251519060ff1610613ef0565b64ffffffffff8716602086015261422661421f8251614219815160011c90565b906133ac565b5160170b90565b926143878460170b98897f000000000000000000000000000000000000000000000000000000000000000060170b131580614434575b61426590613f3c565b61434060408901986142906142866142818c5163ffffffff1690565b613f88565b63ffffffff168b52565b61433b6142a18a5163ffffffff1690565b6142c16142ac61094f565b60178c900b81529163ffffffff166020830152565b63ffffffff421660408201526142f86142de8d5163ffffffff1690565b63ffffffff1663ffffffff165f52600c60205260405f2090565b8151602083015160409093015163ffffffff60c01b60c09490941b939093166001600160c01b039091161760e09290921b6001600160e01b031916919091179055565b613f9f565b875163ffffffff1692614357885163ffffffff1690565b9451602089015160608a019e8f5160170b90565b9160405197889763ffffffff1663ffffffff169a3390896140f0565b0390a26143a661439b835163ffffffff1690565b915163ffffffff1690565b60405163ffffffff91821681525f92909116907f0109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac6027190602090a3805163ffffffff1663ffffffff16837f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f6040518061442242829190602083019252565b0390a35163ffffffff1690565b614916565b507f000000000000000000000000000000000000000000000000000000000000000060170b8a131561425c565b919060170b905f82126123cb5761454c916144fb916144e2906144b4633b9aca003a04608088015163ffffffff16906144a160608a015163ffffffff1690565b63ffffffff169163ffffffff1690614a0d565b5a916144d16144c960e08a015162ffffff1690565b62ffffff1690565b913660041b9163ffffffff16614a32565b670de0b6b3a76400006001600160c01b03909216020490565b633b9aca0061453b610f1b60c0614529613a728960601b60601c60601b60601c5f52600260205260405f2090565b60a01b60a01c96015163ffffffff1690565b02908301016001600160601b031690565b906001600160601b03821610613d4c576001600160a01b039091165f90815260026020526040902061093e919061348f565b63ffffffff81116136be5763ffffffff165f908152600c602052604090205460170b90565b63ffffffff81116136be5763ffffffff165f908152600c602052604090205460e01c90565b5f906145d2612487565b805192600b548060301c63ffffffff166145ea6137ac565b5f915b878310614649575050509061215f612165610f1b6146119460901c63ffffffff1690565b925f915b81831061462157505050565b909193614640600191612184612178613a72612ef5612e7b8b896133ac565b94019190614615565b90919361466e600191612184610f1b614668613ab08a899e9c9e613958565b86612032565b940191909694966145ed565b818110614685575090565b905090565b1561469157565b60405162461bcd60e51b815260206004820152601260248201527166206d75737420626520706f73697469766560701b6044820152606490fd5b9794919693909592604051978897602089019a8b5260601b60601c60408901526001600160401b031660608801526080870161012090526101408701614710916107fd565b868103601f190160a0880152614725916107fd565b9060ff1660c0860152601f198582030160e08601526147439161039a565b906001600160401b0316610100840152601f19838203016101208401526147699161039a565b03601f198101825261477b908261090e565b5190206001600160f01b0316600160f01b1790565b51908160170b820361035657565b905f60606040516147ae816108f3565b8281528160208201528160408201520152815182019160808160208501940312610356576020810151906147e1826105d0565b604081015160608201516001600160401b0381116103565782019085603f83011215610356576020820151956148168761186c565b92614824604051948561090e565b8784526020808086019960051b8301010191821161035657604001965b8188106148bf5750506103cf939495506148849061486b8361486560808701614790565b95614a90565b6148928351916040519384916020830160209181520190565b03601f19810184528361090e565b81526148ab61489f61095e565b63ffffffff9096168652565b6020850152604084015260170b6060830152565b602080916148cc8a614790565b815201970196614841565b156148de57565b60405162461bcd60e51b815260206004820152601060248201526f696e73756666696369656e742067617360801b6044820152606490fd5b9061491f612583565b9061493161064e835160601b60601c90565b6001600160a01b031615614a085761093e92614a03926149f8614955600184612032565b926149ea61498361497d611a758763ffffffff1663ffffffff165f52600c60205260405f2090565b60170b90565b956149a961064e61499b602088015163ffffffff1690565b96516001600160a01b031690565b9560405197889463beed9b5160e01b602087015263ffffffff169163ffffffff16602486019094939260609260808301968352602083015260408201520152565b03601f19810185528461090e565b63ffffffff16614af7565b6148d7565b505050565b6103cf92918190808210614a23575b505061467a565b8192500360011c015f80614a1c565b9392919092808510614a4c57633b9aca0094030101020290565b606460405162461bcd60e51b815260206004820152602060248201527f6c6566744761732063616e6e6f742065786365656420696e697469616c4761736044820152fd5b90516001600160fb1b038116810361204f5760051b60a001908160a01161204f575103614ab957565b60405162461bcd60e51b81526020600482015260166024820152750e4cae0dee4e840d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606490fd5b5f9392915a611388811015614b0c5750505050565b6113871980820160061c909103018210614b27575b806123cb565b5f809495508392916020829551940192f1506001905f8080614b2156