{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExtensibleFallbackHandler",
  "sourceName": "contracts/handler/ExtensibleFallbackHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISafe",
          "name": "safe",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "AddedInterface",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISafe",
          "name": "safe",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "domainSeparator",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "contract ISafeSignatureVerifier",
          "name": "oldVerifier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract ISafeSignatureVerifier",
          "name": "newVerifier",
          "type": "address"
        }
      ],
      "name": "ChangedDomainVerifier",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISafe",
          "name": "safe",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "oldMethod",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "newMethod",
          "type": "bytes32"
        }
      ],
      "name": "ChangedSafeMethod",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISafe",
          "name": "safe",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "RemovedInterface",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        },
        {
          "internalType": "bytes32[]",
          "name": "handlerWithSelectors",
          "type": "bytes32[]"
        }
      ],
      "name": "addSupportedInterfaceBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISafe",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "domainVerifiers",
      "outputs": [
        {
          "internalType": "contract ISafeSignatureVerifier",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_hash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "isValidSignature",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "magic",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        },
        {
          "internalType": "bytes4[]",
          "name": "selectors",
          "type": "bytes4[]"
        }
      ],
      "name": "removeSupportedInterfaceBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISafe",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "safeInterfaces",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISafe",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "safeMethods",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "domainSeparator",
          "type": "bytes32"
        },
        {
          "internalType": "contract ISafeSignatureVerifier",
          "name": "newVerifier",
          "type": "address"
        }
      ],
      "name": "setDomainVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "internalType": "bytes32",
          "name": "newMethod",
          "type": "bytes32"
        }
      ],
      "name": "setSafeMethod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        },
        {
          "internalType": "bool",
          "name": "supported",
          "type": "bool"
        }
      ],
      "name": "setSupportedInterface",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612d8b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610ac5578063b435a13b14610b1e578063bc197c8114610ba1578063f23a6e6114610d37576100d4565b806351cad5ee1461095457806361f5401b146109cc57806364f95acc14610a6e576100d4565b806301ffc9a7146105d45780630a3fe05414610637578063150b7a02146106b85780631626ba7e146107ae578063327b533c146108645780633365582c14610906576100d4565b5b6000366060601860003690501015610154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f696e76616c6964206d6574686f642073656c6563746f7200000000000000000081525060200191505060405180910390fd5b600080600080610162610e37565b9350935093509350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d6574686f642068616e646c6572206e6f74207365740000000000000000000081525060200191505060405180910390fd5b81156103ed578073ffffffffffffffffffffffffffffffffffffffff166325d6803f85856000803660009060146000369050039261024d93929190612d22565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060006040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561032b57600080fd5b810190808051604051939291908464010000000082111561034b57600080fd5b8382019150602082018581111561036157600080fd5b825186600182028301116401000000008211171561037e57600080fd5b8083526020830192505050908051906020019080838360005b838110156103b2578082015181840152602081019050610397565b50505050905090810190601f1680156103df5780820380516001836020036101000a031916815260200191505b5060405250505094506105c5565b8073ffffffffffffffffffffffffffffffffffffffff166325d6803f85856000803660009060146000369050039261042793929190612d22565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156104c957600080fd5b505af11580156104dd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561050757600080fd5b810190808051604051939291908464010000000082111561052757600080fd5b8382019150602082018581111561053d57600080fd5b825186600182028301116401000000008211171561055a57600080fd5b8083526020830192505050908051906020019080838360005b8381101561058e578082015181840152602081019050610573565b50505050905090810190601f1680156105bb5780820380516001836020036101000a031916815260200191505b5060405250505094505b50505050915050805190602001f35b61061f600480360360208110156105ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f14565b60405180821515815260200191505060405180910390f35b6106a26004803603604081101561064d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110a0565b6040518082815260200191505060405180910390f35b610779600480360360808110156106ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184600183028401116401000000008311171561076957600080fd5b90919293919293905050506110c5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61082f600480360360408110156107c457600080fd5b8101908080359060200190929190803590602001906401000000008111156107eb57600080fd5b8201836020820111156107fd57600080fd5b8035906020019184600183028401116401000000008311171561081f57600080fd5b90919293919293905050506110e2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6109046004803603604081101561087a57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156108c057600080fd5b8201836020820111156108d257600080fd5b803590602001918460208302840111640100000000831117156108f457600080fd5b90919293919293905050506115ff565b005b6109526004803603604081101561091c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e9565b005b6109a06004803603604081101561096a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a38565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6c600480360360408110156109e257600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610a2857600080fd5b820183602082011115610a3a57600080fd5b80359060200191846020830284011164010000000083111715610a5c57600080fd5b9091929391929390505050611a7a565b005b610ac360048036036040811015610a8457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050611c97565b005b610b1c60048036036040811015610adb57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050611d5c565b005b610b8960048036036040811015610b3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506120b9565b60405180821515815260200191505060405180910390f35b610d02600480360360a0811015610bb757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c1457600080fd5b820183602082011115610c2657600080fd5b80359060200191846020830284011164010000000083111715610c4857600080fd5b909192939192939080359060200190640100000000811115610c6957600080fd5b820183602082011115610c7b57600080fd5b80359060200191846020830284011164010000000083111715610c9d57600080fd5b909192939192939080359060200190640100000000811115610cbe57600080fd5b820183602082011115610cd057600080fd5b80359060200191846001830284011164010000000083111715610cf257600080fd5b90919293919293905050506120e8565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610e02600480360360a0811015610d4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610dbe57600080fd5b820183602082011115610dd057600080fd5b80359060200191846001830284011164010000000083111715610df257600080fd5b9091929391929390505050612108565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600080600080610e45612126565b8094508195505050610f066000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054612141565b809250819350505090919293565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fdf57507f98c8e097000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610fef5750610fee82612169565b5b806110995750600260006110016123db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b9050919050565b6000602052816000526040600020602052806000526040600020600091509150505481565b60006110cf6123e3565b63150b7a0260e01b905095945050505050565b60008060006110ef612126565b91509150600485859050106115a457600085359050635fd7e97d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561115c575060448686905010155b156115a257600080878760049060449261117893929190612d22565b604081101561118657600080fd5b810190808035906020019092919080359060200190929190505050915091506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461159e576000808a8a600490809261126493929190612d22565b608081101561127257600080fd5b810190808035906020019092919080359060200190929190803590602001906401000000008111156112a357600080fd5b8201836020820111156112b557600080fd5b803590602001918460018302840111640100000000831117156112d757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561133a57600080fd5b82018360208201111561134c57600080fd5b8035906020019184600183028401116401000000008311171561136e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509350935050508b6113cd86868561262f565b80519060200120141561159b578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561149a57808201518184015260208101905061147f565b50505050905090810190601f1680156114c75780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156115005780820151818401526020810190506114e5565b50505050905090810190601f16801561152d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060206040518083038186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b8101908080519060200190929190505050985050505050505050506115f8565b50505b5050505b505b6115f3828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612737565b925050505b9392505050565b6116076123db565b73ffffffffffffffffffffffffffffffffffffffff16611625612a55565b73ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b60006116b8612a55565b905060008060e01b9050600084849050905060005b818110156117225760008060006116f58989868181106116e957fe5b90506020020135612adf565b92509250925061170f878361170a8685612b14565b612b67565b81861895505050508060010190506116cd565b50857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e74657266616365206964206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b6117e1866001611d5c565b505050505050565b6117f16123db565b73ffffffffffffffffffffffffffffffffffffffff1661180f612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b60006118a2612a55565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a250505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a826123db565b73ffffffffffffffffffffffffffffffffffffffff16611aa0612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b6000611b33612a55565b905060008060e01b9050600084849050905060005b81811015611bd057611b8f84878784818110611b6057fe5b905060200201357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000801b612b67565b858582818110611b9b57fe5b905060200201357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191683189250806001019050611b48565b50857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e74657266616365206964206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b611c8f866000611d5c565b505050505050565b611c9f6123db565b73ffffffffffffffffffffffffffffffffffffffff16611cbd612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611d46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b611d58611d51612a55565b8383612b67565b5050565b611d646123db565b73ffffffffffffffffffffffffffffffffffffffff16611d82612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611e0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b6000611e156123db565b905063ffffffff60e01b837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c696420696e7465726661636520696400000000000000000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050801515841515146120b25783826000877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055508315612043578273ffffffffffffffffffffffffffffffffffffffff167f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d8660405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390a26120b1565b8273ffffffffffffffffffffffffffffffffffffffff167ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f8660405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390a25b5b5050505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60006120f26123e3565b63bc197c8160e01b905098975050505050505050565b60006121126123e3565b63f23a6e6160e01b90509695505050505050565b6000806121316123db565b915061213b612a55565b90509091565b6000808260f81c15915073ffffffffffffffffffffffffffffffffffffffff83169050915091565b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061223457507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061229c57507f1626ba7e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061230457507f62af8dc2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061236c57507f99372930000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806123d457507f64f95acc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600033905090565b60003373ffffffffffffffffffffffffffffffffffffffff16635624b25b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b60001c60016040518363ffffffff1660e01b8152600401808381526020018281526020019250505060006040518083038186803b15801561246557600080fd5b505afa158015612479573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156124a357600080fd5b81019080805160405193929190846401000000008211156124c357600080fd5b838201915060208201858111156124d957600080fd5b82518660018202830111640100000000821117156124f657600080fd5b8083526020830192505050908051906020019080838360005b8381101561252a57808201518184015260208101905061250f565b50505050905090810190601f1680156125575780820380516001836020036101000a031916815260200191505b506040525050509050600081806020019051602081101561257757600080fd5b810190808051906020019092919050505090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461262b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420612066616c6c6261636b2063616c6c0000000000000000000000000081525060200191505060405180910390fd5b5050565b6060601960f81b600160f81b8585856040516020018083815260200182805190602001908083835b6020831061267a5780518252602082019150602081019050602083039250612657565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012060405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260010183815260200182815260200194505050505060405160208183030381529060405290509392505050565b60008061282d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b15801561278357600080fd5b505afa158015612797573d6000803e3d6000fd5b505050506040513d60208110156127ad57600080fd5b81019080805190602001909291905050507f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b8660405160200180828152602001915050604051602081830303815290604052805190602001206040516020018082815260200191505060405160208183030381529060405261262f565b905060008180519060200120905060008451141561294c5760008673ffffffffffffffffffffffffffffffffffffffff16635ae6bd37836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561289857600080fd5b505afa1580156128ac573d6000803e3d6000fd5b505050506040513d60208110156128c257600080fd5b81019080805190602001909291905050501415612947576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f48617368206e6f7420617070726f76656400000000000000000000000000000081525060200191505060405180910390fd5b612a42565b8573ffffffffffffffffffffffffffffffffffffffff1663f855438b600083876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129dd5780820151818401526020810190506129c2565b50505050905090810190601f168015612a0a5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b158015612a2957600080fd5b505afa158015612a3d573d6000803e3d6000fd5b505050505b631626ba7e60e01b925050509392505050565b6000601460003690501015612ad2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642063616c6c64617461206c656e67746800000000000000000081525060200191505060405180910390fd5b601436033560601c905090565b60008060008360f81c15925073ffffffffffffffffffffffffffffffffffffffff841690508360a01c60a81b91509193909250565b600082612b41577f0100000000000000000000000000000000000000000000000000000000000000612b44565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205490506000612c0984612141565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c48576000801b93505b83836000877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec86848760405180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001838152602001828152602001935050505060405180910390a2505050505050565b60008085851115612d3257600080fd5b83861115612d3f57600080fd5b600185028301915084860390509450949250505056fea26469706673582212205ef3d30ba0400c51cffe4d66020db6f8e0785fe148ba70591b7ba7b501e647ac64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d35760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610ac5578063b435a13b14610b1e578063bc197c8114610ba1578063f23a6e6114610d37576100d4565b806351cad5ee1461095457806361f5401b146109cc57806364f95acc14610a6e576100d4565b806301ffc9a7146105d45780630a3fe05414610637578063150b7a02146106b85780631626ba7e146107ae578063327b533c146108645780633365582c14610906576100d4565b5b6000366060601860003690501015610154576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f696e76616c6964206d6574686f642073656c6563746f7200000000000000000081525060200191505060405180910390fd5b600080600080610162610e37565b9350935093509350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d6574686f642068616e646c6572206e6f74207365740000000000000000000081525060200191505060405180910390fd5b81156103ed578073ffffffffffffffffffffffffffffffffffffffff166325d6803f85856000803660009060146000369050039261024d93929190612d22565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060006040518083038186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561032b57600080fd5b810190808051604051939291908464010000000082111561034b57600080fd5b8382019150602082018581111561036157600080fd5b825186600182028301116401000000008211171561037e57600080fd5b8083526020830192505050908051906020019080838360005b838110156103b2578082015181840152602081019050610397565b50505050905090810190601f1680156103df5780820380516001836020036101000a031916815260200191505b5060405250505094506105c5565b8073ffffffffffffffffffffffffffffffffffffffff166325d6803f85856000803660009060146000369050039261042793929190612d22565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156104c957600080fd5b505af11580156104dd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561050757600080fd5b810190808051604051939291908464010000000082111561052757600080fd5b8382019150602082018581111561053d57600080fd5b825186600182028301116401000000008211171561055a57600080fd5b8083526020830192505050908051906020019080838360005b8381101561058e578082015181840152602081019050610573565b50505050905090810190601f1680156105bb5780820380516001836020036101000a031916815260200191505b5060405250505094505b50505050915050805190602001f35b61061f600480360360208110156105ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f14565b60405180821515815260200191505060405180910390f35b6106a26004803603604081101561064d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110a0565b6040518082815260200191505060405180910390f35b610779600480360360808110156106ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184600183028401116401000000008311171561076957600080fd5b90919293919293905050506110c5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61082f600480360360408110156107c457600080fd5b8101908080359060200190929190803590602001906401000000008111156107eb57600080fd5b8201836020820111156107fd57600080fd5b8035906020019184600183028401116401000000008311171561081f57600080fd5b90919293919293905050506110e2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6109046004803603604081101561087a57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156108c057600080fd5b8201836020820111156108d257600080fd5b803590602001918460208302840111640100000000831117156108f457600080fd5b90919293919293905050506115ff565b005b6109526004803603604081101561091c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e9565b005b6109a06004803603604081101561096a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a38565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6c600480360360408110156109e257600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610a2857600080fd5b820183602082011115610a3a57600080fd5b80359060200191846020830284011164010000000083111715610a5c57600080fd5b9091929391929390505050611a7a565b005b610ac360048036036040811015610a8457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050611c97565b005b610b1c60048036036040811015610adb57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803515159060200190929190505050611d5c565b005b610b8960048036036040811015610b3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506120b9565b60405180821515815260200191505060405180910390f35b610d02600480360360a0811015610bb757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c1457600080fd5b820183602082011115610c2657600080fd5b80359060200191846020830284011164010000000083111715610c4857600080fd5b909192939192939080359060200190640100000000811115610c6957600080fd5b820183602082011115610c7b57600080fd5b80359060200191846020830284011164010000000083111715610c9d57600080fd5b909192939192939080359060200190640100000000811115610cbe57600080fd5b820183602082011115610cd057600080fd5b80359060200191846001830284011164010000000083111715610cf257600080fd5b90919293919293905050506120e8565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610e02600480360360a0811015610d4d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610dbe57600080fd5b820183602082011115610dd057600080fd5b80359060200191846001830284011164010000000083111715610df257600080fd5b9091929391929390505050612108565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600080600080610e45612126565b8094508195505050610f066000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054612141565b809250819350505090919293565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fdf57507f98c8e097000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610fef5750610fee82612169565b5b806110995750600260006110016123db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b9050919050565b6000602052816000526040600020602052806000526040600020600091509150505481565b60006110cf6123e3565b63150b7a0260e01b905095945050505050565b60008060006110ef612126565b91509150600485859050106115a457600085359050635fd7e97d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561115c575060448686905010155b156115a257600080878760049060449261117893929190612d22565b604081101561118657600080fd5b810190808035906020019092919080359060200190929190505050915091506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461159e576000808a8a600490809261126493929190612d22565b608081101561127257600080fd5b810190808035906020019092919080359060200190929190803590602001906401000000008111156112a357600080fd5b8201836020820111156112b557600080fd5b803590602001918460018302840111640100000000831117156112d757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561133a57600080fd5b82018360208201111561134c57600080fd5b8035906020019184600183028401116401000000008311171561136e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509350935050508b6113cd86868561262f565b80519060200120141561159b578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561149a57808201518184015260208101905061147f565b50505050905090810190601f1680156114c75780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156115005780820151818401526020810190506114e5565b50505050905090810190601f16801561152d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060206040518083038186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d602081101561157b57600080fd5b8101908080519060200190929190505050985050505050505050506115f8565b50505b5050505b505b6115f3828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612737565b925050505b9392505050565b6116076123db565b73ffffffffffffffffffffffffffffffffffffffff16611625612a55565b73ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b60006116b8612a55565b905060008060e01b9050600084849050905060005b818110156117225760008060006116f58989868181106116e957fe5b90506020020135612adf565b92509250925061170f878361170a8685612b14565b612b67565b81861895505050508060010190506116cd565b50857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e74657266616365206964206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b6117e1866001611d5c565b505050505050565b6117f16123db565b73ffffffffffffffffffffffffffffffffffffffff1661180f612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b60006118a2612a55565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a250505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a826123db565b73ffffffffffffffffffffffffffffffffffffffff16611aa0612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b6000611b33612a55565b905060008060e01b9050600084849050905060005b81811015611bd057611b8f84878784818110611b6057fe5b905060200201357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000801b612b67565b858582818110611b9b57fe5b905060200201357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191683189250806001019050611b48565b50857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e74657266616365206964206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b611c8f866000611d5c565b505050505050565b611c9f6123db565b73ffffffffffffffffffffffffffffffffffffffff16611cbd612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611d46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b611d58611d51612a55565b8383612b67565b5050565b611d646123db565b73ffffffffffffffffffffffffffffffffffffffff16611d82612a55565b73ffffffffffffffffffffffffffffffffffffffff1614611e0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f64000081525060200191505060405180910390fd5b6000611e156123db565b905063ffffffff60e01b837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c696420696e7465726661636520696400000000000000000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050801515841515146120b25783826000877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055508315612043578273ffffffffffffffffffffffffffffffffffffffff167f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d8660405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390a26120b1565b8273ffffffffffffffffffffffffffffffffffffffff167ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f8660405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390a25b5b5050505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60006120f26123e3565b63bc197c8160e01b905098975050505050505050565b60006121126123e3565b63f23a6e6160e01b90509695505050505050565b6000806121316123db565b915061213b612a55565b90509091565b6000808260f81c15915073ffffffffffffffffffffffffffffffffffffffff83169050915091565b60007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061223457507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061229c57507f1626ba7e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061230457507f62af8dc2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061236c57507f99372930000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806123d457507f64f95acc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600033905090565b60003373ffffffffffffffffffffffffffffffffffffffff16635624b25b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b60001c60016040518363ffffffff1660e01b8152600401808381526020018281526020019250505060006040518083038186803b15801561246557600080fd5b505afa158015612479573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156124a357600080fd5b81019080805160405193929190846401000000008211156124c357600080fd5b838201915060208201858111156124d957600080fd5b82518660018202830111640100000000821117156124f657600080fd5b8083526020830192505050908051906020019080838360005b8381101561252a57808201518184015260208101905061250f565b50505050905090810190601f1680156125575780820380516001836020036101000a031916815260200191505b506040525050509050600081806020019051602081101561257757600080fd5b810190808051906020019092919050505090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461262b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420612066616c6c6261636b2063616c6c0000000000000000000000000081525060200191505060405180910390fd5b5050565b6060601960f81b600160f81b8585856040516020018083815260200182805190602001908083835b6020831061267a5780518252602082019150602081019050602083039250612657565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012060405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260010183815260200182815260200194505050505060405160208183030381529060405290509392505050565b60008061282d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b15801561278357600080fd5b505afa158015612797573d6000803e3d6000fd5b505050506040513d60208110156127ad57600080fd5b81019080805190602001909291905050507f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b8660405160200180828152602001915050604051602081830303815290604052805190602001206040516020018082815260200191505060405160208183030381529060405261262f565b905060008180519060200120905060008451141561294c5760008673ffffffffffffffffffffffffffffffffffffffff16635ae6bd37836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561289857600080fd5b505afa1580156128ac573d6000803e3d6000fd5b505050506040513d60208110156128c257600080fd5b81019080805190602001909291905050501415612947576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f48617368206e6f7420617070726f76656400000000000000000000000000000081525060200191505060405180910390fd5b612a42565b8573ffffffffffffffffffffffffffffffffffffffff1663f855438b600083876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129dd5780820151818401526020810190506129c2565b50505050905090810190601f168015612a0a5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b158015612a2957600080fd5b505afa158015612a3d573d6000803e3d6000fd5b505050505b631626ba7e60e01b925050509392505050565b6000601460003690501015612ad2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642063616c6c64617461206c656e67746800000000000000000081525060200191505060405180910390fd5b601436033560601c905090565b60008060008360f81c15925073ffffffffffffffffffffffffffffffffffffffff841690508360a01c60a81b91509193909250565b600082612b41577f0100000000000000000000000000000000000000000000000000000000000000612b44565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205490506000612c0984612141565b915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c48576000801b93505b83836000877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec86848760405180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001838152602001828152602001935050505060405180910390a2505050505050565b60008085851115612d3257600080fd5b83861115612d3f57600080fd5b600185028301915084860390509450949250505056fea26469706673582212205ef3d30ba0400c51cffe4d66020db6f8e0785fe148ba70591b7ba7b501e647ac64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
