60806040523480156200001157600080fd5b506040518060400160405280600f81526020017f436f6e666572656e636520436f696e0000000000000000000000000000000000815250600490805190602001906200005f92919062000161565b506040518060400160405280600581526020017f24434f434f00000000000000000000000000000000000000000000000000000081525060059080519060200190620000ad92919062000161565b506b033b2e3c9fd0803ce800000060036000828254620000ce919062000211565b925050819055506003546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030c565b8280546200016f9062000278565b90600052602060002090601f016020900481019282620001935760008555620001df565b82601f10620001ae57805160ff1916838001178555620001df565b82800160010185558215620001df579182015b82811115620001de578251825591602001919060010190620001c1565b5b509050620001ee9190620001f2565b5090565b5b808211156200020d576000816000905550600101620001f3565b5090565b60006200021e826200026e565b91506200022b836200026e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620002635762000262620002ae565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200029157607f821691505b60208210811415620002a857620002a7620002dd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611fc1806200031c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806380aa2744116100a2578063a457c2d711610071578063a457c2d714610309578063a9059cbb14610339578063dbac26e914610369578063dd62ed3e14610399578063f9f92be4146103c957610116565b806380aa27441461028157806395d89b411461029f5780639c3b61c0146102bd5780639dc29fac146102ed57610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806340c10f1914610205578063537df3b61461022157806370a082311461025157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103f9565b60405161013091906118b8565b60405180910390f35b610153600480360381019061014e919061164c565b61048b565b604051610160919061189d565b60405180910390f35b6101716104a9565b60405161017e9190611a3a565b60405180910390f35b6101a1600480360381019061019c91906115f9565b6104b3565b6040516101ae919061189d565b60405180910390f35b6101bf6105ab565b6040516101cc9190611a55565b60405180910390f35b6101ef60048036038101906101ea919061164c565b6105b4565b6040516101fc919061189d565b60405180910390f35b61021f600480360381019061021a919061164c565b610660565b005b61023b6004803603810190610236919061158c565b6106c8565b604051610248919061189d565b60405180910390f35b61026b6004803603810190610266919061158c565b6107db565b6040516102789190611a3a565b60405180910390f35b610289610823565b6040516102969190611882565b60405180910390f35b6102a7610849565b6040516102b491906118b8565b60405180910390f35b6102d760048036038101906102d2919061158c565b6108db565b6040516102e4919061189d565b60405180910390f35b6103076004803603810190610302919061164c565b6109f3565b005b610323600480360381019061031e919061164c565b610a5b565b604051610330919061189d565b60405180910390f35b610353600480360381019061034e919061164c565b610b46565b604051610360919061189d565b60405180910390f35b610383600480360381019061037e919061158c565b610b64565b604051610390919061189d565b60405180910390f35b6103b360048036038101906103ae91906115b9565b610b84565b6040516103c09190611a3a565b60405180910390f35b6103e360048036038101906103de919061158c565b610c0b565b6040516103f0919061189d565b60405180910390f35b60606004805461040890611b9e565b80601f016020809104026020016040519081016040528092919081815260200182805461043490611b9e565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905090565b600061049f610498610d3a565b8484610d42565b6001905092915050565b6000600354905090565b60006104c0848484610f0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061050b610d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561058b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105829061197a565b60405180910390fd5b61059f85610597610d3a565b858403610d42565b60019150509392505050565b60006012905090565b60006106566105c1610d3a565b8484600160006105cf610d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106519190611a8c565b610d42565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ba57600080fd5b6106c4828261125b565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072457600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661077a57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606005805461085890611b9e565b80601f016020809104026020016040519081016040528092919081815260200182805461088490611b9e565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156109a057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6109a957600080fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4d57600080fd5b610a5782826113a3565b5050565b60008060016000610a6a610d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e906119fa565b60405180910390fd5b610b3b610b32610d3a565b85858403610d42565b600191505092915050565b6000610b5a610b53610d3a565b8484610f0d565b6001905092915050565b60026020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c6757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610cd05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610cd957600080fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906119da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e199061193a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f009190611a3a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906119ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906118fa565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110915750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c7906118da565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d9061195a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111e99190611a8c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161124d9190611a3a565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290611a1a565b60405180910390fd5b80600360008282546112dd9190611a8c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113329190611a8c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113979190611a3a565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a9061199a565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114909061191a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546114f09190611ae2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115559190611a3a565b60405180910390a3505050565b60008135905061157181611f5d565b92915050565b60008135905061158681611f74565b92915050565b6000602082840312156115a2576115a1611c2e565b5b60006115b084828501611562565b91505092915050565b600080604083850312156115d0576115cf611c2e565b5b60006115de85828601611562565b92505060206115ef85828601611562565b9150509250929050565b60008060006060848603121561161257611611611c2e565b5b600061162086828701611562565b935050602061163186828701611562565b925050604061164286828701611577565b9150509250925092565b6000806040838503121561166357611662611c2e565b5b600061167185828601611562565b925050602061168285828601611577565b9150509250929050565b61169581611b16565b82525050565b6116a481611b28565b82525050565b60006116b582611a70565b6116bf8185611a7b565b93506116cf818560208601611b6b565b6116d881611c33565b840191505092915050565b60006116f0601f83611a7b565b91506116fb82611c44565b602082019050919050565b6000611713602383611a7b565b915061171e82611c6d565b604082019050919050565b6000611736602283611a7b565b915061174182611cbc565b604082019050919050565b6000611759602283611a7b565b915061176482611d0b565b604082019050919050565b600061177c602683611a7b565b915061178782611d5a565b604082019050919050565b600061179f602883611a7b565b91506117aa82611da9565b604082019050919050565b60006117c2602183611a7b565b91506117cd82611df8565b604082019050919050565b60006117e5602583611a7b565b91506117f082611e47565b604082019050919050565b6000611808602483611a7b565b915061181382611e96565b604082019050919050565b600061182b602583611a7b565b915061183682611ee5565b604082019050919050565b600061184e601f83611a7b565b915061185982611f34565b602082019050919050565b61186d81611b54565b82525050565b61187c81611b5e565b82525050565b6000602082019050611897600083018461168c565b92915050565b60006020820190506118b2600083018461169b565b92915050565b600060208201905081810360008301526118d281846116aa565b905092915050565b600060208201905081810360008301526118f3816116e3565b9050919050565b6000602082019050818103600083015261191381611706565b9050919050565b6000602082019050818103600083015261193381611729565b9050919050565b600060208201905081810360008301526119538161174c565b9050919050565b600060208201905081810360008301526119738161176f565b9050919050565b6000602082019050818103600083015261199381611792565b9050919050565b600060208201905081810360008301526119b3816117b5565b9050919050565b600060208201905081810360008301526119d3816117d8565b9050919050565b600060208201905081810360008301526119f3816117fb565b9050919050565b60006020820190508181036000830152611a138161181e565b9050919050565b60006020820190508181036000830152611a3381611841565b9050919050565b6000602082019050611a4f6000830184611864565b92915050565b6000602082019050611a6a6000830184611873565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a9782611b54565b9150611aa283611b54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ad757611ad6611bd0565b5b828201905092915050565b6000611aed82611b54565b9150611af883611b54565b925082821015611b0b57611b0a611bd0565b5b828203905092915050565b6000611b2182611b34565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b89578082015181840152602081019050611b6e565b83811115611b98576000848401525b50505050565b60006002820490506001821680611bb657607f821691505b60208210811415611bca57611bc9611bff565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f426c61636b6c69737465642053656e646572206f7220526563697069656e7400600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611f6681611b16565b8114611f7157600080fd5b50565b611f7d81611b54565b8114611f8857600080fd5b5056fea26469706673582212202bfb4e75385162a3993b0c75019a61690df8da3b1352cf872ff75002e4e663a964736f6c63430008070033