0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ad29ffde11610064578063ad29ffde146103d2578063bbcaac38146103fb578063dd62ed3e14610424578063dd8c2e0f14610461578063f2fde38b146104785761012a565b80638da5cb5b146102eb57806395d89b411461031657806399c8d556146103415780639e752b951461036c578063a9059cbb146103955761012a565b806323b872dd116100e757806323b872dd14610204578063313ce5671461024157806349bd5a5e1461026c57806370a0823114610297578063715018a6146102d45761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806320800a00146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104a1565b60405161015191906122c9565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612389565b610533565b60405161018e91906123e4565b60405180910390f35b3480156101a357600080fd5b506101ac610551565b6040516101b9919061245e565b60405180910390f35b3480156101ce57600080fd5b506101d7610577565b6040516101e49190612488565b60405180910390f35b3480156101f957600080fd5b50610202610581565b005b34801561021057600080fd5b5061022b600480360381019061022691906124a3565b610687565b60405161023891906123e4565b60405180910390f35b34801561024d57600080fd5b50610256610760565b6040516102639190612512565b60405180910390f35b34801561027857600080fd5b50610281610769565b60405161028e919061253c565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612557565b61078f565b6040516102cb9190612488565b60405180910390f35b3480156102e057600080fd5b506102e96107d8565b005b3480156102f757600080fd5b5061030061092b565b60405161030d919061253c565b60405180910390f35b34801561032257600080fd5b5061032b610954565b60405161033891906122c9565b60405180910390f35b34801561034d57600080fd5b506103566109e6565b6040516103639190612488565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190612584565b6109ec565b005b3480156103a157600080fd5b506103bc60048036038101906103b79190612389565b610acf565b6040516103c991906123e4565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612642565b610aed565b005b34801561040757600080fd5b50610422600480360381019061041d9190612557565b610c62565b005b34801561043057600080fd5b5061044b600480360381019061044691906126a2565b610d72565b6040516104589190612488565b60405180910390f35b34801561046d57600080fd5b50610476610df9565b005b34801561048457600080fd5b5061049f600480360381019061049a9190612557565b61100c565b005b6060600680546104b090612711565b80601f01602080910402602001604051908101604052809291908181526020018280546104dc90612711565b80156105295780601f106104fe57610100808354040283529160200191610529565b820191906000526020600020905b81548152906001019060200180831161050c57829003601f168201915b5050505050905090565b60006105476105406111cd565b84846111d5565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6105896111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d9061278e565b60405180910390fd5b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610683573d6000803e3d6000fd5b5050565b600061069484848461139e565b610755846106a06111cd565b610750856040518060600160405280602881526020016130fc60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107066111cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d089092919063ffffffff16565b6111d5565b600190509392505050565b60006012905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e06111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108649061278e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461096390612711565b80601f016020809104026020016040519081016040528092919081815260200182805461098f90612711565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b5050505050905090565b600d5481565b6109f46111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a789061278e565b60405180910390fd5b600d548110610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc906127fa565b60405180910390fd5b80600d8190555050565b6000610ae3610adc6111cd565b848461139e565b6001905092915050565b610af56111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061278e565b60405180910390fd5b60005b83839050811015610c21578160046000868685818110610ba857610ba761281a565b5b9050602002016020810190610bbd9190612557565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c1990612878565b915050610b85565b507f7822dc9764405539743916993e80ae170e00fc98d725c3f4e40c5bb1855ee172838383604051610c5593929190612983565b60405180910390a1505050565b610c6a6111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061278e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff001ee6f32712c5fdd52be72b85b35251984a9917f9ef409eb66b604baaa2b9281604051610d67919061253c565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e016111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e859061278e565b60405180910390fd5b6000610e993061078f565b9050610eed81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fa48160026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6110146111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110989061278e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790612a01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90612a93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90612b25565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113919190612488565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490612bb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390612c49565b60405180910390fd5b600081116114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690612cdb565b60405180910390fd5b60006114c961092b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611537575061150761092b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a575760006115473061078f565b9050600c60149054906101000a900460ff161580156115b35750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115c0575060085481115b156115f3576115d96115d460095483611e14565b611e2d565b600047905060008111156115f1576115f0476120a6565b5b505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561169e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611775576004600d541180156116ff5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561174a57600954831115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174090612d47565b60405180910390fd5b5b6117726064611764600d548661211290919063ffffffff16565b61218c90919063ffffffff16565b91505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118205750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156118f7576004600d541180156118815750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118cc576009548311156118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290612d47565b60405180910390fd5b5b6118f460646118e6600d548661211290919063ffffffff16565b61218c90919063ffffffff16565b91505b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119985750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a4b5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611a4a5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5557600091505b505b6000611a6c8284611d6c90919063ffffffff16565b9050611ac083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115611c9c57611bf382600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c939190612488565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf99190612488565b60405180910390a35050505050565b6000838311158290611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4791906122c9565b60405180910390fd5b5060008385611d5f9190612d67565b9050809150509392505050565b6000611dae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d08565b905092915050565b6000808284611dc59190612d9b565b905083811015611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190612e1b565b60405180910390fd5b8091505092915050565b6000818311611e235782611e25565b815b905092915050565b6001600c60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e6557611e64612e3b565b5b604051908082528060200260200182016040528015611e935781602001602082028036833780820191505090505b5090503081600081518110611eab57611eaa61281a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190612e7f565b81600181518110611f8a57611f8961281a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ff130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111d5565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612055959493929190612f6d565b600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b50505050506000600c60146101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561210e573d6000803e3d6000fd5b5050565b60008083036121245760009050612186565b600082846121329190612fc7565b90508284826121419190613038565b14612181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612178906130db565b60405180910390fd5b809150505b92915050565b60006121ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121d6565b905092915050565b6000808311829061221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221491906122c9565b60405180910390fd5b506000838561222c9190613038565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612273578082015181840152602081019050612258565b60008484015250505050565b6000601f19601f8301169050919050565b600061229b82612239565b6122a58185612244565b93506122b5818560208601612255565b6122be8161227f565b840191505092915050565b600060208201905081810360008301526122e38184612290565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612320826122f5565b9050919050565b61233081612315565b811461233b57600080fd5b50565b60008135905061234d81612327565b92915050565b6000819050919050565b61236681612353565b811461237157600080fd5b50565b6000813590506123838161235d565b92915050565b600080604083850312156123a05761239f6122eb565b5b60006123ae8582860161233e565b92505060206123bf85828601612374565b9150509250929050565b60008115159050919050565b6123de816123c9565b82525050565b60006020820190506123f960008301846123d5565b92915050565b6000819050919050565b600061242461241f61241a846122f5565b6123ff565b6122f5565b9050919050565b600061243682612409565b9050919050565b60006124488261242b565b9050919050565b6124588161243d565b82525050565b6000602082019050612473600083018461244f565b92915050565b61248281612353565b82525050565b600060208201905061249d6000830184612479565b92915050565b6000806000606084860312156124bc576124bb6122eb565b5b60006124ca8682870161233e565b93505060206124db8682870161233e565b92505060406124ec86828701612374565b9150509250925092565b600060ff82169050919050565b61250c816124f6565b82525050565b60006020820190506125276000830184612503565b92915050565b61253681612315565b82525050565b6000602082019050612551600083018461252d565b92915050565b60006020828403121561256d5761256c6122eb565b5b600061257b8482850161233e565b91505092915050565b60006020828403121561259a576125996122eb565b5b60006125a884828501612374565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126125d6576125d56125b1565b5b8235905067ffffffffffffffff8111156125f3576125f26125b6565b5b60208301915083602082028301111561260f5761260e6125bb565b5b9250929050565b61261f816123c9565b811461262a57600080fd5b50565b60008135905061263c81612616565b92915050565b60008060006040848603121561265b5761265a6122eb565b5b600084013567ffffffffffffffff811115612679576126786122f0565b5b612685868287016125c0565b935093505060206126988682870161262d565b9150509250925092565b600080604083850312156126b9576126b86122eb565b5b60006126c78582860161233e565b92505060206126d88582860161233e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061272957607f821691505b60208210810361273c5761273b6126e2565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000612778601783612244565b915061278382612742565b602082019050919050565b600060208201905081810360008301526127a78161276b565b9050919050565b7f6d757374206265206c6f776572207468616e2063757272656e74207461780000600082015250565b60006127e4601e83612244565b91506127ef826127ae565b602082019050919050565b60006020820190508181036000830152612813816127d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061288382612353565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128b5576128b4612849565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6128e481612315565b82525050565b60006128f683836128db565b60208301905092915050565b6000612911602084018461233e565b905092915050565b6000602082019050919050565b600061293283856128c0565b935061293d826128d1565b8060005b85811015612976576129538284612902565b61295d88826128ea565b975061296883612919565b925050600181019050612941565b5085925050509392505050565b6000604082019050818103600083015261299e818587612926565b90506129ad60208301846123d5565b949350505050565b7f5a45524f20414444524553530000000000000000000000000000000000000000600082015250565b60006129eb600c83612244565b91506129f6826129b5565b602082019050919050565b60006020820190508181036000830152612a1a816129de565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a7d602483612244565b9150612a8882612a21565b604082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0f602283612244565b9150612b1a82612ab3565b604082019050919050565b60006020820190508181036000830152612b3e81612b02565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ba1602583612244565b9150612bac82612b45565b604082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c33602383612244565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612cc5602983612244565b9150612cd082612c69565b604082019050919050565b60006020820190508181036000830152612cf481612cb8565b9050919050565b7f6d61785478000000000000000000000000000000000000000000000000000000600082015250565b6000612d31600583612244565b9150612d3c82612cfb565b602082019050919050565b60006020820190508181036000830152612d6081612d24565b9050919050565b6000612d7282612353565b9150612d7d83612353565b9250828203905081811115612d9557612d94612849565b5b92915050565b6000612da682612353565b9150612db183612353565b9250828201905080821115612dc957612dc8612849565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612e05601b83612244565b9150612e1082612dcf565b602082019050919050565b60006020820190508181036000830152612e3481612df8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612e7981612327565b92915050565b600060208284031215612e9557612e946122eb565b5b6000612ea384828501612e6a565b91505092915050565b6000819050919050565b6000612ed1612ecc612ec784612eac565b6123ff565b612353565b9050919050565b612ee181612eb6565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000612f1a82612ee7565b612f2481856128c0565b9350612f2f83612ef2565b8060005b83811015612f60578151612f4788826128ea565b9750612f5283612f02565b925050600181019050612f33565b5085935050505092915050565b600060a082019050612f826000830188612479565b612f8f6020830187612ed8565b8181036040830152612fa18186612f0f565b9050612fb0606083018561252d565b612fbd6080830184612479565b9695505050505050565b6000612fd282612353565b9150612fdd83612353565b9250828202612feb81612353565b9150828204841483151761300257613001612849565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061304382612353565b915061304e83612353565b92508261305e5761305d613009565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c5602183612244565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040adde1591b2ab37bf22557c00a9277e1b02f67b287c79b3b532e645b7099d6564736f6c63430008120033
0x60806040526012600a62000014919062000897565b633b9aca00620000259190620008e8565b6005556040518060400160405280600581526020017f41544c4153000000000000000000000000000000000000000000000000000000815250600690816200006e919062000ba3565b506040518060400160405280600581526020017f41544c415300000000000000000000000000000000000000000000000000000081525060079081620000b5919062000ba3565b506012600a620000c6919062000897565b621e8480620000d69190620008e8565b6008556012600a620000e9919062000897565b624c4b40620000f99190620008e8565b6009556000600c60146101000a81548160ff0219169083151502179055503480156200012457600080fd5b50600062000137620006cc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001e5620006cc60201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055460026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000cf4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000cf4565b6040518363ffffffff1660e01b81526004016200040692919062000d37565b6020604051808303816000875af115801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c919062000cf4565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620004a2620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506063600d81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620006bd919062000d75565b60405180910390a35062000d92565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200078b57808604811115620007635762000762620006fd565b5b6001851615620007735780820291505b808102905062000783856200072c565b945062000743565b94509492505050565b600082620007a6576001905062000879565b81620007b6576000905062000879565b8160018114620007cf5760028114620007da5762000810565b600191505062000879565b60ff841115620007ef57620007ee620006fd565b5b8360020a915084821115620008095762000808620006fd565b5b5062000879565b5060208310610133831016604e8410600b84101617156200084a5782820a905083811115620008445762000843620006fd565b5b62000879565b62000859848484600162000739565b92509050818404811115620008735762000872620006fd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008a48262000880565b9150620008b1836200088a565b9250620008e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000794565b905092915050565b6000620008f58262000880565b9150620009028362000880565b9250828202620009128162000880565b915082820484148315176200092c576200092b620006fd565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009b557607f821691505b602082108103620009cb57620009ca6200096d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009f6565b62000a418683620009f6565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a8462000a7e62000a788462000880565b62000a59565b62000880565b9050919050565b6000819050919050565b62000aa08362000a63565b62000ab862000aaf8262000a8b565b84845462000a03565b825550505050565b600090565b62000acf62000ac0565b62000adc81848462000a95565b505050565b5b8181101562000b045762000af860008262000ac5565b60018101905062000ae2565b5050565b601f82111562000b535762000b1d81620009d1565b62000b2884620009e6565b8101602085101562000b38578190505b62000b5062000b4785620009e6565b83018262000ae1565b50505b505050565b600082821c905092915050565b600062000b786000198460080262000b58565b1980831691505092915050565b600062000b93838362000b65565b9150826002028217905092915050565b62000bae8262000933565b67ffffffffffffffff81111562000bca5762000bc96200093e565b5b62000bd682546200099c565b62000be382828562000b08565b600060209050601f83116001811462000c1b576000841562000c06578287015190505b62000c12858262000b85565b86555062000c82565b601f19841662000c2b86620009d1565b60005b8281101562000c555784890151825560018201915060208501945060208101905062000c2e565b8683101562000c75578489015162000c71601f89168262000b65565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cbc8262000c8f565b9050919050565b62000cce8162000caf565b811462000cda57600080fd5b50565b60008151905062000cee8162000cc3565b92915050565b60006020828403121562000d0d5762000d0c62000c8a565b5b600062000d1d8482850162000cdd565b91505092915050565b62000d318162000caf565b82525050565b600060408201905062000d4e600083018562000d26565b62000d5d602083018462000d26565b9392505050565b62000d6f8162000880565b82525050565b600060208201905062000d8c600083018462000d64565b92915050565b6131598062000da26000396000f3fe6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ad29ffde11610064578063ad29ffde146103d2578063bbcaac38146103fb578063dd62ed3e14610424578063dd8c2e0f14610461578063f2fde38b146104785761012a565b80638da5cb5b146102eb57806395d89b411461031657806399c8d556146103415780639e752b951461036c578063a9059cbb146103955761012a565b806323b872dd116100e757806323b872dd14610204578063313ce5671461024157806349bd5a5e1461026c57806370a0823114610297578063715018a6146102d45761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806320800a00146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104a1565b60405161015191906122c9565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612389565b610533565b60405161018e91906123e4565b60405180910390f35b3480156101a357600080fd5b506101ac610551565b6040516101b9919061245e565b60405180910390f35b3480156101ce57600080fd5b506101d7610577565b6040516101e49190612488565b60405180910390f35b3480156101f957600080fd5b50610202610581565b005b34801561021057600080fd5b5061022b600480360381019061022691906124a3565b610687565b60405161023891906123e4565b60405180910390f35b34801561024d57600080fd5b50610256610760565b6040516102639190612512565b60405180910390f35b34801561027857600080fd5b50610281610769565b60405161028e919061253c565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190612557565b61078f565b6040516102cb9190612488565b60405180910390f35b3480156102e057600080fd5b506102e96107d8565b005b3480156102f757600080fd5b5061030061092b565b60405161030d919061253c565b60405180910390f35b34801561032257600080fd5b5061032b610954565b60405161033891906122c9565b60405180910390f35b34801561034d57600080fd5b506103566109e6565b6040516103639190612488565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190612584565b6109ec565b005b3480156103a157600080fd5b506103bc60048036038101906103b79190612389565b610acf565b6040516103c991906123e4565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612642565b610aed565b005b34801561040757600080fd5b50610422600480360381019061041d9190612557565b610c62565b005b34801561043057600080fd5b5061044b600480360381019061044691906126a2565b610d72565b6040516104589190612488565b60405180910390f35b34801561046d57600080fd5b50610476610df9565b005b34801561048457600080fd5b5061049f600480360381019061049a9190612557565b61100c565b005b6060600680546104b090612711565b80601f01602080910402602001604051908101604052809291908181526020018280546104dc90612711565b80156105295780601f106104fe57610100808354040283529160200191610529565b820191906000526020600020905b81548152906001019060200180831161050c57829003601f168201915b5050505050905090565b60006105476105406111cd565b84846111d5565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6105896111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d9061278e565b60405180910390fd5b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610683573d6000803e3d6000fd5b5050565b600061069484848461139e565b610755846106a06111cd565b610750856040518060600160405280602881526020016130fc60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107066111cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d089092919063ffffffff16565b6111d5565b600190509392505050565b60006012905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e06111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108649061278e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461096390612711565b80601f016020809104026020016040519081016040528092919081815260200182805461098f90612711565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b5050505050905090565b600d5481565b6109f46111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a789061278e565b60405180910390fd5b600d548110610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc906127fa565b60405180910390fd5b80600d8190555050565b6000610ae3610adc6111cd565b848461139e565b6001905092915050565b610af56111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061278e565b60405180910390fd5b60005b83839050811015610c21578160046000868685818110610ba857610ba761281a565b5b9050602002016020810190610bbd9190612557565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c1990612878565b915050610b85565b507f7822dc9764405539743916993e80ae170e00fc98d725c3f4e40c5bb1855ee172838383604051610c5593929190612983565b60405180910390a1505050565b610c6a6111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061278e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff001ee6f32712c5fdd52be72b85b35251984a9917f9ef409eb66b604baaa2b9281604051610d67919061253c565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e016111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e859061278e565b60405180910390fd5b6000610e993061078f565b9050610eed81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fa48160026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6110146111cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110989061278e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790612a01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90612a93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa90612b25565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113919190612488565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490612bb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390612c49565b60405180910390fd5b600081116114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690612cdb565b60405180910390fd5b60006114c961092b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611537575061150761092b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a575760006115473061078f565b9050600c60149054906101000a900460ff161580156115b35750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156115c0575060085481115b156115f3576115d96115d460095483611e14565b611e2d565b600047905060008111156115f1576115f0476120a6565b5b505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561169e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611775576004600d541180156116ff5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561174a57600954831115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174090612d47565b60405180910390fd5b5b6117726064611764600d548661211290919063ffffffff16565b61218c90919063ffffffff16565b91505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118205750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156118f7576004600d541180156118815750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118cc576009548311156118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290612d47565b60405180910390fd5b5b6118f460646118e6600d548661211290919063ffffffff16565b61218c90919063ffffffff16565b91505b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119985750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a4b5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611a4a5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a5557600091505b505b6000611a6c8284611d6c90919063ffffffff16565b9050611ac083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115611c9c57611bf382600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c939190612488565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf99190612488565b60405180910390a35050505050565b6000838311158290611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4791906122c9565b60405180910390fd5b5060008385611d5f9190612d67565b9050809150509392505050565b6000611dae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d08565b905092915050565b6000808284611dc59190612d9b565b905083811015611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190612e1b565b60405180910390fd5b8091505092915050565b6000818311611e235782611e25565b815b905092915050565b6001600c60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e6557611e64612e3b565b5b604051908082528060200260200182016040528015611e935781602001602082028036833780820191505090505b5090503081600081518110611eab57611eaa61281a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190612e7f565b81600181518110611f8a57611f8961281a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ff130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111d5565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612055959493929190612f6d565b600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b50505050506000600c60146101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561210e573d6000803e3d6000fd5b5050565b60008083036121245760009050612186565b600082846121329190612fc7565b90508284826121419190613038565b14612181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612178906130db565b60405180910390fd5b809150505b92915050565b60006121ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121d6565b905092915050565b6000808311829061221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221491906122c9565b60405180910390fd5b506000838561222c9190613038565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612273578082015181840152602081019050612258565b60008484015250505050565b6000601f19601f8301169050919050565b600061229b82612239565b6122a58185612244565b93506122b5818560208601612255565b6122be8161227f565b840191505092915050565b600060208201905081810360008301526122e38184612290565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612320826122f5565b9050919050565b61233081612315565b811461233b57600080fd5b50565b60008135905061234d81612327565b92915050565b6000819050919050565b61236681612353565b811461237157600080fd5b50565b6000813590506123838161235d565b92915050565b600080604083850312156123a05761239f6122eb565b5b60006123ae8582860161233e565b92505060206123bf85828601612374565b9150509250929050565b60008115159050919050565b6123de816123c9565b82525050565b60006020820190506123f960008301846123d5565b92915050565b6000819050919050565b600061242461241f61241a846122f5565b6123ff565b6122f5565b9050919050565b600061243682612409565b9050919050565b60006124488261242b565b9050919050565b6124588161243d565b82525050565b6000602082019050612473600083018461244f565b92915050565b61248281612353565b82525050565b600060208201905061249d6000830184612479565b92915050565b6000806000606084860312156124bc576124bb6122eb565b5b60006124ca8682870161233e565b93505060206124db8682870161233e565b92505060406124ec86828701612374565b9150509250925092565b600060ff82169050919050565b61250c816124f6565b82525050565b60006020820190506125276000830184612503565b92915050565b61253681612315565b82525050565b6000602082019050612551600083018461252d565b92915050565b60006020828403121561256d5761256c6122eb565b5b600061257b8482850161233e565b91505092915050565b60006020828403121561259a576125996122eb565b5b60006125a884828501612374565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126125d6576125d56125b1565b5b8235905067ffffffffffffffff8111156125f3576125f26125b6565b5b60208301915083602082028301111561260f5761260e6125bb565b5b9250929050565b61261f816123c9565b811461262a57600080fd5b50565b60008135905061263c81612616565b92915050565b60008060006040848603121561265b5761265a6122eb565b5b600084013567ffffffffffffffff811115612679576126786122f0565b5b612685868287016125c0565b935093505060206126988682870161262d565b9150509250925092565b600080604083850312156126b9576126b86122eb565b5b60006126c78582860161233e565b92505060206126d88582860161233e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061272957607f821691505b60208210810361273c5761273b6126e2565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000612778601783612244565b915061278382612742565b602082019050919050565b600060208201905081810360008301526127a78161276b565b9050919050565b7f6d757374206265206c6f776572207468616e2063757272656e74207461780000600082015250565b60006127e4601e83612244565b91506127ef826127ae565b602082019050919050565b60006020820190508181036000830152612813816127d7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061288382612353565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128b5576128b4612849565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6128e481612315565b82525050565b60006128f683836128db565b60208301905092915050565b6000612911602084018461233e565b905092915050565b6000602082019050919050565b600061293283856128c0565b935061293d826128d1565b8060005b85811015612976576129538284612902565b61295d88826128ea565b975061296883612919565b925050600181019050612941565b5085925050509392505050565b6000604082019050818103600083015261299e818587612926565b90506129ad60208301846123d5565b949350505050565b7f5a45524f20414444524553530000000000000000000000000000000000000000600082015250565b60006129eb600c83612244565b91506129f6826129b5565b602082019050919050565b60006020820190508181036000830152612a1a816129de565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a7d602483612244565b9150612a8882612a21565b604082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0f602283612244565b9150612b1a82612ab3565b604082019050919050565b60006020820190508181036000830152612b3e81612b02565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ba1602583612244565b9150612bac82612b45565b604082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c33602383612244565b9150612c3e82612bd7565b604082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612cc5602983612244565b9150612cd082612c69565b604082019050919050565b60006020820190508181036000830152612cf481612cb8565b9050919050565b7f6d61785478000000000000000000000000000000000000000000000000000000600082015250565b6000612d31600583612244565b9150612d3c82612cfb565b602082019050919050565b60006020820190508181036000830152612d6081612d24565b9050919050565b6000612d7282612353565b9150612d7d83612353565b9250828203905081811115612d9557612d94612849565b5b92915050565b6000612da682612353565b9150612db183612353565b9250828201905080821115612dc957612dc8612849565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612e05601b83612244565b9150612e1082612dcf565b602082019050919050565b60006020820190508181036000830152612e3481612df8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612e7981612327565b92915050565b600060208284031215612e9557612e946122eb565b5b6000612ea384828501612e6a565b91505092915050565b6000819050919050565b6000612ed1612ecc612ec784612eac565b6123ff565b612353565b9050919050565b612ee181612eb6565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b6000612f1a82612ee7565b612f2481856128c0565b9350612f2f83612ef2565b8060005b83811015612f60578151612f4788826128ea565b9750612f5283612f02565b925050600181019050612f33565b5085935050505092915050565b600060a082019050612f826000830188612479565b612f8f6020830187612ed8565b8181036040830152612fa18186612f0f565b9050612fb0606083018561252d565b612fbd6080830184612479565b9695505050505050565b6000612fd282612353565b9150612fdd83612353565b9250828202612feb81612353565b9150828204841483151761300257613001612849565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061304382612353565b915061304e83612353565b92508261305e5761305d613009565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c5602183612244565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040adde1591b2ab37bf22557c00a9277e1b02f67b287c79b3b532e645b7099d6564736f6c63430008120033