solc-0.8.36-fakeopcode 0x7d4e742018fb52e48b08be73d041c18b21de6fb5 via-ir-high-runs

21190 bytes

60806040526004361015610011575f80fd5b5f3560e01c80630a756983146103045780630eafb25b146102ff578063181f5a77146102fa57806322adbc78146102f557806329937268146102f0578063313ce567146102eb5780634fb17470146102e657806350d25bcd146102e157806354fd4d50146102dc578063643dc105146102d7578063666cab8d146102d2578063668a0f02146102cd5780636b14daf8146102c857806370da2f67146102c35780637284e416146102be57806379ba5097146102b95780638038e4a1146102b457806381ff7048146102af5780638205bf6a146102aa5780638823da6c146102a55780638ac28d5a146102a05780638da5cb5b1461029b57806398e5b12a146102965780639a6fc8f5146102915780639bd2c0b11461028c5780639c849b30146102875780639e3ceeab14610282578063a118f2491461027d578063afcb95d714610278578063b121e14714610273578063b1dc65a41461026e578063b5ab58dc14610269578063b633620c14610264578063c10753291461025f578063c4c92b371461025a578063d09dc33914610255578063daffc4b514610250578063dc7f01241461024b578063e3d0e71214610246578063e4902f8214610241578063e5fe45771461023c578063e76d516814610237578063eb45716314610232578063eb5dcd6c1461022d578063f2fde38b14610228578063fbffd2c1146102235763feaf968c1461021e575f80fd5b6121b7565b6120f8565b611ff4565b611ed9565b611d60565b611d38565b611c0a565b611bd5565b611b28565b611a60565b611a38565b61198f565b611967565b611759565b61172b565b6116fd565b611652565b61156a565b611521565b611482565b6113c3565b611204565b611193565b611117565b610f7a565b610f4c565b610ec2565b610e34565b610de9565b610da3565b610d4d565b610c55565b610b3d565b610b00565b610aad565b6108e9565b6108ba565b6105f8565b6105cf565b610573565b610537565b6104fa565b610499565b61045c565b6103d3565b61036b565b34610356575f6003193601126103565761031c613c5b565b6015548060ff1661032957005b60ff19166015557f3be8a977a014527b50ae38adda80b56911c267328965c98ddc385d248f5396385f80a1005b5f80fd5b806001600160a01b03160361035657565b3461035657602060031936011261035657602061039260043561038d8161035a565b6123ad565b604051908152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103d092818152019061039a565b90565b34610356575f600319360112610356576104586040516103f46060826109ab565b602481527f416363657373436f6e74726f6c6c65644f43523241676772656761746f72203160208201527f2e302e3000000000000000000000000000000000000000000000000000000000604082015260405191829160208352602083019061039a565b0390f35b34610356575f6003193601126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060170b8152f35b34610356575f60031936011261035657600b546040805163ffffffff605084901c81168252607084901c81166020830152609084901c81169282019290925260b083901c909116606082015260d09190911c62ffffff16608082015260a090f35b34610356575f6003193601126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060ff168152f35b34610356576040600319360112610356576105716004356105578161035a565b602435906105648261035a565b61056c613c5b565b61254a565b005b34610356575f6003193601126103565761059e6105996105933636610a28565b3361288e565b612771565b600b5460301c63ffffffff1663ffffffff1663ffffffff165f52600c602052602060405f205460170b604051908152f35b34610356575f60031936011261035657602060405160068152f35b8063ffffffff160361035657565b346103565760a060031936011261035657600435610615816105ea565b602435610621816105ea565b6044359161062e836105ea565b60643561063a816105ea565b608435908162ffffff168203610356576012546001600160a01b03169461067761066b5f546001600160a01b031690565b6001600160a01b031690565b33149586156107b9575b50906107b492916106b27f0bf184bf1bba9699114bdceddaf338a1b364252c5e497cc01918dde92031713f976127f2565b6106ba613f24565b600b80547cffffff000000000000000000000000000000000000000000000000000060d086901b167fffffff00000000000000000000000000000000000000ffffffffffffffffffff9091166dffffffff00000000000000000000605089901b161771ffffffff000000000000000000000000000060708a901b161775ffffffff000000000000000000000000000000000000609085901b161779ffffffff0000000000000000000000000000000000000000000060b086901b16171790556040805163ffffffff968716815296861660208801529085169086015292909216606084015262ffffff9091166080830152819060a0820190565b0390a1005b6040517f6b14daf8000000000000000000000000000000000000000000000000000000008152965090929190602090879081806107fa3633600484016127bc565b03916001600160a01b03165afa928315610879576106b26107b4947f0bf184bf1bba9699114bdceddaf338a1b364252c5e497cc01918dde92031713f985f9161084a575b50975050909192610681565b61086c915060203d602011610872575b61086481836109ab565b8101906124e7565b5f61083e565b503d61085a565b6124dc565b90602080835192838152019201905f5b81811061089b5750505090565b82516001600160a01b031684526020938401939092019160010161088e565b34610356575f600319360112610356576104586108d561283d565b60405191829160208352602083019061087e565b34610356575f600319360112610356576109096105996105933636610a28565b6020600b5460301c63ffffffff1663ffffffff16604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761096e57604052565b610925565b6040810190811067ffffffffffffffff82111761096e57604052565b6080810190811067ffffffffffffffff82111761096e57604052565b90601f601f19910116810190811067ffffffffffffffff82111761096e57604052565b604051906109dd6040836109ab565b565b604051906109dd60c0836109ab565b604051906109dd6060836109ab565b604051906109dd6080836109ab565b67ffffffffffffffff811161096e57601f01601f191660200190565b919091610a3481610a0c565b610a4160405191826109ab565b809382825282116103565781815f9384602080950137010152565b929192610a6882610a0c565b91610a7660405193846109ab565b829481845281830111610356578281602093845f960137010152565b9080601f83011215610356578160206103d093359101610a5c565b3461035657604060031936011261035657600435610aca8161035a565b60243567ffffffffffffffff811161035657602091610af0610af6923690600401610a92565b9061288e565b6040519015158152f35b34610356575f6003193601126103565760206040517f000000000000000000000000000000000000000000000000000000000000000060170b8152f35b34610356575f60031936011261035657610b5d6105996105933636610a28565b6040515f6010548060011c9060018116908115610c4b575b602083108214610c1e578285526020850191908115610c055750600114610bb3575b61045884610ba7818603826109ab565b604051918291826103bf565b60105f9081529250907f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b818410610bf157505001610ba782610b97565b805484840152602090930192600101610bde565b60ff191682525090151560051b019050610ba782610b97565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b75565b34610356575f6003193601126103565760015433906001600160a01b03168103610d09575f546001600160a01b03165f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905590600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556001600160a01b0390811691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b606460405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152fd5b34610356575f60031936011261035657610d65613c5b565b6015548060ff1615610d7357005b60ff19166001176015557faebf329500988c6488a0074e5a0a9ff304561fc5c6fc877aeb1d59c8282c34805f80a1005b34610356575f600319360112610356576060600d54600a54604051918063ffffffff1663ffffffff16835260201c63ffffffff1663ffffffff1660208301526040820152f35b34610356575f60031936011261035657610e096105996105933636610a28565b600b5460301c63ffffffff165f908152600c602090815260409182902054915160e09290921c825290f35b3461035657602060031936011261035657600435610e518161035a565b610e59613c5b565b6001600160a01b0316806001600160a01b0316805f52601660205260405f205460ff16610e8257005b7f3d68a6fce901d20453d1a7aa06bf3950302a735948037deb182a8db66df2a0d1916020915f526016825260405f2060ff198154169055604051908152a1005b3461035657602060031936011261035657600435610edf8161035a565b6001600160a01b038082165f90815260136020526040902054163303610f08576105719061416b565b606460405162461bcd60e51b815260206004820152601760248201527f4f6e6c792070617965652063616e2077697468647261770000000000000000006044820152fd5b34610356575f6003193601126103565760205f546001600160a01b0316604051906001600160a01b03168152f35b34610356575f60031936011261035657610f9e61066b5f546001600160a01b031690565b33908114801561107c575b61101861045892610fbc61105f936128d0565b600b547f41e3990591fd372502daa15842da15bc7f41c75309ab3ff4f56f1848c178825c611001610ff48360081c64ffffffffff1690565b9260301c63ffffffff1690565b600a54909361105461102163ffffffff600887901c165b63ffffffff1690565b6040805194855263ffffffff909116602085015260ff909516948301949094526001600160a01b03169281906060820190565b0390a260019061291b565b60405169ffffffffffffffffffff90911681529081906020820190565b5061109261066b600f546001600160a01b031690565b602060405180927f6b14daf800000000000000000000000000000000000000000000000000000000825281806110cc3633600484016127bc565b03915afa80156108795761045892610fbc6110189261105f945f916110f8575b50935050925050610fa9565b611111915060203d6020116108725761086481836109ab565b5f6110ec565b34610356576020600319360112610356576004358069ffffffffffffffffffff1681036103565761115a610458916111556105996105933636610a28565b614304565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015290819060a0820190565b34610356575f6003193601126103565760406111ad612938565b805160209182015183516001600160a01b03909216825263ffffffff1691810191909152f35b9181601f840112156103565782359167ffffffffffffffff8311610356576020808501948460051b01011161035657565b346103565760406003193601126103565760043567ffffffffffffffff8111610356576112359036906004016111d3565b9060243567ffffffffffffffff8111610356576112569036906004016111d3565b9061125f613c5b565b61126a828514612964565b5f91825b85811061127757005b8061128d61128860019389896129af565b6129bf565b61129b6112888386886129af565b906112d06112c3826001600160a01b03166001600160a01b03165f52601360205260405f2090565b546001600160a01b031690565b6001600160a01b03169187831480156113b1575b6112ed906129c9565b61135b81611315846001600160a01b03166001600160a01b03165f52601360205260405f2090565b906001600160a01b037fffffffffffffffffffffffff0000000000000000000000000000000000000000835416916001600160a01b03166001600160a01b031616179055565b6001600160a01b0316808303611375575b5050500161126e565b6001600160a01b0390811692811691167f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b35f80a45f808061136c565b506001600160a01b03811683146112e4565b34610356576020600319360112610356576004356113e08161035a565b6113e8613c5b565b600f5490816001600160a01b0316816001600160a01b031692816001600160a01b0316840361141357005b7fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0393841617600f556040805191841682529190921660208301527f27b89aede8b560578baaa25ee5ce3852c5eecad1e114b941bbd89e1eb4bae6349190819081016107b4565b346103565760206003193601126103565760043561149f8161035a565b6114a7613c5b565b6001600160a01b0381165f8181526016602052604090205460ff16156114c957005b7f87286ad1f399c8e82bf0c4ef4fcdc570ea2e1e92176e5c848b6413545b885db4916107b4915f52601660205260405f20600160ff198254161790556040519182918291909160208101926001600160a01b03169052565b34610356575f60031936011261035657600a54600b546060919060101c63ffffffff1664ffffffffff1663ffffffff16604051915f8352602083015263ffffffff166040820152f35b34610356576020600319360112610356576004356115878161035a565b6001600160a01b038082165f81815260146020526040902054909133916115b091168214612a14565b61161e6115da6112c3856001600160a01b03166001600160a01b03165f52601360205260405f2090565b9361160333611315836001600160a01b03166001600160a01b03165f52601360205260405f2090565b6001600160a01b03165f908152601460205260408120611315565b6001600160a01b039081169216907f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b35f80a4005b346103565760e060031936011261035657366064116103565760643567ffffffffffffffff811161035657366023820112156103565780600401359067ffffffffffffffff82116103565736602483830101116103565760843567ffffffffffffffff8111610356576116c99036906004016111d3565b9260a4359367ffffffffffffffff8511610356576116ee6105719536906004016111d3565b939092602460c4359601612dd2565b346103565760206003193601126103565760206103926004356117266105996105933636610a28565b614c5a565b346103565760206003193601126103565760206103926004356117546105996105933636610a28565b614c7f565b34610356576040600319360112610356576004356117768161035a565b6024359061178e61066b5f546001600160a01b031690565b331480156118db575b6117a0906127f2565b6117a8614ca4565b906117be61066b6011546001600160a01b031690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015293602085602481855afa9081156108795761182260209561182793611874985f916118ae575b5061181d82821015613036565b613081565b614d56565b915f6040518096819582947fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919360408101946001600160a01b031681520152565b03925af1801561087957610571915f9161188f575b5061308e565b6118a8915060203d6020116108725761086481836109ab565b5f611889565b6118ce9150883d8a116118d4575b6118c681836109ab565b8101906124cd565b5f611810565b503d6118bc565b506118f161066b6012546001600160a01b031690565b602060405180927f6b14daf8000000000000000000000000000000000000000000000000000000008252818061192b3633600484016127bc565b03915afa8015610879576117a0915f91611948575b509050611797565b611961915060203d6020116108725761086481836109ab565b5f611940565b34610356575f600319360112610356576012546040516001600160a01b039091168152602090f35b34610356575f600319360112610356576011546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156108795761045891611a09915f91611a19575b50611a03614ca4565b906130d9565b6040519081529081906020820190565b611a32915060203d6020116118d4576118c681836109ab565b5f6119fa565b34610356575f60031936011261035657600f546040516001600160a01b039091168152602090f35b34610356575f60031936011261035657602060155460ff166040519015158152f35b67ffffffffffffffff811161096e5760051b60200190565b9080601f83011215610356578135611ab181611a82565b92611abf60405194856109ab565b81845260208085019260051b82010192831161035657602001905b828210611ae75750505090565b602080918335611af68161035a565b815201910190611ada565b604435908160ff16820361035657565b608435908167ffffffffffffffff16820361035657565b346103565760c06003193601126103565760043567ffffffffffffffff811161035657611b59903690600401611a9a565b60243567ffffffffffffffff811161035657611b79903690600401611a9a565b90611b82611b01565b60643567ffffffffffffffff811161035657611ba2903690600401610a92565b611baa611b11565b9160a4359467ffffffffffffffff861161035657611bcf610571963690600401610a92565b946130f1565b34610356576020600319360112610356576020611bfc600435611bf78161035a565b613b27565b6040519063ffffffff168152f35b34610356575f60031936011261035657323303611cf457600a54600b5490610458611c3c8360081c64ffffffffff1690565b92611c6a611c5d611c5663ffffffff600888901c16611018565b9560ff1690565b9160301c63ffffffff1690565b611cba611cb3611c98611c918463ffffffff1663ffffffff165f52600c60205260405f2090565b5460170b90565b9263ffffffff1663ffffffff165f52600c60205260405f2090565b5460e01c90565b6040805195865263ffffffff968716602087015260ff9093169285019290925260170b6060840152909216608082015290819060a0820190565b606460405162461bcd60e51b815260206004820152601460248201527f4f6e6c792063616c6c61626c6520627920454f410000000000000000000000006044820152fd5b34610356575f600319360112610356576011546040516001600160a01b039091168152602090f35b3461035657604060031936011261035657600435611d7d8161035a565b602435611d89816105ea565b611d91613c5b565b611d99612938565b91611dab83516001600160a01b031690565b91816001600160a01b031680936001600160a01b031614801590611ec2575b611dd057005b611e757fb04e3a37abe9c0fcdfebdeae019a8e2b12ddf53f5d55ffb0caccc1bedaca154192611e0f611e006109ce565b6001600160a01b039092168252565b63ffffffff8316602082015251600e80547fffffffffffffffff000000000000000000000000000000000000000000000000166001600160a01b039092169190911760a084901b77ffffffff000000000000000000000000000000000000000016179055565b611e976020611e8b86516001600160a01b031690565b95015163ffffffff1690565b6040805163ffffffff92831681529290911660208301526001600160a01b03938416949093169290a3005b50602084015163ffffffff82811691161415611dca565b3461035657604060031936011261035657600435611ef68161035a565b602435611f028161035a565b611faa826001600160a01b03166001600160a01b031691825f526013602052611f3861066b60405f20546001600160a01b031690565b339490611f46908614613bc5565b816001600160a01b0316928392611f5f84881415613c10565b611315611f896112c3856001600160a01b03166001600160a01b03165f52601460205260405f2090565b936001600160a01b03166001600160a01b03165f52601460205260405f2090565b6001600160a01b031603611fba57005b6001600160a01b0316916001600160a01b0316907f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e383675f80a4005b34610356576020600319360112610356576004356120118161035a565b612019613c5b565b6001600160a01b038116903382146120b457612076906001600160a01b037fffffffffffffffffffffffff000000000000000000000000000000000000000060015416916001600160a01b03166001600160a01b03161617600155565b5f546001600160a01b03166001600160a01b0391821691167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12785f80a3005b606460405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152fd5b34610356576020600319360112610356576004356121158161035a565b61211d613c5b565b60125490816001600160a01b0316816001600160a01b031692816001600160a01b0316840361214857005b7fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03938416176012556040805191841682529190921660208301527f793cb73064f3c8cde7e187ae515511e6e56d1ee89bf08b82fa60fb70f8d489129190819081016107b4565b34610356575f600319360112610356576121d76105996105933636610a28565b600b5460301c63ffffffff1663ffffffff168063ffffffff165f52600c60205260405f2090610458604061225661224c61224283519661221688610952565b54601781900b80895263ffffffff60c083901c1660208a0181905260e09290921c959098018590529690565b9563ffffffff1690565b9163ffffffff1690565b6040805169ffffffffffffffffffff90951680865260179690960b602086015263ffffffff92831690850152166060830152608082019290925290819060a0820190565b906040516122a781610952565b915460ff80821615158452600882901c16602084015260101c6bffffffffffffffffffffffff166040830152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f82101561231d57601c8260031c6006019260021b1690565b6122d5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9063ffffffff169063ffffffff16039063ffffffff821161236c57565b612322565b90633b9aca00820291808304633b9aca00149015171561236c57565b8181029291811591840414171561236c57565b9190820180921161236c57565b6001600160a01b03166001600160a01b03165f52600260205260405f20604051906123d782610952565b546124266124228260ff16151580855260408460081c60ff1660ff1695866020820152019360101c6bffffffffffffffffffffffff166bffffffffffffffffffffffff168452151590565b1590565b6124c7576124c16124b061249d6124986103d095612492611018612485611018600b549461247f61246f61246a6124638960301c63ffffffff1690565b9360ff1690565b612302565b90549060031b1c63ffffffff1690565b9061234f565b9260901c63ffffffff1690565b9061238d565b612371565b92516bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b906123a0565b50505f90565b90816020910312610356575190565b6040513d5f823e3d90fd5b90816020910312610356575180151581036103565790565b1561250657565b606460405162461bcd60e51b815260206004820152601f60248201527f7472616e736665722072656d61696e696e672066756e6473206661696c6564006044820152fd5b9061255d6011546001600160a01b031690565b6001600160a01b031690826001600160a01b031682811461276b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b0392909216949193602082602481895afa9081156108795761261f92602092612750575b506125da613f24565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03968716600482015295169491829081906024820190565b0381875afa801561087957612683936020925f92612731575b5060405194859283927fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919360408101946001600160a01b031681520152565b03815f875af1918215610879576126ec926126a5915f91612712575b506124ff565b6001600160a01b037fffffffffffffffffffffffff000000000000000000000000000000000000000060115416916001600160a01b03166001600160a01b03161617601155565b7f4966a50c93f855342ccf6c5c0d358b85b91335b2acedc7da0932f691f351711a5f80a3565b61272b915060203d6020116108725761086481836109ab565b5f61269f565b612749919250833d85116118d4576118c681836109ab565b905f612638565b61276690833d85116118d4576118c681836109ab565b6125d1565b50505050565b1561277857565b606460405162461bcd60e51b815260206004820152600960248201527f4e6f2061636365737300000000000000000000000000000000000000000000006044820152fd5b90601f606093601f19926001600160a01b0316845260406020850152806040850152805f868601375f8582860101520116010190565b156127f957565b606460405162461bcd60e51b815260206004820152602060248201527f4f6e6c79206f776e65722662696c6c696e6741646d696e2063616e2063616c6c6044820152fd5b60405190600554808352826020810160055f5260205f20925f5b81811061286c5750506109dd925003836109ab565b84546001600160a01b0316835260019485019487945060209093019201612857565b6001600160a01b03165f8181526016602052604090205460ff16915081156128c2575b81156128bb575090565b3214919050565b60155460ff161591506128b1565b156128d757565b606460405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e6572267265717565737465722063616e2063616c6c0000006044820152fd5b9063ffffffff169063ffffffff16019063ffffffff821161236c57565b6040519061294582610973565b600e546001600160a01b038116835260a01c63ffffffff166020830152565b1561296b57565b606460405162461bcd60e51b815260206004820152602060248201527f7472616e736d6974746572732e73697a6520213d207061796565732e73697a656044820152fd5b919081101561231d5760051b0190565b356103d08161035a565b156129d057565b606460405162461bcd60e51b815260206004820152601160248201527f706179656520616c7265616479207365740000000000000000000000000000006044820152fd5b15612a1b57565b606460405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792070726f706f736564207061796565732063616e20616363657074006044820152fd5b60405190610100820182811067ffffffffffffffff82111761096e576040526109dd8260e0612b55600b548060ff1660ff1684528060081c64ffffffffff1664ffffffffff166020850152612aca612abd8260301c63ffffffff1690565b63ffffffff166040860152565b612aea612add8260501c63ffffffff1690565b63ffffffff166060860152565b612b0a612afd8260701c63ffffffff1690565b63ffffffff166080860152565b612b2a612b1d8260901c63ffffffff1690565b63ffffffff1660a0860152565b612b4a612b3d8260b01c63ffffffff1690565b63ffffffff1660c0860152565b60d01c62ffffff1690565b62ffffff16910152565b15612b6657565b606460405162461bcd60e51b815260206004820152600c60248201527f7374616c65207265706f727400000000000000000000000000000000000000006044820152fd5b15612bb157565b606460405162461bcd60e51b815260206004820152601860248201527f756e617574686f72697a6564207472616e736d697474657200000000000000006044820152fd5b15612bfc57565b606460405162461bcd60e51b815260206004820152601560248201527f636f6e666967446967657374206d69736d6174636800000000000000000000006044820152fd5b9060ff169060ff16019060ff821161236c57565b15612c5b57565b606460405162461bcd60e51b815260206004820152601a60248201527f77726f6e67206e756d626572206f66207369676e6174757265730000000000006044820152fd5b15612ca657565b606460405162461bcd60e51b815260206004820152601e60248201527f7369676e617475726573206f7574206f6620726567697374726174696f6e00006044820152fd5b90815260808101929160609160200137565b60405190612d0982610973565b5f6020838281520152565b90604051612d2181610973565b60208193548060ff161515835260081c60ff1660ff16910152565b15612d4357565b606460405162461bcd60e51b815260206004820152600f60248201527f7369676e6174757265206572726f7200000000000000000000000000000000006044820152fd5b15612d8e57565b606460405162461bcd60e51b815260206004820152601060248201527f6475706c6963617465207369676e6572000000000000000000000000000000006044820152fd5b91969592965a95612de1612a5f565b9564ffffffffff6024351695612e18612e0260208a015164ffffffffff1690565b8864ffffffffff169064ffffffffff1610612b5f565b335f908152600260205260409020612e3b90612e36905b5460ff1690565b612baa565b600a549a612e4d600435809d14612bf5565b612e5b848483888a8c6143fa565b612e84612e7d612e77612e6f8c5160ff1690565b600190612c40565b60ff1690565b8214612c54565b612e8f848214612c9f565b612e9a368789610a5c565b60208151910120604051612ec681612eb86004602083019586612cea565b03601f1981018352826109ab565b519020935f95612ed4612cfc565b505f95600895601b95905b858910612f45575050505050505050506109dd969792612f379492612f29837e01010101010101010101010101010101010101010101010101010101010101612f30951614612d87565b3691610a5c565b9184614804565b339263ffffffff1691614b0f565b90919293949596979860208a101561231d5760205f8b89612fb1612f89612f80848f612f79908c831a60ff1660ff16612c40565b948d6129af565b35938c896129af565b356040519384938b85909493926060926080830196835260ff16602083015260408201520152565b838052039060015afa156108795760019061302661301c6130146020612ffa612ff55f516001600160a01b03166001600160a01b03165f52600360205260405f2090565b612d14565b61300c6130078251151590565b612d3c565b015160ff1690565b8c0260ff1690565b60019060ff161b90565b0199019796959493929190612edf565b1561303d57565b606460405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152fd5b9190820391821161236c57565b1561309557565b606460405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b81810392915f13801582851316918412161761236c57565b9293919590956130ff613c5b565b61310d601f8551111561361c565b61311a8451885114613667565b6131346131288260036136b2565b85519060ff16106136c9565b6131408160ff16614d66565b8451602080870191909120604080517f01000000000000000000000000000000000000000000000000000000000000009381019384527f0000000000000000000000000000000000000000000000000000000000000000821b60218201527f000000000000000000000000000000000000000000000000000000000000000090911b60398201526131e292906131d98160518101612eb8565b51902014613714565b6131ea6109df565b9384526020840196875260ff16604084019081526060840194855261321d6080850193849067ffffffffffffffff169052565b60a08401958652600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff169055613254613f24565b6004545f5b81811061359757505061326a6137e1565b61327261381e565b5f94855b8551805182101561339657906133908161338b6133376132b6838f6133128f8f61331d906132e86132e361242260019f6132c36132b68b612e2f9361385b565b516001600160a01b031690565b6001600160a01b03166001600160a01b03165f52600360205260405f2090565b61386f565b6133186132c36132b68860ff169c8d946133126133036109ce565b600181529660ff166020880152565b5161385b565b6138ba565b61335c613357612422612e2f6133376132b689895161385b565b6001600160a01b03166001600160a01b03165f52600260205260405f2090565b61390f565b6133766133676109ee565b600181529860ff1660208a0152565b6bffffffffffffffffffffffff166040880152565b61395a565b01613276565b5050927f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0595509561353992979194966133cf88516139f1565b6133d98351613a46565b6133fe6133e7875160ff1690565b60ff60ff19600b54169160ff1660ff161617600b55565b613410600d5460201c63ffffffff1690565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff164360201b67ffffffff0000000016179055946134a861346a600163ffffffff16613465600d5463ffffffff1690565b61291b565b63ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600d54169163ffffffff1663ffffffff161617600d55565b6134f36134ee6134bd600d5463ffffffff1690565b8b5187518b5160ff168651916134db895167ffffffffffffffff1690565b8a519590949063ffffffff163046614db1565b600a55565b600a5496613506600d5463ffffffff1690565b9461352a6135198c519251935160ff1690565b9351945167ffffffffffffffff1690565b945195604051998a998a613a9b565b0390a161354e600b5460301c63ffffffff1690565b915f5b825151811015613591578061358b8561356b600194612302565b908054909263ffffffff60039390931b83811b199092169216901b179055565b01613551565b50915050565b805f6136126135c06135ad6001959c9b9c61375f565b90549060031b1c6001600160a01b031690565b826135f16135d06135ad87613777565b926001600160a01b03166001600160a01b03165f52600360205260405f2090565b556001600160a01b03166001600160a01b03165f52600260205260405f2090565b5501969596613259565b1561362357565b606460405162461bcd60e51b815260206004820152601060248201527f746f6f206d616e79206f7261636c6573000000000000000000000000000000006044820152fd5b1561366e57565b606460405162461bcd60e51b815260206004820152601660248201527f6f7261636c65206c656e677468206d69736d61746368000000000000000000006044820152fd5b9060ff169060ff1602908160ff1691820361236c57565b156136d057565b606460405162461bcd60e51b815260206004820152601860248201527f6661756c74792d6f7261636c65206620746f6f206869676800000000000000006044820152fd5b1561371b57565b606460405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206f6e636861696e436f6e66696700000000000000000000006044820152fd5b60045481101561231d5760045f5260205f2001905f90565b60055481101561231d5760055f5260205f2001905f90565b5f5b82811061379d57505050565b5f82820155600101613791565b9068010000000000000000811161096e578154908083558181106137cd57505050565b6109dd925f528060205f200191039061378f565b6004545f600455806137f05750565b60045f526109dd907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b61378f565b6005545f6005558061382d5750565b60055f526109dd907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db061378f565b805182101561231d5760209160051b010190565b1561387657565b606460405162461bcd60e51b815260206004820152601760248201527f7265706561746564207369676e657220616464726573730000000000000000006044820152fd5b60206109dd926138da81511515849060ff60ff1983541691151516179055565b015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1660089190911b61ff0016179055565b1561391657565b606460405162461bcd60e51b815260206004820152601c60248201527f7265706561746564207472616e736d69747465722061646472657373000000006044820152fd5b60406109dd9261397a81511515849060ff60ff1983541691151516179055565b602081015183547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1660089190911b61ff0016178355015181547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1660109190911b6dffffffffffffffffffffffff000016179055565b80519067ffffffffffffffff821161096e57602090613a118360046137aa565b0160045f5260205f205f5b838110613a295750505050565b600190602084516001600160a01b03169401938184015501613a1c565b80519067ffffffffffffffff821161096e57602090613a668360056137aa565b0160055f5260205f205f5b838110613a7e5750505050565b600190602084516001600160a01b03169401938184015501613a71565b9593613ae5906103d09a9894613af394613b09989463ffffffff168a5260208a015263ffffffff1667ffffffffffffffff166040890152610120606089015261012088019061087e565b90868203608088015261087e565b9160ff1660a085015283820360c085015261039a565b9267ffffffffffffffff1660e082015261010081840391015261039a565b6001600160a01b03166001600160a01b03165f52600260205260405f20613b9d61242260405192613b5784610952565b54928360ff1615159081815260408560081c60ff1660ff169586602084015260101c6bffffffffffffffffffffffff166bffffffffffffffffffffffff16910152151590565b613bc0576103d09061247f61246f61246a612463600b5460301c63ffffffff1690565b505f90565b15613bcc57565b606460405162461bcd60e51b815260206004820152601d60248201527f6f6e6c792063757272656e742070617965652063616e207570646174650000006044820152fd5b15613c1757565b606460405162461bcd60e51b815260206004820152601760248201527f63616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152fd5b5f546001600160a01b03163303613c6e57565b606460405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152fd5b604051906006825f5b601f6007820110613d815750905463ffffffff81168252613d759160c090613cf4602082018460201c63ffffffff1663ffffffff169052565b613d0f604082018460401c63ffffffff1663ffffffff169052565b613d2a606082018460601c63ffffffff1663ffffffff169052565b613d45608082018460801c63ffffffff1663ffffffff169052565b613d6060a082018460a01c63ffffffff1663ffffffff169052565b019060c01c63ffffffff1663ffffffff169052565b6109dd6103e0836109ab565b906001610100600892613e518654613da4838263ffffffff1663ffffffff169052565b613dbf602084018260201c63ffffffff1663ffffffff169052565b613dda604084018260401c63ffffffff1663ffffffff169052565b613df5606084018260601c63ffffffff1663ffffffff169052565b613e10608084018260801c63ffffffff1663ffffffff169052565b613e2b60a084018260a01c63ffffffff1663ffffffff169052565b613e4660c084018260c01c63ffffffff1663ffffffff169052565b60e090811c90830152565b0193019101919091613cbb565b90601f81101561231d5760051b0190565b5f5b60038110613ec957505f905f5b60078110613e8d575050600955565b90916020613ec0600192613ea5865163ffffffff1690565b908560021b63ffffffff809160031b9316831b921b19161790565b93019101613e7e565b91905f925f5b60088110613ee857506001919293816006015501613e71565b91936020613f1b600192613f00885163ffffffff1690565b908660021b63ffffffff809160031b9316831b921b19161790565b95019201613ecf565b6011546001600160a01b031690613f43600b5460301c63ffffffff1690565b91613f4c613cb2565b90613f5561283d565b905f805b835181101561415c57613f8d6124b0613f786133376132b6858961385b565b5460101c6bffffffffffffffffffffffff1690565b613fe383613fa16133376132b6868a61385b565b80547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1660109290921b6dffffffffffffffffffffffff000016919091179055565b633b9aca00614010611018614005613ffb868b613e5e565b5163ffffffff1690565b8b0363ffffffff1690565b614025611018600b5460901c63ffffffff1690565b0202019081614039575b6001915001613f59565b61406c6112c361404c6132b6848961385b565b6001600160a01b03166001600160a01b03165f52601360205260405f2090565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018590529093908616916020856044815f875af1948515610879576001956140d3915f91614144575061308e565b6140ec8b6140e1868c613e5e565b9063ffffffff169052565b7fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c61413c61411d6132b6878c61385b565b6040519485526001600160a01b03938416949316929081906020820190565b0390a461402f565b6118a8915060203d81116108725761086481836109ab565b505050506109dd919250613e6f565b614197614192826001600160a01b03166001600160a01b03165f52600260205260405f2090565b61229a565b906141a56124228351151590565b614300576141b2816123ad565b806141bc57505050565b6141e36112c3836001600160a01b03166001600160a01b03165f52601360205260405f2090565b926141f961066b6011546001600160a01b031690565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018490529190602090839060449082905f905af19182156108795761428392614260915f9161188f575061308e565b61356b61246a602061427a600b5460301c63ffffffff1690565b93015160ff1690565b6001600160a01b0382165f9081526002602052604081206142a49190613fa1565b7fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c6142fb6142da6011546001600160a01b031690565b6040519384526001600160a01b039081169581169416929081906020820190565b0390a4565b5050565b9069ffffffffffffffffffff821663ffffffff81116143a1579060409163ffffffff1663ffffffff1663ffffffff165f52600c602052815f209261438961437f61224285519661435388610952565b54601781900b80895263ffffffff60c083901c1660208a0181905260e09290921c979098018790529690565b9363ffffffff1690565b91819460170b9363ffffffff169263ffffffff169190565b505f91508190819081908190565b156143b657565b606460405162461bcd60e51b815260206004820152601860248201527f63616c6c64617461206c656e677468206d69736d6174636800000000000000006044820152fd5b5093925050826101440192836101441161236c578160051b918083046020149015171561236c570190610144820180931161236c578060051b908082046020149015171561236c5761014491010180911161236c576109dd9036146143af565b1561446157565b606460405162461bcd60e51b815260206004820152601e60248201527f6e756d206f62736572766174696f6e73206f7574206f6620626f756e647300006044820152fd5b156144ac57565b606460405162461bcd60e51b815260206004820152601e60248201527f746f6f206665772076616c75657320746f207472757374206d656469616e00006044820152fd5b156144f757565b606460405162461bcd60e51b815260206004820152601e60248201527f6d656469616e206973206f7574206f66206d696e2d6d61782072616e676500006044820152fd5b63ffffffff1663ffffffff811461236c5760010190565b8051600b805460208401516040850151606086015160309190911b69ffffffff0000000000001660089290921b65ffffffffff001660ff9095167fffffffffffffffffffffffffffffffffffff000000000000000000000000000090931692909217939093179290921760509290921b6dffffffff00000000000000000000169190911790556109dd9061470d9060e09061463f6145f7608083015163ffffffff1690565b600b80547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709290921b71ffffffff000000000000000000000000000016919091179055565b61469f61465360a083015163ffffffff1690565b600b80547fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff1660909290921b75ffffffff00000000000000000000000000000000000016919091179055565b6147036146b360c083015163ffffffff1690565b600b80547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1660b09290921b79ffffffff0000000000000000000000000000000000000000000016919091179055565b015162ffffff1690565b600b80547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09290921b7cffffff000000000000000000000000000000000000000000000000000016919091179055565b959897969492909161010087019260170b87526001600160a01b0316602087015263ffffffff16604086015261010060608601528251809152602061012086019301905f5b8181106147eb57505050916147d96147cc8360e095876109dd99989603608087015261039a565b9760a084019060170b9052565b60c0820152019064ffffffffff169052565b825160170b8552602094850194909201916001016147a5565b91614add614a19936148929361481c6103d097614ebb565b907fc797025feeeaf2cd924c99e9205acb8ec04d5cad21c41ce637a38fb6dee6016a60408301614851601f825151111561445a565b61486c61485f865160ff1690565b8251519060ff16106144a5565b64ffffffffff87166020860152614899614892825161488c815160011c90565b9061385b565b5160170b90565b92614a358460170b98897f000000000000000000000000000000000000000000000000000000000000000060170b131580614ae2575b6148d8906144f0565b6149ee60408901986149036148f96148f48c5163ffffffff1690565b61453b565b63ffffffff168b52565b6149e96149148a5163ffffffff1690565b61493461491f6109ee565b60178c900b81529163ffffffff166020830152565b63ffffffff4216604082015261496b6149518d5163ffffffff1690565b63ffffffff1663ffffffff165f52600c60205260405f2090565b8151602083015160409093015160c09390931b7bffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff9091161760e09290921b7fffffffff0000000000000000000000000000000000000000000000000000000016919091179055565b614552565b875163ffffffff1692614a05885163ffffffff1690565b9451602089015160608a019e8f5160170b90565b9160405197889763ffffffff1663ffffffff169a339089614760565b0390a2614a54614a49835163ffffffff1690565b915163ffffffff1690565b60405163ffffffff91821681525f92909116907f0109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac6027190602090a3805163ffffffff1663ffffffff16837f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f60405180614ad042829190602083019252565b0390a35163ffffffff1690565b615040565b507f000000000000000000000000000000000000000000000000000000000000000060170b8a13156148cf565b919060170b905f821261276b57614c1e91614bba91614b9090614b62633b9aca003a04608088015163ffffffff1690614b4f60608a015163ffffffff1690565b63ffffffff169163ffffffff1690615153565b5a91614b7f614b7760e08a015162ffffff1690565b62ffffff1690565b913660041b9163ffffffff16615178565b670de0b6b3a764000077ffffffffffffffffffffffffffffffffffffffffffffffff909216020490565b633b9aca00614c0861101860c0614bee613f78896001600160a01b03166001600160a01b03165f52600260205260405f2090565b6bffffffffffffffffffffffff1696015163ffffffff1690565b02908301016bffffffffffffffffffffffff1690565b90816bffffffffffffffffffffffff161061430057613fa16109dd926001600160a01b03166001600160a01b03165f52600260205260405f2090565b63ffffffff8111613bc05763ffffffff165f908152600c602052604090205460170b90565b63ffffffff8111613bc05763ffffffff165f908152600c602052604090205460e01c90565b5f90614cae61283d565b805192600b548060301c63ffffffff16614cc6613cb2565b5f915b878310614d255750505090612492612498611018614ced9460901c63ffffffff1690565b925f915b818310614cfd57505050565b909193614d1c6001916124c16124b0613f786133376132b68b8961385b565b94019190614cf1565b909193614d4a6001916124c1611018614d44613ffb8a899e9c9e613e5e565b8661234f565b94019190969496614cc9565b818110614d61575090565b905090565b15614d6d57565b606460405162461bcd60e51b815260206004820152601260248201527f66206d75737420626520706f73697469766500000000000000000000000000006044820152fd5b9794919693909592604051978897602089019a8b526001600160a01b0316604089015267ffffffffffffffff1660608801526080870161012090526101408701614dfa9161087e565b868103601f190160a0880152614e0f9161087e565b9060ff1660c0860152848103601f190160e0860152614e2d9161039a565b9067ffffffffffffffff16610100840152828103601f1901610120840152614e549161039a565b03601f1981018252614e6690826109ab565b5190207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b51908160170b820361035657565b905f6060604051614ecb8161098f565b828152816020820152816040820152015281518201916080816020850194031261035657602081015190614efe826105ea565b6040810151606082015167ffffffffffffffff81116103565782019085603f8301121561035657602082015195614f3487611a82565b92614f4260405194856109ab565b8784526020808086019960051b8301010191821161035657604001965b818810614fdd5750506103d093949550614fa290614f8983614f8360808701614ead565b956151d6565b614fb08351916040519384916020830160209181520190565b03601f1981018452836109ab565b8152614fc9614fbd6109fd565b63ffffffff9096168652565b6020850152604084015260170b6060830152565b60208091614fea8a614ead565b815201970196614f5f565b15614ffc57565b606460405162461bcd60e51b815260206004820152601060248201527f696e73756666696369656e7420676173000000000000000000000000000000006044820152fd5b90615049612938565b9061505e61066b83516001600160a01b031690565b6001600160a01b03161561514e576109dd926151499261513e61508260018461234f565b926151306150b06150aa611c918763ffffffff1663ffffffff165f52600c60205260405f2090565b60170b90565b956150d661066b6150c8602088015163ffffffff1690565b96516001600160a01b031690565b956040519788947fbeed9b5100000000000000000000000000000000000000000000000000000000602087015263ffffffff169163ffffffff16602486019094939260609260808301968352602083015260408201520152565b03601f1981018552846109ab565b63ffffffff1661525c565b614ff5565b505050565b6103d092918190808210615169575b5050614d56565b8192500360011c015f80615162565b939291909280851061519257633b9aca0094030101020290565b606460405162461bcd60e51b815260206004820152602060248201527f6c6566744761732063616e6e6f742065786365656420696e697469616c4761736044820152fd5b90517f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361236c5760051b60a001908160a01161236c57510361521857565b606460405162461bcd60e51b815260206004820152601660248201527f7265706f7274206c656e677468206d69736d61746368000000000000000000006044820152fd5b5f9392915a6113888110156152715750505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec78818185930160061c900301116152a9575b8061276b565b5f809495508392916020829551940192f1506001905f80806152a356