solc-0.8.35 0xdd3f50f8a6cafbe9b31a427582963f465e745af8 via-ir-high-runs
10813 bytes
60806040526004361015610011575f80fd5b5f5f3560e01c806312065fe0146112685780631b7dd4c0146111aa5780631e35fed8146111905780631eddb6261461117657806322b1751d14610fce57806327c8f19314610f225780633b36f59214610ed657806354fd4d5014610eb6578063606b649714610d2857806363a5db9e14610ad957806372f5158d146109a6578063888b042f14610983578063b7013dc114610864578063c095415d146107af578063d0e30db0146101765763db82047b146100ca575f80fd5b80600319360112610173576100f06001600160a01b036100e8611804565b16301461139e565b6101686001600160a01b03610160610106611711565b6040516101586030826020808201957f636f6e74726163742e616464726573730000000000000000000000000000000087528051918291018484015e810189838201520301601f198101835282611282565b5190206118ad565b16331461139e565b610170611424565b80f35b80fd5b5080600319360112610173576101956001600160a01b036100e8611804565b6001600160a01b036101ad6101a86113e9565b611902565b166040517f6ada7847000000000000000000000000000000000000000000000000000000008152602081600481855afa90811561042c578391610790575b5015610726576040517f035cf142000000000000000000000000000000000000000000000000000000008152602081600481855afa90811561042c5783916106f4575b50341061068a57610246346102416112d2565b611ab0565b6040517ffd6ce89e000000000000000000000000000000000000000000000000000000008152602081600481865afa90811561067f57849161064d575b50808211610437575b50506040517f0de705b5000000000000000000000000000000000000000000000000000000008152602081600481855afa801561042c5783906103f8575b6102d591503461285f565b826103cb57670de0b6b3a76400006102ee910434611b35565b6001600160a01b037f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63931690813b156103c7575f916044839260405194859384927f94bf804d00000000000000000000000000000000000000000000000000000000845260048401523360248401525af180156103bc576103a5575b50610170906040513481524260208201527f7aa1a8eb998c779420645fc14513bf058edb347d95c2fc2e6845bdc22f88863160403392a26119ae565b6103b29192505f90611282565b5f90610170610369565b6040513d5f823e3d90fd5b5f80fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b506020813d602011610424575b8161041260209383611282565b810103126103c7576102d590516102ca565b3d9150610405565b6040513d85823e3d90fd5b6040517f47fa434a000000000000000000000000000000000000000000000000000000008152602081600481875afa9081156105a957859161061e575b50156105b45760049060206001600160a01b036104926101a861148c565b16604051938480927fe60b40bf0000000000000000000000000000000000000000000000000000000082525afa9081156105a9578591610573575b6104d79250611ab0565b106104e3575f8061028c565b60a460405162461bcd60e51b815260206004820152605d60248201527f546865206465706f73697420706f6f6c2073697a65206166746572206465706f60448201527f736974696e672028616e64206d61746368696e672077697468206d696e69706f60648201527f6f6c7329206578636565647320746865206d6178696d756d2073697a650000006084820152fd5b90506020823d6020116105a1575b8161058e60209383611282565b810103126103c7576104d79151906104cd565b3d9150610581565b6040513d87823e3d90fd5b608460405162461bcd60e51b815260206004820152603f60248201527f546865206465706f73697420706f6f6c2073697a65206166746572206465706f60448201527f736974696e67206578636565647320746865206d6178696d756d2073697a65006064820152fd5b610640915060203d602011610646575b6106388183611282565b810190611474565b5f610474565b503d61062e565b90506020813d602011610677575b8161066860209383611282565b810103126103c757515f610283565b3d915061065b565b6040513d86823e3d90fd5b608460405162461bcd60e51b815260206004820152603a60248201527f546865206465706f736974656420616d6f756e74206973206c6573732074686160448201527f6e20746865206d696e696d756d206465706f7369742073697a650000000000006064820152fd5b90506020813d60201161071e575b8161070f60209383611282565b810103126103c757515f61022e565b3d9150610702565b608460405162461bcd60e51b815260206004820152603060248201527f4465706f7369747320696e746f20526f636b657420506f6f6c2061726520637560448201527f7272656e746c792064697361626c6564000000000000000000000000000000006064820152fd5b6107a9915060203d602011610646576106388183611282565b5f6101eb565b5080600319360112610173576107ce6001600160a01b036100e8611804565b6101706001600160a01b036101606040516107ea604082611282565b600b8152602081017f726f636b65745661756c7400000000000000000000000000000000000000000081526101586030604051809360208201957f636f6e74726163742e616464726573730000000000000000000000000000000087525180918484015e810189838201520301601f198101835282611282565b50346101735780600319360112610173576108856108806112d2565b612793565b610890610880611a3b565b918083830393129082841390821593851283168285161761095657508261094d575b8215610934575b5050156108cb57602090604051908152f35b608460405162461bcd60e51b8152602060048201526024808201527f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152fd5b90915081610945575b505f806108b9565b90505f61093d565b801592506108b2565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b5034610173578060031936011261017357602061099e61174c565b604051908152f35b5080600319360112610173576109c56001600160a01b036100e8611804565b60405160208101907f6d696e69706f6f6c2e657869737473000000000000000000000000000000000082523360601b602f82015260238152610a08604382611282565b51902060206001600160a01b03835460081c16916024604051809481937f7ae1cfca00000000000000000000000000000000000000000000000000000000835260048301525afa908115610ace578291610aaf575b5015610a6b57610170611424565b606460405162461bcd60e51b815260206004820152601060248201527f496e76616c6964206d696e69706f6f6c000000000000000000000000000000006044820152fd5b610ac8915060203d602011610646576106388183611282565b5f610a5d565b6040513d84823e3d90fd5b503461017357602060031936011261017357600435610b016001600160a01b036100e8611804565b610b696001600160a01b03610160610b17611711565b6040516101586030826020808201957f636f6e74726163742e616464726573730000000000000000000000000000000087528051918291018484015e81018a838201520301601f198101835282611282565b610b7161174c565b8111610cbe57816001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d616803b15610ca5578180916024604051809481937f3bed33ce0000000000000000000000000000000000000000000000000000000083528860048401525af18015610ace57610ca9575b506001600160a01b037f000000000000000000000000ae78736cd615f374d3085123a210448e74fc639316803b15610ca5578183916004604051809481937f6c985a880000000000000000000000000000000000000000000000000000000083525af18015610ace57610c90575b50506040519081524260208201527f992f462cfb62e164bd03bf07baf2cffce83fbd9370cae10635842b202001212060403392a280f35b81610c9a91611282565b610ca557815f610c59565b5080fd5b81610cb391611282565b610ca557815f610beb565b608460405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e74206578636573732062616c616e636520666f722060448201527f7769746864726177616c000000000000000000000000000000000000000000006064820152fd5b50346101735760206003193601126101735780600435610d516001600160a01b036100e8611804565b610d676001600160a01b03610160610b176116d6565b6001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d616803b15610eb2578280916024604051809481937f3bed33ce0000000000000000000000000000000000000000000000000000000083528760048401525af190811561042c578391610e9a575b50808092335af13d15610e95573d67ffffffffffffffff8111610e685760405190610e12601f8201601f191660200183611282565b81528260203d92013e5b15610e245780f35b606460405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642045544800000000000000000000000000006044820152fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610e1c565b81610ea491611282565b610eaf57815f610ddd565b50fd5b5050fd5b503461017357806003193601126101735760ff6020915416604051908152f35b5034610173578060031936011261017357610efa6001600160a01b036100e8611804565b6020610f186001600160a01b03610f126101a86113e9565b16611b8d565b6040519015158152f35b5034610173578060031936011261017357610f466001600160a01b036100e8611804565b610f5c6001600160a01b03610f126101a86113e9565b15610f645780f35b608460405162461bcd60e51b815260206004820152602a60248201527f4465706f7369742061737369676e6d656e7473206172652063757272656e746c60448201527f792064697361626c6564000000000000000000000000000000000000000000006064820152fd5b5060206003193601126103c757610fee6001600160a01b036100e8611804565b6110566001600160a01b036101606110046116d6565b6040516101586030826020808201957f636f6e74726163742e616464726573730000000000000000000000000000000087528051918291018484015e81015f838201520301601f198101835282611282565b346110ef575b806001600160a01b03815460081c16803b15610eaf578180916044604051809481937fadb353dc0000000000000000000000000000000000000000000000000000000083527f6465706f7369742e706f6f6c2e6e6f64652e62616c616e636500000000000000600484015260043560248401525af18015610ace576110de5750f35b816110e891611282565b6101735780f35b6001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d616803b156103c7575f600491604051928380927f98ea5fca00000000000000000000000000000000000000000000000000000000825234905af180156103bc57611163575b5061105c565b61116f91505f90611282565b5f5f61115d565b346103c7575f6003193601126103c757602061099e6114c7565b346103c7575f6003193601126103c757602061099e611a3b565b5f6003193601126103c7576111c86001600160a01b036100e8611804565b61125e6001600160a01b036101606040516111e4604082611282565b60148152602081017f726f636b657441756374696f6e4d616e6167657200000000000000000000000081526101586030604051809360208201957f636f6e74726163742e616464726573730000000000000000000000000000000087525180918484015e81015f838201520301601f198101835282611282565b611266611424565b005b346103c7575f6003193601126103c757602061099e6112d2565b90601f601f19910116810190811067ffffffffffffffff8211176112a557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040517f35ee5f8700000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f726f636b65744465706f736974506f6f6c00000000000000000000000000000060448201526020816064816001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d6165afa9081156103bc575f9161136f575090565b90506020813d602011611396575b8161138a60209383611282565b810103126103c7575190565b3d915061137d565b156113a557565b606460405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206f72206f7574646174656420636f6e7472616374000000006044820152fd5b604051906113f8604083611282565b602082527f726f636b657444414f50726f746f636f6c53657474696e67734465706f7369746020830152565b6114726001600160a01b0361143a6101a86113e9565b166040513481524260208201527f3a6614e80d02b57255cbb1f8305fbeca53d7e05a4b779d40627919660851292560403392a26119ae565b565b908160209103126103c7575180151581036103c75790565b6040519061149b604083611282565b601382527f726f636b65744d696e69706f6f6c5175657565000000000000000000000000006020830152565b6001600160a01b036114da6101a86113e9565b166040517f6ada7847000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103bc575f916116b7575b50156116b2576115266112d2565b6040517ffd6ce89e000000000000000000000000000000000000000000000000000000008152602081600481865afa9081156103bc575f91611680575b50600460208294604051928380927f47fa434a0000000000000000000000000000000000000000000000000000000082525afa9081156103bc575f91611661575b506115c5575b50818110156115bf576115bc91611b35565b90565b50505f90565b600491925060206001600160a01b036115df6101a861148c565b16604051938480927fe60b40bf0000000000000000000000000000000000000000000000000000000082525afa9081156103bc575f9161162b575b6116249250611ab0565b905f6115aa565b90506020823d602011611659575b8161164660209383611282565b810103126103c75761162491519061161a565b3d9150611639565b61167a915060203d602011610646576106388183611282565b5f6115a4565b90506020813d6020116116aa575b8161169b60209383611282565b810103126103c757515f611563565b3d915061168e565b505f90565b6116d0915060203d602011610646576106388183611282565b5f611518565b604051906116e5604083611282565b601182527f726f636b65744e6f64654465706f7369740000000000000000000000000000006020830152565b60405190611720604083611282565b600f82527f726f636b6574546f6b656e5245544800000000000000000000000000000000006020830152565b600460206001600160a01b036117636101a861148c565b16604051928380927fe60b40bf0000000000000000000000000000000000000000000000000000000082525afa9081156103bc575f916117be575b506117a76112d2565b908181106117b55750505f90565b6115bc91611b35565b90506020813d6020116117e8575b816117d960209383611282565b810103126103c757515f61179e565b3d91506117cc565b51906001600160a01b03821682036103c757565b602460206001600160a01b035f5460081c16604051928380927f21f8a7210000000000000000000000000000000000000000000000000000000082527f65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb260048301525afa9081156103bc575f91611879575090565b90506020813d6020116118a5575b8161189460209383611282565b810103126103c7576115bc906117f0565b3d9150611887565b60206001600160a01b035f5460081c16916024604051809481937f21f8a72100000000000000000000000000000000000000000000000000000000835260048301525afa9081156103bc575f91611879575090565b611958906040516101586030826020808201957f636f6e74726163742e616464726573730000000000000000000000000000000087528051918291018484015e81015f838201520301601f198101835282611282565b6001600160a01b0381161561196a5790565b606460405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206e6f7420666f756e6400000000000000000000000000006044820152fd5b6001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d61690813b156103c7575f600492604051938480927f98ea5fca00000000000000000000000000000000000000000000000000000000825234905af19182156103bc57611a2892611a2b575b50611b8d565b50565b5f611a3591611282565b5f611a22565b602460206001600160a01b035f5460081c16604051928380927fbd02d0f50000000000000000000000000000000000000000000000000000000082527f6465706f7369742e706f6f6c2e6e6f64652e62616c616e63650000000000000060048301525afa9081156103bc575f9161136f575090565b90810190818111611b08578110611ac45790565b606460405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90818111611b49578103908111611b085790565b606460405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152fd5b6001600160a01b035f91166040517f47fa434a000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103bc575f91612774575b50156115bf576001600160a01b03611bee6101a861148c565b16906040517f8ed80453000000000000000000000000000000000000000000000000000000008152602081600481865afa9081156103bc575f91612755575b501561222357906004916001600160a01b03611c4a6101a8612943565b16611c536112d2565b60208693604051968780927f3b474a650000000000000000000000000000000000000000000000000000000082525afa9485156122185786956121e4575b50611ca08594939796956129a4565b92611cae6040519485611282565b848452601f19611cbd866129a4565b01865b8181106121755750869283915081805b888210611e8f575b505050505050509091929380611cf2575b50505050600190565b6001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d61690813b15611e8b5784916024839260405194859384927f3bed33ce00000000000000000000000000000000000000000000000000000000845260048401525af1801561067f57908491611e72575b505b82811015611ce9576020611d8082846129bc565b51015115611e6d576001600160a01b03611d9a82846129bc565b5151166020611da983856129bc565b51015190803b15611e695785906004604051809481937f481461130000000000000000000000000000000000000000000000000000000083525af180156105a957908591611e50575b5050806001600160a01b03611e09600193856129bc565b5151167fa1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be960406020611e3b85886129bc565b5101518151908152426020820152a201611d6c565b81611e5a91611282565b611e6557835f611df2565b8380fd5b8580fd5b611ce9565b81611e7c91611282565b611e8757825f611d6a565b8280fd5b8480fd5b801561200f575b8015611fe2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019085158015611fd0575b611fcb576040519b7fe99f75c8000000000000000000000000000000000000000000000000000000008d5260208d8c8180611f068a600483016129fd565b03918a5af19c8d15611fc0578b9d611f60575b509088999a9b9c876020611f3984611f3384600198611ab0565b9d6129bc565b5101526001600160a01b03611f4e838d6129bc565b519116905201909a999897969a611cd0565b909c506020813d8211611fb8575b81611f7b60209383611282565b81010312611fb4579088999a9b9c876020611f3984611f3384611f9f6001996117f0565b9f5050505050505090919c9b9a99989c611f19565b8a80fd5b3d9150611f6e565b6040513d8d823e3d90fd5b611cd8565b5085611fdc8d85611b35565b10611ec8565b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5093509050604051907f04b5466b000000000000000000000000000000000000000000000000000000008252604082600481865afa801561216a5788928991612121575b50938260058110156120f4578015611fcb57602061209e91604051809381927f12800c34000000000000000000000000000000000000000000000000000000008352600483016129fd565b03818a5afa9081156120e9578a916120b8575b5094611e96565b90506020813d82116120e1575b816120d260209383611282565b810103126103c757515f6120b1565b3d91506120c5565b6040513d8c823e3d90fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b9250506040823d8211612162575b8161213c60409383611282565b8101031261215e57815191600583101561215a57602001515f612053565b8880fd5b8780fd5b3d915061212f565b6040513d8a823e3d90fd5b6040999596979899516040810181811067ffffffffffffffff8211176121b75790602092916040528a81528a8382015282828a01015201989796959498611cc0565b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9094506020813d602011612210575b8161220060209383611282565b810103126103c75751935f611c91565b3d91506121f3565b6040513d88823e3d90fd5b916001600160a01b0361223a6101a8959395612943565b1693604051937f3b474a65000000000000000000000000000000000000000000000000000000008552602085600481845afa9485156103bc575f9561271e575b5060206004949596604051958680927f3469f7b40000000000000000000000000000000000000000000000000000000082525afa9384156103bc575f946126ea575b506122c784346128ef565b600460206122dc876122d76112d2565b6128ef565b93604051928380927ff19b41060000000000000000000000000000000000000000000000000000000082525afa9081156103bc575f916126b2575b50915f976123296024938a9695611ab0565b918083116126aa575b508082116126a2575b5060405197889384927f7e0e497b00000000000000000000000000000000000000000000000000000000845260048401525af19384156103bc575f94612607575b5083518061238e575b50600193505050565b826123989161285f565b6001600160a01b037f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d61690813b156103c7575f916024839260405194859384927f3bed33ce00000000000000000000000000000000000000000000000000000000845260048401525af180156103bc576125f4575b5080805b8551821015612552576001600160a01b0361242c83886129bc565b5116803b15611e65576040517fd0e30db0000000000000000000000000000000000000000000000000000000008152848160048189865af180156105a95790859161253d575b50506020600491604051928380927fd2ceebd10000000000000000000000000000000000000000000000000000000082525afa90811561067f57849161250b575b506124c090600192611ab0565b916001600160a01b036124d382896129bc565b51167fa1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be960408051888152426020820152a20190612411565b90506020813d8211612535575b8161252560209383611282565b810103126103c7575160016124b3565b3d9150612518565b8161254791611282565b611e6557835f612472565b9250509192506001600160a01b03825460081c1690813b15611e875782916044839260405194859384927febb9d8c90000000000000000000000000000000000000000000000000000000084527f6465706f7369742e706f6f6c2e6e6f64652e62616c616e636500000000000000600485015260248401525af18015610ace576125df575b808392612385565b6125ea828092611282565b61017357806125d7565b61260091505f90611282565b5f5f61240d565b9093503d805f833e6126198183611282565b8101906020818303126103c75780519067ffffffffffffffff82116103c757019080601f830112156103c7578151612650816129a4565b9261265e6040519485611282565b81845260208085019260051b8201019283116103c757602001905b82821061268a57505050925f61237c565b60208091612697846117f0565b815201910190612679565b90505f61233b565b91505f612332565b939290506020843d6020116126e2575b816126cf60209383611282565b810103126103c75792519192915f612317565b3d91506126c2565b9093506020813d602011612716575b8161270660209383611282565b810103126103c75751925f6122bc565b3d91506126f9565b9394506020843d60201161274d575b8161273a60209383611282565b810103126103c75792519392602061227a565b3d915061272d565b61276e915060203d602011610646576106388183611282565b5f611c2d565b61278d915060203d602011610646576106388183611282565b5f611bd5565b7f80000000000000000000000000000000000000000000000000000000000000008110156127be5790565b608460405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152fd5b8115612832570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9081156115bf57808202918083048203611b085761287d9083612828565b036128855790565b608460405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152fd5b9080156128ff576115bc91612828565b606460405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152fd5b60405190612952606083611282565b602182527f6c000000000000000000000000000000000000000000000000000000000000006040837f726f636b657444414f50726f746f636f6c53657474696e67734d696e69706f6f60208201520152565b67ffffffffffffffff81116112a55760051b60200190565b80518210156129d05760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919060208301926005821015612a105752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd