60806040523480156200001157600080fd5b506040518060600160405280602c815260200162004645602c91396040518060400160405280600481526020017f414d4c5000000000000000000000000000000000000000000000000000000000815250600082828282600090805190602001906200007f929190620003fd565b50816001908051906020019062000098929190620003fd565b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000ec3382620000f860201b60201c565b5050505050506200072f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200016b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001629062000513565b60405180910390fd5b6200017c82620002f860201b60201c565b806002546200018c919062000563565b60028190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620001df919062000563565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200028c578060035462000285919062000563565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002ec919062000535565b60405180910390a35050565b60005b600780549050811015620003f95760006007828154811062000346577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401620003ae9190620004f6565b600060405180830381600087803b158015620003c957600080fd5b505af1158015620003de573d6000803e3d6000fd5b50505050508080620003f09062000634565b915050620002fb565b5050565b8280546200040b90620005fe565b90600052602060002090601f0160209004810192826200042f57600085556200047b565b82601f106200044a57805160ff19168380011785556200047b565b828001600101855582156200047b579182015b828111156200047a5782518255916020019190600101906200045d565b5b5090506200048a91906200048e565b5090565b5b80821115620004a95760008160009055506001016200048f565b5090565b620004b881620005c0565b82525050565b6000620004cd60238362000552565b9150620004da82620006e0565b604082019050919050565b620004f081620005f4565b82525050565b60006020820190506200050d6000830184620004ad565b92915050565b600060208201905081810360008301526200052e81620004be565b9050919050565b60006020820190506200054c6000830184620004e5565b92915050565b600082825260208201905092915050565b60006200057082620005f4565b91506200057d83620005f4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005b557620005b462000682565b5b828201905092915050565b6000620005cd82620005d4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200061757607f821691505b602082108114156200062e576200062d620006b1565b5b50919050565b60006200064182620005f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000677576200067662000682565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f42617365546f6b656e3a206d696e7420746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b613f06806200073f6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636228907711610125578063a9059cbb116100ad578063cf456ae71161007c578063cf456ae714610685578063cfad57a2146106a1578063dd62ed3e146106bd578063dfbaefb1146106ed578063fb30d9161461070b5761021c565b8063a9059cbb146105e9578063aa271e1a14610619578063af640d0f14610649578063c93be636146106675761021c565b80639554381a116100f45780639554381a1461054757806395d89b4114610577578063996f11ee146105955780639cb7de4b146105b15780639dc29fac146105cd5761021c565b806362289077146104c157806370480275146104dd57806370a08231146104f9578063817b1cd2146105295761021c565b806327e235e3116101a857806346ea87af1161017757806346ea87af146103e557806352cd38d91461041557806355b6ed5c146104455780635a47a1a71461047557806360217267146104915761021c565b806327e235e31461034b578063313ce5671461037b57806340c10f1914610399578063429b62e5146103b55761021c565b80631785f53c116101ef5780631785f53c146102a957806318160ddd146102c55780631e83409a146102e357806323b872dd146102ff578063276eab4e1461032f5761021c565b806301e336671461022157806306fdde031461023d578063095ea7b31461025b57806312d43a511461028b575b600080fd5b61023b60048036038101906102369190612e4b565b610727565b005b6102456107e7565b60405161025291906133d5565b60405180910390f35b61027560048036038101906102709190612ed6565b610875565b60405161028291906133ba565b60405180910390f35b61029361088c565b6040516102a0919061334d565b60405180910390f35b6102c360048036038101906102be9190612de6565b6108b2565b005b6102cd61099d565b6040516102da9190613657565b60405180910390f35b6102fd60048036038101906102f89190612de6565b6109a3565b005b61031960048036038101906103149190612e4b565b610ac2565b60405161032691906133ba565b60405180910390f35b61034960048036038101906103449190612f12565b610c98565b005b61036560048036038101906103609190612de6565b610e12565b6040516103729190613657565b60405180910390f35b610383610e2a565b6040516103909190613672565b60405180910390f35b6103b360048036038101906103ae9190612ed6565b610e2f565b005b6103cf60048036038101906103ca9190612de6565b610ec9565b6040516103dc91906133ba565b60405180910390f35b6103ff60048036038101906103fa9190612de6565b610ee9565b60405161040c91906133ba565b60405180910390f35b61042f600480360381019061042a9190612fa5565b610f09565b60405161043c919061334d565b60405180910390f35b61045f600480360381019061045a9190612e0f565b610f48565b60405161046c9190613657565b60405180910390f35b61048f600480360381019061048a9190612f53565b610f6d565b005b6104ab60048036038101906104a69190612de6565b61101a565b6040516104b89190613657565b60405180910390f35b6104db60048036038101906104d69190612de6565b6110bf565b005b6104f760048036038101906104f29190612de6565b61128f565b005b610513600480360381019061050e9190612de6565b6113ea565b6040516105209190613657565b60405180910390f35b610531611433565b60405161053e9190613657565b60405180910390f35b610561600480360381019061055c9190612de6565b61144a565b60405161056e91906133ba565b60405180910390f35b61057f61146a565b60405161058c91906133d5565b60405180910390f35b6105af60048036038101906105aa9190612e0f565b6114f8565b005b6105cb60048036038101906105c69190612e9a565b6116a4565b005b6105e760048036038101906105e29190612ed6565b6117ff565b005b61060360048036038101906105fe9190612ed6565b611899565b60405161061091906133ba565b60405180910390f35b610633600480360381019061062e9190612de6565b6118b0565b60405161064091906133ba565b60405180910390f35b6106516118d0565b60405161065e91906133d5565b60405180910390f35b61066f61190d565b60405161067c9190613657565b60405180910390f35b61069f600480360381019061069a9190612e9a565b611913565b005b6106bb60048036038101906106b69190612de6565b611a6e565b005b6106d760048036038101906106d29190612e0f565b611bb2565b6040516106e49190613657565b60405180910390f35b6106f5611c39565b60405161070291906133ba565b60405180910390f35b61072560048036038101906107209190612de6565b611c4c565b005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ae906134b7565b60405180910390fd5b6107e282828573ffffffffffffffffffffffffffffffffffffffff16611e1b9092919063ffffffff16565b505050565b600080546107f490613822565b80601f016020809104026020016040519081016040528092919081815260200182805461082090613822565b801561086d5780601f106108425761010080835404028352916020019161086d565b820191906000526020600020905b81548152906001019060200180831161085057829003601f168201915b505050505081565b6000610882338484611ea1565b6001905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610939906134b7565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60025481565b60005b600780549050811015610abe576000600782815481106109ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34233856040518363ffffffff1660e01b8152600401610a57929190613368565b602060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa99190612fce565b50508080610ab690613885565b9150506109a6565b5050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b2a57610b2184848461206c565b60019050610c91565b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be090613477565b60405180910390fd5b600082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c739190613766565b9050610c80853383611ea1565b610c8b85858561206c565b60019150505b9392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f906134b7565b60405180910390fd5b60005b8151811015610df757600073ffffffffffffffffffffffffffffffffffffffff16828281518110610d85577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb906134f7565b60405180910390fd5b8080610def90613885565b915050610d2b565b508060079080519060200190610e0e929190612c40565b5050565b60056020528060005260406000206000915090505481565b601281565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613537565b60405180910390fd5b610ec582826124d6565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60078181548110610f1957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052816000526040600020602052806000526040600020600091509150505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906134b7565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561107757600090506110ba565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661114b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611142906134b7565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90613577565b60405180910390fd5b6111e1816126c2565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003546112869190613710565b60038190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461131f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611316906134b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561138f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611386906134b7565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006003546002546114459190613766565b905090565b60086020528060005260406000206000915054906101000a900460ff1681565b6001805461147790613822565b80601f01602080910402602001604051908101604052809291908181526020018280546114a390613822565b80156114f05780601f106114c5576101008083540402835291602001916114f0565b820191906000526020600020905b8154815290600101906020018083116114d357829003601f168201915b505050505081565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157b906134b7565b60405180910390fd5b60005b60078054905081101561169f576000600782815481106115d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166321c0b34285856040518363ffffffff1660e01b8152600401611638929190613368565b602060405180830381600087803b15801561165257600080fd5b505af1158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190612fce565b5050808061169790613885565b915050611587565b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b906134b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613597565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613537565b60405180910390fd5b61189582826127be565b5050565b60006118a633848461206c565b6001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f414d4c5000000000000000000000000000000000000000000000000000000000815250905090565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a906134b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613557565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906134b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b65906134b7565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf906134b7565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b906135d7565b60405180910390fd5b611d6d816126c2565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600354611e129190613766565b60038190555050565b611e9c8363a9059cbb60e01b8484604051602401611e3a929190613391565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129aa565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f08906134d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7890613457565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161205f9190613657565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390613637565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214390613417565b60405180910390fd5b600a60009054906101000a900460ff16156121ee57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e4906133f7565b60405180910390fd5b5b6121f7836126c2565b612200826126c2565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990613517565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122cd9190613766565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461235b9190613710565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561240557806003546123fe9190613766565b6003819055505b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561246c57806003546124659190613710565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124c99190613657565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d90613437565b60405180910390fd5b61254f826126c2565b8060025461255d9190613710565b60028190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ae9190613710565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561265857806003546126519190613710565b6003819055505b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126b69190613657565b60405180910390a35050565b60005b6007805490508110156127ba5760006007828154811061270e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16635fd61965846040518263ffffffff1660e01b8152600401612774919061334d565b600060405180830381600087803b15801561278e57600080fd5b505af11580156127a2573d6000803e3d6000fd5b505050505080806127b290613885565b9150506126c5565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590613617565b60405180910390fd5b612837826126c2565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128829190613766565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806002546128d39190613766565b600281905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561294057806003546129399190613766565b6003819055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161299e9190613657565b60405180910390a35050565b6000612a0c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a729092919063ffffffff16565b9050600081511480612a2e575080806020019051810190612a2d9190612f7c565b5b612a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a64906135f7565b60405180910390fd5b505050565b6060612a818484600085612a8a565b90509392505050565b606082471015612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac690613497565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612af89190613336565b60006040518083038185875af1925050503d8060008114612b35576040519150601f19603f3d011682016040523d82523d6000602084013e612b3a565b606091505b5091509150612b4b87838387612b57565b92505050949350505050565b60608315612bba57600083511415612bb257612b7285612bcd565b612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba8906135b7565b60405180910390fd5b5b829050612bc5565b612bc48383612bf0565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c035781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3791906133d5565b60405180910390fd5b828054828255906000526020600020908101928215612cb9579160200282015b82811115612cb85782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612c60565b5b509050612cc69190612cca565b5090565b5b80821115612ce3576000816000905550600101612ccb565b5090565b6000612cfa612cf5846136b2565b61368d565b90508083825260208201905082856020860282011115612d1957600080fd5b60005b85811015612d495781612d2f8882612d53565b845260208401935060208301925050600181019050612d1c565b5050509392505050565b600081359050612d6281613e8b565b92915050565b600082601f830112612d7957600080fd5b8135612d89848260208601612ce7565b91505092915050565b600081359050612da181613ea2565b92915050565b600081519050612db681613ea2565b92915050565b600081359050612dcb81613eb9565b92915050565b600081519050612de081613eb9565b92915050565b600060208284031215612df857600080fd5b6000612e0684828501612d53565b91505092915050565b60008060408385031215612e2257600080fd5b6000612e3085828601612d53565b9250506020612e4185828601612d53565b9150509250929050565b600080600060608486031215612e6057600080fd5b6000612e6e86828701612d53565b9350506020612e7f86828701612d53565b9250506040612e9086828701612dbc565b9150509250925092565b60008060408385031215612ead57600080fd5b6000612ebb85828601612d53565b9250506020612ecc85828601612d92565b9150509250929050565b60008060408385031215612ee957600080fd5b6000612ef785828601612d53565b9250506020612f0885828601612dbc565b9150509250929050565b600060208284031215612f2457600080fd5b600082013567ffffffffffffffff811115612f3e57600080fd5b612f4a84828501612d68565b91505092915050565b600060208284031215612f6557600080fd5b6000612f7384828501612d92565b91505092915050565b600060208284031215612f8e57600080fd5b6000612f9c84828501612da7565b91505092915050565b600060208284031215612fb757600080fd5b6000612fc584828501612dbc565b91505092915050565b600060208284031215612fe057600080fd5b6000612fee84828501612dd1565b91505092915050565b6130008161379a565b82525050565b61300f816137ac565b82525050565b6000613020826136de565b61302a81856136f4565b935061303a8185602086016137ef565b80840191505092915050565b6000613051826136e9565b61305b81856136ff565b935061306b8185602086016137ef565b6130748161395b565b840191505092915050565b600061308c6025836136ff565b91506130978261396c565b604082019050919050565b60006130af6027836136ff565b91506130ba826139bb565b604082019050919050565b60006130d26023836136ff565b91506130dd82613a0a565b604082019050919050565b60006130f56026836136ff565b915061310082613a59565b604082019050919050565b6000613118602c836136ff565b915061312382613aa8565b604082019050919050565b600061313b6026836136ff565b915061314682613af7565b604082019050919050565b600061315e6014836136ff565b915061316982613b46565b602082019050919050565b60006131816028836136ff565b915061318c82613b6f565b604082019050919050565b60006131a46027836136ff565b91506131af82613bbe565b604082019050919050565b60006131c7602a836136ff565b91506131d282613c0d565b604082019050919050565b60006131ea601c836136ff565b91506131f582613c5c565b602082019050919050565b600061320d6029836136ff565b915061321882613c85565b604082019050919050565b60006132306022836136ff565b915061323b82613cd4565b604082019050919050565b60006132536017836136ff565b915061325e82613d23565b602082019050919050565b6000613276601d836136ff565b915061328182613d4c565b602082019050919050565b6000613299601e836136ff565b91506132a482613d75565b602082019050919050565b60006132bc602a836136ff565b91506132c782613d9e565b604082019050919050565b60006132df6025836136ff565b91506132ea82613ded565b604082019050919050565b60006133026029836136ff565b915061330d82613e3c565b604082019050919050565b613321816137d8565b82525050565b613330816137e2565b82525050565b60006133428284613015565b915081905092915050565b60006020820190506133626000830184612ff7565b92915050565b600060408201905061337d6000830185612ff7565b61338a6020830184612ff7565b9392505050565b60006040820190506133a66000830185612ff7565b6133b36020830184613318565b9392505050565b60006020820190506133cf6000830184613006565b92915050565b600060208201905081810360008301526133ef8184613046565b905092915050565b600060208201905081810360008301526134108161307f565b9050919050565b60006020820190508181036000830152613430816130a2565b9050919050565b60006020820190508181036000830152613450816130c5565b9050919050565b60006020820190508181036000830152613470816130e8565b9050919050565b600060208201905081810360008301526134908161310b565b9050919050565b600060208201905081810360008301526134b08161312e565b9050919050565b600060208201905081810360008301526134d081613151565b9050919050565b600060208201905081810360008301526134f081613174565b9050919050565b6000602082019050818103600083015261351081613197565b9050919050565b60006020820190508181036000830152613530816131ba565b9050919050565b60006020820190508181036000830152613550816131dd565b9050919050565b6000602082019050818103600083015261357081613200565b9050919050565b6000602082019050818103600083015261359081613223565b9050919050565b600060208201905081810360008301526135b081613246565b9050919050565b600060208201905081810360008301526135d081613269565b9050919050565b600060208201905081810360008301526135f08161328c565b9050919050565b60006020820190508181036000830152613610816132af565b9050919050565b60006020820190508181036000830152613630816132d2565b9050919050565b60006020820190508181036000830152613650816132f5565b9050919050565b600060208201905061366c6000830184613318565b92915050565b60006020820190506136876000830184613327565b92915050565b60006136976136a8565b90506136a38282613854565b919050565b6000604051905090565b600067ffffffffffffffff8211156136cd576136cc61392c565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061371b826137d8565b9150613726836137d8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561375b5761375a6138ce565b5b828201905092915050565b6000613771826137d8565b915061377c836137d8565b92508282101561378f5761378e6138ce565b5b828203905092915050565b60006137a5826137b8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561380d5780820151818401526020810190506137f2565b8381111561381c576000848401525b50505050565b6000600282049050600182168061383a57607f821691505b6020821081141561384e5761384d6138fd565b5b50919050565b61385d8261395b565b810181811067ffffffffffffffff8211171561387c5761387b61392c565b5b80604052505050565b6000613890826137d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138c3576138c26138ce565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a207472616e7366657220746f20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a206d696e7420746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a20617070726f766520746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a207472616e7366657220616d6f756e7420657863656560008201527f647320616c6c6f77616e63650000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a20666f7262696464656e000000000000000000000000600082015250565b7f42617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a20696e76616c6964207969656c64547261636b65722060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a207472616e7366657220616d6f756e7420657863656560008201527f64732062616c616e636500000000000000000000000000000000000000000000602082015250565b7f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e00000000600082015250565b7f4d696e7461626c6542617365546f6b656e3a20696e76616c6964206d696e746560008201527f7220616464726573730000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642068616e646c65722061646472657373000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b65640000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a206275726e2066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42617365546f6b656e3a207472616e736665722066726f6d20746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b613e948161379a565b8114613e9f57600080fd5b50565b613eab816137ac565b8114613eb657600080fd5b50565b613ec2816137d8565b8114613ecd57600080fd5b5056fea26469706673582212208e0b3d2ebe1588ed9f1fceab6705c976b15354858cc2adedba56e9bb6f2ee22664736f6c63430008040033416e74617263746963204d61726b6574204d616b696e67204c697175696469747920506f6f6c20546f6b656e