{
  "_format": "hh-sol-artifact-1",
  "contractName": "OneStepProverMath",
  "sourceName": "src/osp/OneStepProverMath.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "maxInboxMessagesRead",
              "type": "uint256"
            },
            {
              "internalType": "contract IBridge",
              "name": "bridge",
              "type": "address"
            }
          ],
          "internalType": "struct ExecutionContext",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum MachineStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value[]",
                      "name": "inner",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ValueArray",
                  "name": "proved",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ValueStack",
              "name": "valueStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "inactiveStackHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct MultiStack",
              "name": "valueMultiStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value[]",
                      "name": "inner",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ValueArray",
                  "name": "proved",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ValueStack",
              "name": "internalStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value",
                      "name": "returnPc",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "localsMerkleRoot",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "callerModule",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "callerModuleInternals",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct StackFrame[]",
                  "name": "proved",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct StackFrameWindow",
              "name": "frameStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "inactiveStackHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct MultiStack",
              "name": "frameMultiStack",
              "type": "tuple"
            },
            {
              "internalType": "bytes32",
              "name": "globalStateHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "moduleIdx",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "functionIdx",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "functionPc",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "recoveryPc",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "modulesRoot",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Machine",
          "name": "startMach",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "globalsMerkleRoot",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint64",
                  "name": "size",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "maxSize",
                  "type": "uint64"
                },
                {
                  "internalType": "bytes32",
                  "name": "merkleRoot",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ModuleMemory",
              "name": "moduleMemory",
              "type": "tuple"
            },
            {
              "internalType": "bytes32",
              "name": "tablesMerkleRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "functionsMerkleRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "extraHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "internalsOffset",
              "type": "uint32"
            }
          ],
          "internalType": "struct Module",
          "name": "startMod",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "opcode",
              "type": "uint16"
            },
            {
              "internalType": "uint256",
              "name": "argumentData",
              "type": "uint256"
            }
          ],
          "internalType": "struct Instruction",
          "name": "inst",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "executeOneStep",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum MachineStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value[]",
                      "name": "inner",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ValueArray",
                  "name": "proved",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ValueStack",
              "name": "valueStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "inactiveStackHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct MultiStack",
              "name": "valueMultiStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value[]",
                      "name": "inner",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ValueArray",
                  "name": "proved",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ValueStack",
              "name": "internalStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ValueType",
                          "name": "valueType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "contents",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct Value",
                      "name": "returnPc",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "localsMerkleRoot",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "callerModule",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "callerModuleInternals",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct StackFrame[]",
                  "name": "proved",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct StackFrameWindow",
              "name": "frameStack",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "inactiveStackHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "remainingHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct MultiStack",
              "name": "frameMultiStack",
              "type": "tuple"
            },
            {
              "internalType": "bytes32",
              "name": "globalStateHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "moduleIdx",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "functionIdx",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "functionPc",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "recoveryPc",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "modulesRoot",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Machine",
          "name": "mach",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "globalsMerkleRoot",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint64",
                  "name": "size",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "maxSize",
                  "type": "uint64"
                },
                {
                  "internalType": "bytes32",
                  "name": "merkleRoot",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct ModuleMemory",
              "name": "moduleMemory",
              "type": "tuple"
            },
            {
              "internalType": "bytes32",
              "name": "tablesMerkleRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "functionsMerkleRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "extraHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint32",
              "name": "internalsOffset",
              "type": "uint32"
            }
          ],
          "internalType": "struct Module",
          "name": "mod",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612469806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e3660046118ed565b61005a565b604051610051929190611b01565b60405180910390f35b6100626117ea565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587612024565b91506100c636879003870187612160565b905060006100d76020870187612202565b90506118cb61ffff8216604514806100f3575061ffff82166050145b1561010157506103106102f2565b604661ffff831610801590610129575061011d6009604661223c565b61ffff168261ffff1611155b1561013757506104296102f2565b606761ffff83161080159061015f57506101536002606761223c565b61ffff168261ffff1611155b1561016d575061050c6102f2565b606a61ffff8316108015906101875750607861ffff831611155b1561019557506105746102f2565b605161ffff8316108015906101bd57506101b16009605161223c565b61ffff168261ffff1611155b156101cb57506107616102f2565b607961ffff8316108015906101f357506101e76002607961223c565b61ffff168261ffff1611155b1561020157506107c66102f2565b607c61ffff83161080159061021b5750608a61ffff831611155b1561022957506108196102f2565b61ffff821660a7141561023f57506109d46102f2565b61ffff821660ac1480610256575061ffff821660ad145b1561026457506109f56102f2565b60c061ffff83161080159061027e575060c461ffff831611155b1561028c5750610a496102f2565b60bc61ffff8316108015906102a6575060bf61ffff831611155b156102b45750610c5e6102f2565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b61030384848989898663ffffffff16565b5050965096945050505050565b600061031f8660200151610de9565b905060456103306020860186612202565b61ffff1614156103715760008151600681111561034f5761034f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612262565b6103ee565b60506103806020860186612202565b61ffff1614156103bc5760018151600681111561039f5761039f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612283565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e9565b600081602001516000141561040557506001610409565b5060005b61042061041582610e0e565b602089015190610e41565b50505050505050565b600061044061043b8760200151610de9565b610e51565b9050600061045461043b8860200151610de9565b9050600060466104676020880188612202565b61047191906122a4565b905060008061ffff83166002148061048d575061ffff83166004145b8061049c575061ffff83166006145b806104ab575061ffff83166008145b156104cb576104b984610ec8565b91506104c485610ec8565b90506104d9565b505063ffffffff8083169084165b60006104e6838386610ef4565b90506104ff6104f48261109d565b60208d015190610e41565b5050505050505050505050565b600061051e61043b8760200151610de9565b9050600060676105316020870187612202565b61053b91906122a4565b905060006105518363ffffffff168360206110d0565b905061056a61055f82610e0e565b60208a015190610e41565b5050505050505050565b600061058661043b8760200151610de9565b9050600061059a61043b8860200151610de9565b9050600080606a6105ae6020890189612202565b6105b891906122a4565b90508061ffff16600314156106365763ffffffff841615806105f057508260030b637fffffff191480156105f057508360030b600019145b15610619578860025b9081600381111561060c5761060c6119d2565b815250505050505061075a565b8360030b8360030b8161062e5761062e6122c7565b05915061073e565b8061ffff16600514156106735763ffffffff8416610656578860026105f9565b8360030b8360030b8161066b5761066b6122c7565b07915061073e565b8061ffff16600a14156106935763ffffffff8316601f85161b915061073e565b8061ffff16600c14156106b35763ffffffff8316601f85161c915061073e565b8061ffff16600b14156106d157600383900b601f85161d915061073e565b8061ffff16600d14156106ef576106e88385611294565b915061073e565b8061ffff16600e1415610706576106e883856112d6565b6000806107208563ffffffff168763ffffffff1685611318565b91509150801561073a575050600289525061075a92505050565b5091505b61075561074a83610e0e565b60208b015190610e41565b505050505b5050505050565b60006107786107738760200151610de9565b61149e565b9050600061078c6107738860200151610de9565b90506000605161079f6020880188612202565b6107a991906122a4565b905060006107b8838584610ef4565b905061075561074a8261109d565b60006107d86107738760200151610de9565b9050600060796107eb6020870187612202565b6107f591906122a4565b90506000610805838360406110d0565b63ffffffff16905061056a61055f82611515565b600061082b6107738760200151610de9565b9050600061083f6107738860200151610de9565b9050600080607c6108536020890189612202565b61085d91906122a4565b90508061ffff16600314156108c6576001600160401b038416158061089c57508260070b677fffffffffffffff1914801561089c57508360070b600019145b156108a9578860026105f9565b8360070b8360070b816108be576108be6122c7565b0591506109c8565b8061ffff1660051415610906576001600160401b0384166108e9578860026105f9565b8360070b8360070b816108fe576108fe6122c7565b0791506109c8565b8061ffff16600a1415610929576001600160401b038316603f85161b91506109c8565b8061ffff16600c141561094c576001600160401b038316603f85161c91506109c8565b8061ffff16600b141561096a57600783900b603f85161d91506109c8565b8061ffff16600d141561098857610981838561154b565b91506109c8565b8061ffff16600e141561099f576109818385611599565b60006109ac848684611318565b909350905080156109c6575050600288525061075a915050565b505b61075561074a83611515565b60006109e66107738760200151610de9565b90508061042061041582610e0e565b6000610a0761043b8760200151610de9565b9050600060ac610a1a6020870187612202565b61ffff161415610a3457610a2d82610ec8565b9050610a3d565b5063ffffffff81165b61042061041582611515565b60008060c0610a5b6020870187612202565b61ffff161415610a715750600090506008610b48565b60c1610a806020870187612202565b61ffff161415610a965750600090506010610b48565b60c2610aa56020870187612202565b61ffff161415610abb5750600190506008610b48565b60c3610aca6020870187612202565b61ffff161415610ae05750600190506010610b48565b60c4610aef6020870187612202565b61ffff161415610b055750600190506020610b48565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e9565b600080836006811115610b5d57610b5d6119d2565b1415610b6e575063ffffffff610b78565b506001600160401b035b6000610b878960200151610de9565b9050836006811115610b9b57610b9b6119d2565b81516006811115610bae57610bae6119d2565b14610bf75760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e9565b6000610c0a600160ff861681901b6122dd565b602083018051821690529050610c216001856122f4565b60ff166001901b826020015116600014610c4357602082018051821985161790525b60208a0151610c529083610e41565b50505050505050505050565b60008060bc610c706020870187612202565b61ffff161415610c865750600090506002610d33565b60bd610c956020870187612202565b61ffff161415610cab5750600190506003610d33565b60be610cba6020870187612202565b61ffff161415610cd05750600290506000610d33565b60bf610cdf6020870187612202565b61ffff161415610cf55750600390506001610d33565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e9565b6000610d428860200151610de9565b9050816006811115610d5657610d566119d2565b81516006811115610d6957610d696119d2565b14610db15760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e9565b80836006811115610dc457610dc46119d2565b90816006811115610dd757610dd76119d2565b905250602088015161056a9082610e41565b60408051808201909152600080825260208201528151610e08906115e7565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4d90826116f7565b5050565b60208101516000908183516006811115610e6d57610e6d6119d2565b14610e8a5760405162461bcd60e51b81526004016102e990612262565b6401000000008110610e085760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e9565b60006380000000821615610eea575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1b57826001600160401b0316846001600160401b0316149050611096565b61ffff821660011415610f4557826001600160401b0316846001600160401b031614159050611096565b61ffff821660021415610f62578260070b8460070b129050611096565b61ffff821660031415610f8b57826001600160401b0316846001600160401b0316109050611096565b61ffff821660041415610fa8578260070b8460070b139050611096565b61ffff821660051415610fd157826001600160401b0316846001600160401b0316119050611096565b61ffff821660061415610fef578260070b8460070b13159050611096565b61ffff82166007141561101957826001600160401b0316846001600160401b031611159050611096565b61ffff821660081415611037578260070b8460070b12159050611096565b61ffff82166009141561106157826001600160401b0316846001600160401b031610159050611096565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e9565b9392505050565b604080518082019091526000808252602082015281156110c157610e086001610e0e565b610e086000610e0e565b919050565b60008161ffff16602014806110e957508161ffff166040145b6111305760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e9565b61ffff83166111a15761ffff82165b60008163ffffffff16118015611174575061115b600182612317565b63ffffffff166001901b856001600160401b0316166000145b1561118b57611184600182612317565b905061113f565b6111998161ffff8516612317565b915050611096565b61ffff8316600114156111fa5760005b8261ffff168163ffffffff161080156111dc5750600163ffffffff82161b85166001600160401b0316155b156111f3576111ec600182612334565b90506111b1565b9050611096565b61ffff831660021415611260576000805b8361ffff168263ffffffff16101561125757600163ffffffff83161b86166001600160401b03161561124557611242600182612334565b90505b8161124f81612353565b92505061120b565b91506110969050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e9565b60006112a1602083612377565b91506112ae826020612317565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112e3602083612377565b91506112f0826020612317565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff83166113305750508282016000611496565b8261ffff16600114156113495750508183036000611496565b8261ffff16600214156113625750508282026000611496565b8261ffff16600414156113b6576001600160401b0384166113895750600090506001611496565b836001600160401b0316856001600160401b0316816113aa576113aa6122c7565b04600091509150611496565b8261ffff166006141561140a576001600160401b0384166113dd5750600090506001611496565b836001600160401b0316856001600160401b0316816113fe576113fe6122c7565b06600091509150611496565b8261ffff16600714156114235750508282166000611496565b8261ffff166008141561143c5750508282176000611496565b8261ffff16600914156114555750508282186000611496565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e9565b935093915050565b60208101516000906001835160068111156114bb576114bb6119d2565b146114d85760405162461bcd60e51b81526004016102e990612283565b600160401b8110610e085760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e9565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b600061155860408361239a565b91506115658260406123b4565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b60006115a660408361239a565b91506115b38260406123b4565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b60408051808201909152600080825260208201528151805161160b906001906122dd565b8151811061161b5761161b6123d4565b602002602001015190506000600183600001515161163991906122dd565b6001600160401b0381111561165057611650611c79565b60405190808252806020026020018201604052801561169557816020015b604080518082019091526000808252602082015281526020019060019003908161166e5790505b50905060005b81518110156116f05783518051829081106116b8576116b86123d4565b60200260200101518282815181106116d2576116d26123d4565b602002602001018190525080806116e8906123ea565b91505061169b565b5090915290565b815151600090611708906001612405565b6001600160401b0381111561171f5761171f611c79565b60405190808252806020026020018201604052801561176457816020015b604080518082019091526000808252602082015281526020019060019003908161173d5790505b50905060005b8351518110156117c0578351805182908110611788576117886123d4565b60200260200101518282815181106117a2576117a26123d4565b602002602001018190525080806117b8906123ea565b91505061176a565b508181846000015151815181106117d9576117d96123d4565b602090810291909101015290915250565b604080516101808101909152806000815260200161181f60408051606080820183529181019182529081526000602082015290565b815260408051808201825260008082526020808301919091528301520161185d60408051606080820183529181019182529081526000602082015290565b8152602001611882604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6118d361241d565b565b6000604082840312156118e757600080fd5b50919050565b6000806000806000808688036101c08082121561190957600080fd5b6119138a8a6118d5565b975060408901356001600160401b038082111561192f57600080fd5b818b01915082828d03121561194357600080fd5b819850610100605f198501121561195957600080fd5b60608b01975061196d8c6101608d016118d5565b96506101a08b013593508084111561198457600080fd5b838b0193508b601f85011261199857600080fd5b83359250808311156119a957600080fd5b50508960208284010111156119bd57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119f8576119f86119d2565b9052565b805160078110611a0e57611a0e6119d2565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a6b57611a578286516119fc565b938201936001939093019290850190611a44565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aea578451611ab68582516119fc565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611aa1565b509687015197909601969096525093949350505050565b6000610120808352611b1681840186516119e8565b60208501516101c06101408181870152611b346102e0870184611a1b565b92506040880151610160611b548189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a0152611b748684611a1b565b955060808b015192508089870301858a015250611b918583611a7f565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150611096905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611cb157611cb1611c79565b60405290565b604051602081016001600160401b0381118282101715611cb157611cb1611c79565b604051608081016001600160401b0381118282101715611cb157611cb1611c79565b60405161018081016001600160401b0381118282101715611cb157611cb1611c79565b60405160c081016001600160401b0381118282101715611cb157611cb1611c79565b604051606081016001600160401b0381118282101715611cb157611cb1611c79565b604051601f8201601f191681016001600160401b0381118282101715611d8a57611d8a611c79565b604052919050565b8035600481106110cb57600080fd5b60006001600160401b03821115611dba57611dba611c79565b5060051b60200190565b600060408284031215611dd657600080fd5b611dde611c8f565b9050813560078110611def57600080fd5b808252506020820135602082015292915050565b60006040808385031215611e1657600080fd5b611e1e611c8f565b915082356001600160401b0380821115611e3757600080fd5b81850191506020808388031215611e4d57600080fd5b611e55611cb7565b833583811115611e6457600080fd5b80850194505087601f850112611e7957600080fd5b83359250611e8e611e8984611da1565b611d62565b83815260069390931b84018201928281019089851115611ead57600080fd5b948301945b84861015611ed357611ec48a87611dc4565b82529486019490830190611eb2565b8252508552948501359484019490945250909392505050565b600060408284031215611efe57600080fd5b611f06611c8f565b9050813581526020820135602082015292915050565b803563ffffffff811681146110cb57600080fd5b60006040808385031215611f4357600080fd5b611f4b611c8f565b915082356001600160401b03811115611f6357600080fd5b8301601f81018513611f7457600080fd5b80356020611f84611e8983611da1565b82815260a09283028401820192828201919089851115611fa357600080fd5b948301945b8486101561200c5780868b031215611fc05760008081fd5b611fc8611cd9565b611fd28b88611dc4565b815287870135858201526060611fe9818901611f1c565b89830152611ff960808901611f1c565b9082015283529485019491830191611fa8565b50808752505080860135818601525050505092915050565b60006101c0823603121561203757600080fd5b61203f611cfb565b61204883611d92565b815260208301356001600160401b038082111561206457600080fd5b61207036838701611e03565b60208401526120823660408701611eec565b6040840152608085013591508082111561209b57600080fd5b6120a736838701611e03565b606084015260a08501359150808211156120c057600080fd5b506120cd36828601611f30565b6080830152506120e03660c08501611eec565b60a08201526101008084013560c08301526101206120ff818601611f1c565b60e0840152610140612112818701611f1c565b838501526101609250612126838701611f1c565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146110cb57600080fd5b600081830361010081121561217457600080fd5b61217c611d1e565b833581526060601f198301121561219257600080fd5b61219a611d40565b91506121a860208501612149565b82526121b660408501612149565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c084013560808201526121f560e08501611f1c565b60a0820152949350505050565b60006020828403121561221457600080fd5b813561ffff8116811461109657600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561225957612259612226565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156122bf576122bf612226565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156122ef576122ef612226565b500390565b600060ff821660ff84168082101561230e5761230e612226565b90039392505050565b600063ffffffff838116908316818110156122bf576122bf612226565b600063ffffffff80831681851680830382111561225957612259612226565b600063ffffffff8083168181141561236d5761236d612226565b6001019392505050565b600063ffffffff8084168061238e5761238e6122c7565b92169190910692915050565b60006001600160401b038084168061238e5761238e6122c7565b60006001600160401b03838116908316818110156122bf576122bf612226565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123fe576123fe612226565b5060010190565b6000821982111561241857612418612226565b500190565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220b43162e63e3e6566b152ba23caeacfda17c45d9d044fbd860590d2a4d52f818264736f6c63430008090033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e3660046118ed565b61005a565b604051610051929190611b01565b60405180910390f35b6100626117ea565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587612024565b91506100c636879003870187612160565b905060006100d76020870187612202565b90506118cb61ffff8216604514806100f3575061ffff82166050145b1561010157506103106102f2565b604661ffff831610801590610129575061011d6009604661223c565b61ffff168261ffff1611155b1561013757506104296102f2565b606761ffff83161080159061015f57506101536002606761223c565b61ffff168261ffff1611155b1561016d575061050c6102f2565b606a61ffff8316108015906101875750607861ffff831611155b1561019557506105746102f2565b605161ffff8316108015906101bd57506101b16009605161223c565b61ffff168261ffff1611155b156101cb57506107616102f2565b607961ffff8316108015906101f357506101e76002607961223c565b61ffff168261ffff1611155b1561020157506107c66102f2565b607c61ffff83161080159061021b5750608a61ffff831611155b1561022957506108196102f2565b61ffff821660a7141561023f57506109d46102f2565b61ffff821660ac1480610256575061ffff821660ad145b1561026457506109f56102f2565b60c061ffff83161080159061027e575060c461ffff831611155b1561028c5750610a496102f2565b60bc61ffff8316108015906102a6575060bf61ffff831611155b156102b45750610c5e6102f2565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b61030384848989898663ffffffff16565b5050965096945050505050565b600061031f8660200151610de9565b905060456103306020860186612202565b61ffff1614156103715760008151600681111561034f5761034f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612262565b6103ee565b60506103806020860186612202565b61ffff1614156103bc5760018151600681111561039f5761039f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612283565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e9565b600081602001516000141561040557506001610409565b5060005b61042061041582610e0e565b602089015190610e41565b50505050505050565b600061044061043b8760200151610de9565b610e51565b9050600061045461043b8860200151610de9565b9050600060466104676020880188612202565b61047191906122a4565b905060008061ffff83166002148061048d575061ffff83166004145b8061049c575061ffff83166006145b806104ab575061ffff83166008145b156104cb576104b984610ec8565b91506104c485610ec8565b90506104d9565b505063ffffffff8083169084165b60006104e6838386610ef4565b90506104ff6104f48261109d565b60208d015190610e41565b5050505050505050505050565b600061051e61043b8760200151610de9565b9050600060676105316020870187612202565b61053b91906122a4565b905060006105518363ffffffff168360206110d0565b905061056a61055f82610e0e565b60208a015190610e41565b5050505050505050565b600061058661043b8760200151610de9565b9050600061059a61043b8860200151610de9565b9050600080606a6105ae6020890189612202565b6105b891906122a4565b90508061ffff16600314156106365763ffffffff841615806105f057508260030b637fffffff191480156105f057508360030b600019145b15610619578860025b9081600381111561060c5761060c6119d2565b815250505050505061075a565b8360030b8360030b8161062e5761062e6122c7565b05915061073e565b8061ffff16600514156106735763ffffffff8416610656578860026105f9565b8360030b8360030b8161066b5761066b6122c7565b07915061073e565b8061ffff16600a14156106935763ffffffff8316601f85161b915061073e565b8061ffff16600c14156106b35763ffffffff8316601f85161c915061073e565b8061ffff16600b14156106d157600383900b601f85161d915061073e565b8061ffff16600d14156106ef576106e88385611294565b915061073e565b8061ffff16600e1415610706576106e883856112d6565b6000806107208563ffffffff168763ffffffff1685611318565b91509150801561073a575050600289525061075a92505050565b5091505b61075561074a83610e0e565b60208b015190610e41565b505050505b5050505050565b60006107786107738760200151610de9565b61149e565b9050600061078c6107738860200151610de9565b90506000605161079f6020880188612202565b6107a991906122a4565b905060006107b8838584610ef4565b905061075561074a8261109d565b60006107d86107738760200151610de9565b9050600060796107eb6020870187612202565b6107f591906122a4565b90506000610805838360406110d0565b63ffffffff16905061056a61055f82611515565b600061082b6107738760200151610de9565b9050600061083f6107738860200151610de9565b9050600080607c6108536020890189612202565b61085d91906122a4565b90508061ffff16600314156108c6576001600160401b038416158061089c57508260070b677fffffffffffffff1914801561089c57508360070b600019145b156108a9578860026105f9565b8360070b8360070b816108be576108be6122c7565b0591506109c8565b8061ffff1660051415610906576001600160401b0384166108e9578860026105f9565b8360070b8360070b816108fe576108fe6122c7565b0791506109c8565b8061ffff16600a1415610929576001600160401b038316603f85161b91506109c8565b8061ffff16600c141561094c576001600160401b038316603f85161c91506109c8565b8061ffff16600b141561096a57600783900b603f85161d91506109c8565b8061ffff16600d141561098857610981838561154b565b91506109c8565b8061ffff16600e141561099f576109818385611599565b60006109ac848684611318565b909350905080156109c6575050600288525061075a915050565b505b61075561074a83611515565b60006109e66107738760200151610de9565b90508061042061041582610e0e565b6000610a0761043b8760200151610de9565b9050600060ac610a1a6020870187612202565b61ffff161415610a3457610a2d82610ec8565b9050610a3d565b5063ffffffff81165b61042061041582611515565b60008060c0610a5b6020870187612202565b61ffff161415610a715750600090506008610b48565b60c1610a806020870187612202565b61ffff161415610a965750600090506010610b48565b60c2610aa56020870187612202565b61ffff161415610abb5750600190506008610b48565b60c3610aca6020870187612202565b61ffff161415610ae05750600190506010610b48565b60c4610aef6020870187612202565b61ffff161415610b055750600190506020610b48565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e9565b600080836006811115610b5d57610b5d6119d2565b1415610b6e575063ffffffff610b78565b506001600160401b035b6000610b878960200151610de9565b9050836006811115610b9b57610b9b6119d2565b81516006811115610bae57610bae6119d2565b14610bf75760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e9565b6000610c0a600160ff861681901b6122dd565b602083018051821690529050610c216001856122f4565b60ff166001901b826020015116600014610c4357602082018051821985161790525b60208a0151610c529083610e41565b50505050505050505050565b60008060bc610c706020870187612202565b61ffff161415610c865750600090506002610d33565b60bd610c956020870187612202565b61ffff161415610cab5750600190506003610d33565b60be610cba6020870187612202565b61ffff161415610cd05750600290506000610d33565b60bf610cdf6020870187612202565b61ffff161415610cf55750600390506001610d33565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e9565b6000610d428860200151610de9565b9050816006811115610d5657610d566119d2565b81516006811115610d6957610d696119d2565b14610db15760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e9565b80836006811115610dc457610dc46119d2565b90816006811115610dd757610dd76119d2565b905250602088015161056a9082610e41565b60408051808201909152600080825260208201528151610e08906115e7565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4d90826116f7565b5050565b60208101516000908183516006811115610e6d57610e6d6119d2565b14610e8a5760405162461bcd60e51b81526004016102e990612262565b6401000000008110610e085760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e9565b60006380000000821615610eea575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1b57826001600160401b0316846001600160401b0316149050611096565b61ffff821660011415610f4557826001600160401b0316846001600160401b031614159050611096565b61ffff821660021415610f62578260070b8460070b129050611096565b61ffff821660031415610f8b57826001600160401b0316846001600160401b0316109050611096565b61ffff821660041415610fa8578260070b8460070b139050611096565b61ffff821660051415610fd157826001600160401b0316846001600160401b0316119050611096565b61ffff821660061415610fef578260070b8460070b13159050611096565b61ffff82166007141561101957826001600160401b0316846001600160401b031611159050611096565b61ffff821660081415611037578260070b8460070b12159050611096565b61ffff82166009141561106157826001600160401b0316846001600160401b031610159050611096565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e9565b9392505050565b604080518082019091526000808252602082015281156110c157610e086001610e0e565b610e086000610e0e565b919050565b60008161ffff16602014806110e957508161ffff166040145b6111305760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e9565b61ffff83166111a15761ffff82165b60008163ffffffff16118015611174575061115b600182612317565b63ffffffff166001901b856001600160401b0316166000145b1561118b57611184600182612317565b905061113f565b6111998161ffff8516612317565b915050611096565b61ffff8316600114156111fa5760005b8261ffff168163ffffffff161080156111dc5750600163ffffffff82161b85166001600160401b0316155b156111f3576111ec600182612334565b90506111b1565b9050611096565b61ffff831660021415611260576000805b8361ffff168263ffffffff16101561125757600163ffffffff83161b86166001600160401b03161561124557611242600182612334565b90505b8161124f81612353565b92505061120b565b91506110969050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e9565b60006112a1602083612377565b91506112ae826020612317565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112e3602083612377565b91506112f0826020612317565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff83166113305750508282016000611496565b8261ffff16600114156113495750508183036000611496565b8261ffff16600214156113625750508282026000611496565b8261ffff16600414156113b6576001600160401b0384166113895750600090506001611496565b836001600160401b0316856001600160401b0316816113aa576113aa6122c7565b04600091509150611496565b8261ffff166006141561140a576001600160401b0384166113dd5750600090506001611496565b836001600160401b0316856001600160401b0316816113fe576113fe6122c7565b06600091509150611496565b8261ffff16600714156114235750508282166000611496565b8261ffff166008141561143c5750508282176000611496565b8261ffff16600914156114555750508282186000611496565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e9565b935093915050565b60208101516000906001835160068111156114bb576114bb6119d2565b146114d85760405162461bcd60e51b81526004016102e990612283565b600160401b8110610e085760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e9565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b600061155860408361239a565b91506115658260406123b4565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b60006115a660408361239a565b91506115b38260406123b4565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b60408051808201909152600080825260208201528151805161160b906001906122dd565b8151811061161b5761161b6123d4565b602002602001015190506000600183600001515161163991906122dd565b6001600160401b0381111561165057611650611c79565b60405190808252806020026020018201604052801561169557816020015b604080518082019091526000808252602082015281526020019060019003908161166e5790505b50905060005b81518110156116f05783518051829081106116b8576116b86123d4565b60200260200101518282815181106116d2576116d26123d4565b602002602001018190525080806116e8906123ea565b91505061169b565b5090915290565b815151600090611708906001612405565b6001600160401b0381111561171f5761171f611c79565b60405190808252806020026020018201604052801561176457816020015b604080518082019091526000808252602082015281526020019060019003908161173d5790505b50905060005b8351518110156117c0578351805182908110611788576117886123d4565b60200260200101518282815181106117a2576117a26123d4565b602002602001018190525080806117b8906123ea565b91505061176a565b508181846000015151815181106117d9576117d96123d4565b602090810291909101015290915250565b604080516101808101909152806000815260200161181f60408051606080820183529181019182529081526000602082015290565b815260408051808201825260008082526020808301919091528301520161185d60408051606080820183529181019182529081526000602082015290565b8152602001611882604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6118d361241d565b565b6000604082840312156118e757600080fd5b50919050565b6000806000806000808688036101c08082121561190957600080fd5b6119138a8a6118d5565b975060408901356001600160401b038082111561192f57600080fd5b818b01915082828d03121561194357600080fd5b819850610100605f198501121561195957600080fd5b60608b01975061196d8c6101608d016118d5565b96506101a08b013593508084111561198457600080fd5b838b0193508b601f85011261199857600080fd5b83359250808311156119a957600080fd5b50508960208284010111156119bd57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119f8576119f86119d2565b9052565b805160078110611a0e57611a0e6119d2565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a6b57611a578286516119fc565b938201936001939093019290850190611a44565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aea578451611ab68582516119fc565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611aa1565b509687015197909601969096525093949350505050565b6000610120808352611b1681840186516119e8565b60208501516101c06101408181870152611b346102e0870184611a1b565b92506040880151610160611b548189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a0152611b748684611a1b565b955060808b015192508089870301858a015250611b918583611a7f565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150611096905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611cb157611cb1611c79565b60405290565b604051602081016001600160401b0381118282101715611cb157611cb1611c79565b604051608081016001600160401b0381118282101715611cb157611cb1611c79565b60405161018081016001600160401b0381118282101715611cb157611cb1611c79565b60405160c081016001600160401b0381118282101715611cb157611cb1611c79565b604051606081016001600160401b0381118282101715611cb157611cb1611c79565b604051601f8201601f191681016001600160401b0381118282101715611d8a57611d8a611c79565b604052919050565b8035600481106110cb57600080fd5b60006001600160401b03821115611dba57611dba611c79565b5060051b60200190565b600060408284031215611dd657600080fd5b611dde611c8f565b9050813560078110611def57600080fd5b808252506020820135602082015292915050565b60006040808385031215611e1657600080fd5b611e1e611c8f565b915082356001600160401b0380821115611e3757600080fd5b81850191506020808388031215611e4d57600080fd5b611e55611cb7565b833583811115611e6457600080fd5b80850194505087601f850112611e7957600080fd5b83359250611e8e611e8984611da1565b611d62565b83815260069390931b84018201928281019089851115611ead57600080fd5b948301945b84861015611ed357611ec48a87611dc4565b82529486019490830190611eb2565b8252508552948501359484019490945250909392505050565b600060408284031215611efe57600080fd5b611f06611c8f565b9050813581526020820135602082015292915050565b803563ffffffff811681146110cb57600080fd5b60006040808385031215611f4357600080fd5b611f4b611c8f565b915082356001600160401b03811115611f6357600080fd5b8301601f81018513611f7457600080fd5b80356020611f84611e8983611da1565b82815260a09283028401820192828201919089851115611fa357600080fd5b948301945b8486101561200c5780868b031215611fc05760008081fd5b611fc8611cd9565b611fd28b88611dc4565b815287870135858201526060611fe9818901611f1c565b89830152611ff960808901611f1c565b9082015283529485019491830191611fa8565b50808752505080860135818601525050505092915050565b60006101c0823603121561203757600080fd5b61203f611cfb565b61204883611d92565b815260208301356001600160401b038082111561206457600080fd5b61207036838701611e03565b60208401526120823660408701611eec565b6040840152608085013591508082111561209b57600080fd5b6120a736838701611e03565b606084015260a08501359150808211156120c057600080fd5b506120cd36828601611f30565b6080830152506120e03660c08501611eec565b60a08201526101008084013560c08301526101206120ff818601611f1c565b60e0840152610140612112818701611f1c565b838501526101609250612126838701611f1c565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146110cb57600080fd5b600081830361010081121561217457600080fd5b61217c611d1e565b833581526060601f198301121561219257600080fd5b61219a611d40565b91506121a860208501612149565b82526121b660408501612149565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c084013560808201526121f560e08501611f1c565b60a0820152949350505050565b60006020828403121561221457600080fd5b813561ffff8116811461109657600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561225957612259612226565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156122bf576122bf612226565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156122ef576122ef612226565b500390565b600060ff821660ff84168082101561230e5761230e612226565b90039392505050565b600063ffffffff838116908316818110156122bf576122bf612226565b600063ffffffff80831681851680830382111561225957612259612226565b600063ffffffff8083168181141561236d5761236d612226565b6001019392505050565b600063ffffffff8084168061238e5761238e6122c7565b92169190910692915050565b60006001600160401b038084168061238e5761238e6122c7565b60006001600160401b03838116908316818110156122bf576122bf612226565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123fe576123fe612226565b5060010190565b6000821982111561241857612418612226565b500190565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220b43162e63e3e6566b152ba23caeacfda17c45d9d044fbd860590d2a4d52f818264736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
