1// +build go1.5,!go1.6
2
3package xmpp
4
5func isVersionOldish() bool {
6	return false
7}
8
9var validTLSExchange = [][]byte{
10	[]byte(
11		"<?xml version='1.0'?>" +
12			"<str:stream xmlns:str='http://etherx.jabber.org/streams' version='1.0'>" +
13			"<str:features>" +
14			"<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>" +
15			"</starttls>" +
16			"<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>" +
17			"<mechanism>PLAIN</mechanism>" +
18			"</mechanisms>" +
19			"</str:features>" +
20			"<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"),
21	bytesFromHex("160303005d02000059030357611e8c12ecb566340207f2c649725ae57597f25455ed8138e34716b3c18e2f208b70d0b230a2c9ca6b0579e5296f60b9a9aa12ee9abaf612814bde72eeef235dc03000001100000000ff01000100000b0004030001021603030ff70b000ff3000ff0000a01308209fd308208e5a0030201020210448218fb90f3352b58e6668ac3b9225c300d06092a864886f70d01010b05003078310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e31293027060355040b13205374617274436f6d2043657274696669636174696f6e20417574686f72697479312630240603550403131d5374617274436f6d20436c617373203220495620536572766572204341301e170d3136303332333139333635305a170d3138303332333139333635305a3059310b30090603550406130245433112301006035504080c0950696368696e636861310e300c06035504070c05517569746f3111300f060355040a0c084f6c612042696e693113301106035504030c0a6f6c6162696e692e736530820222300d06092a864886f70d01010105000382020f003082020a0282020100c30142b1459535ab3365827e3f4a654a87f11b96e307998ba6f799ab490d81e890f1121ce092bb0aae969d801510493e7e280356a5a0f888cb3ccb5abab5104c5630c7c1d88a0525948a6ba283b85f5a88365cb7dd1eba93b21d83a40a8fe0b9848677d21367e01b6dc75959e6a50e4ca5e0c2f9a2f93ddf2db9de7ef70df4be7ede241167d02208fbc5e8924f8ced4ce71bff966e80a9f8159a1cc466814f037c1434c7ba7c663c4101ecb1186c6f5828aaf5d562ee3e4c2a97e1a92f64a76fc25332d5e5a71a1d49eb0291b0faca2644333ca22cac55c5c7f7b3275c0801a22f0fc95a02ac13e947ed91f542ad6cbe580cceb0862940d8b558403614cd4a5d094e51db04eec944809a0b4d8da74cae3cbff9af3017bc87a66a84b9688d871474d89e7dbecedfcd246dbd58471272618ec1959a4923958639625476aad24832b692f88b4cedddf03b6aaf6be83ee0ca7e9f4dfbc55d589643f3113a86ec5e4bbb0cad357ea6d9634888870503da4e3d842dd05c5d9328393570660551361847b6dde4a54bb8452a4a6746fca4fd83f7556f39fea8a5d6339fc8ba1f967f687f3c6ae58e7be4a5459eb42ccaa0090f075202c8bb37d7505002a0bf66e3361f73697e825d20351e4c70bbaa1f8c4142f1b4b7d1b0c8adacf03ec69af7e8f8ab9d576f436f6ea51d60681d858ae777ee2eaa71fa3a53475737aaea71b1c15d04110203010001a38205a03082059c300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030206082b0601050507030130090603551d1304023000301d0603"),
22	bytesFromHex("551d0e0416041443d7a7c90643825a3150e3f331d4e1c9ba96174b301f0603551d2304183016801494de85412aa5d945f6602c2e4c9309a62c237e3e306f06082b0601050507010104633061302406082b060105050730018618687474703a2f2f6f6373702e737461727473736c2e636f6d303906082b06010505073002862d687474703a2f2f6169612e737461727473736c2e636f6d2f63657274732f7363612e736572766572322e63727430380603551d1f0431302f302da02ba0298627687474703a2f2f63726c2e737461727473736c2e636f6d2f7363612d736572766572322e63726c3082027b0603551d11048202723082026e820a6f6c6162696e692e7365820c2a2e6f6c6162696e692e7365820762696e692e656382092a2e62696e692e65638208696f6b652e6f7267820a2a2e696f6b652e6f726782106d616c696e73616e64656c6c2e636f6d82122a2e6d616c696e73"),
23	bytesFromHex("616e64656c6c2e636f6d820f6d616c696e73616e64656c6c2e6e7582112a2e6d616c696e73616e64656c6c2e6e75820f6d616c696e73616e64656c6c2e736582112a2e6d616c696e73616e64656c6c2e7365820b6f6c6162696e692e636f6d820d2a2e6f6c6162696e692e636f6d820a6f6c6162696e692e6563820c2a2e6f6c6162696e692e6563820c6f6c6162696e692e696e666f820e2a2e6f6c6162696e692e696e666f820a6f6c6162696e692e6d65820c2a2e6f6c6162696e692e6d65820b6f6c6162696e692e6e6574820d2a2e6f6c6162696e692e6e6574820a6f6c6162696e692e6e75820c2a2e6f6c6162696e692e6e75820a6f6c6f6769782e6e6574820c2a2e6f6c6f6769782e6e657482096f6c6f6769782e7365820b2a2e6f6c6f6769782e73658207726561702e656382092a2e726561702e6563820a73616e64656c6c2e6563820c2a2e73616e64656c6c2e6563820d736570682d6c616e672e6f7267820f2a2e736570682d6c616e672e6f726782117374656c6c6173616e64656c6c2e636f6d82132a2e7374656c6c6173616e64656c6c2e636f6d82117374656c6c6173616e64656c6c2e6e657482132a2e7374656c6c6173616e64656c6c2e6e657482107374656c6c6173616e64656c6c2e736582122a2e7374656c6c6173616e64656c6c2e736582067477732e656382082a2e7477732e6563820e7777772e6f6c6162696e692e736530230603551d12041c301a8618687474703a2f2f7777772e737461727473736c2e636f6d2f30500603551d20044930473008060667810c010203303b060b2b0601040181b537010204302c302a06082b06010505070201161e687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963793082017d060a2b06010401d6790204020482016d048201690167007500cdb5179b7fc1c046feea31136a3f8f002e6182faf8896fecc8b2f5b5ab60490000000153a50fc88f000004030046304402206342f197e37f84737b95a9e8a995ca8c7150e7d7c920e6ba04dfe9a21088342c0220378fd16db9534fd73ef19f0bde36ace15d85fd0d093f1167c9a3045418cef71400770068f698f81f6482be3a8ceeb9281d4cfc71515d6793d444d10a67acbb4f4ffbc400000153a50fce460000040300483046022100db73a2c7c4005cf12c5661d3058361cb8c5ba318f5f71e5c2af0475d2c9a4e180221009a2942ae5232594c6aef9d6f621d11fcf6da2b701b6e40c74d8d1d97a66ad387007500ee4bbdb775ce60bae142691fabe19e66a30f7e5fb072d88300c47b897aa8fdcb00000153a50fd0a50000040300463044022004040e6d095624e1d4b6c04e665ab76f5784cfdab803fb012dd51c52acec153f02207b5cce9211570bd57a413bf3fbfad7fdd0a92a07cbdc33c00cda12e321339663300d06092a864886f70d01010b050003820101005d2d37bac9730672895d07fbead11fbf8281ca2e9d33b1934cdd984ff6891aec8299a67d67c2d15667686ee8f32b4ba8a852ccd24a5251003fcde5c2c901b4701cf340e3de41dd47d707aaca4c76082150fb88e72dba07d3e1e92f6c625c6fcc1b7212ec6f5a60945fed5d23153beaa744350da701299e37cd43d7b261d8be469dc40e7c58139da78ee4ec214c651f5f9582b36e502dabb486e1d1d10b80fdbe272837f0fa4029117d6e6f35e17c414dc25e694a0b63d1068c19311e85d091168ac3f326b24159c7a33db297ee273cbe549177b09d7bd0899378b55e4c28985ce16a14ecd6f809503cd5ee39812be14c770aab2d3ad6c003395d4fe6fd70c8890005e9308205e5308203cda00302010202102643bb32a166487ae19d6c79c43fe266300d06092a864886f70d01010b0500307d310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b3029060355040b1322536563757265204469676974616c204365727469666963617465205369676e696e6731293027060355040313205374617274436f6d2043657274696669636174696f6e20417574686f72697479301e170d3135313231363031303030355a170d3330313231363031303030355a3078310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e31293027060355040b13205374617274436f6d2043657274696669636174696f6e20417574686f72697479312630240603550403131d5374617274436f6d20436c61737320322049562053657276657220434130820122300d06092a864886f70d01010105000382010f003082010a02820101009cbdbd823c7a138ebbcb83ac1e8e364c29f5ac2ec95d49ef7a9ccf13d28b6c98908badc948b4ebfd05468e158540186ac172a5c93c81346a0eb95fb24688a6aa43c3755e9976722747098a027561bcc55dd965dea9226dab94936b69ee3a72d3c18067c95b0e228f58767bc58435c01a343785759022ad347f8dd713c16293ef44506fe817b54b9480020099e1a2d023d9d4764ef426c816c410dd8f84b1f758035992531b6a8d9cb004aa4b0c8e980079fb7e6749a829318bae55ae194a79b611a17c7a62f18a214ae489c20598d11b8bbe60bac4bfbfa62ab9c738c55690e13b9b32b1b6e1c5616d8b441fbe78918b51d9f52a2be26434bfa1f3a12217ecb70203010001a382016430820160300e0603551d0f0101ff040403020106301d0603551d250416301406082b0601050507030206082b0601050507030130120603551d130101ff040830060101ff02010030320603551d1f042b30293027a025a0238621687474703a2f2f63726c2e737461727473736c2e636f6d2f73667363612e63726c306606082b06010505070101045a3058302406082b060105050730018618687474703a2f2f6f6373702e737461727473736c2e636f6d303006082b060105050730028624687474703a2f2f6169612e737461727473736c2e636f6d2f63657274732f63612e637274301d0603551d0e0416041494de85412aa5d945f6602c2e4c9309a62c237e3e301f0603551d230418301680144e0bef1aa4405ba517698730ca346843d041aef2303f0603551d200438303630340604551d2000302c302a06082b06010505070201161e687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c696379300d06092a864886f70d01010b05000382020100b5ea432e661f21955b20cf26da222c76ab2490154fab3e0a92a9ecab0d2989c290db68a8f06a49ba2c9d832d7e4c4458cd3c287e02b41f094d545096bae67ed46905adeaaf2453089f1dc227f9f14974d577378cddbe52b1c2f7aa05241989778850efe11ebd548bb1b0eacd0e9fe2b47c3f6835c802451def3e2701d9facaec184e1637bac68c2c59ec713df24723af650aaef73bb29ec57aa9fd5f1ff2e185f0be0a537c56e910c6e7b46b5e1e7e2cdc54426676b4801a3f21d3343e736f17dff19fd96e01861ca6ecb8f9005081be6c7a6ae5be9b7f6c76371321a9848c23e18927d1669a2095f8fdfed32c01606361264705518be849476e1f3fbf45777a1bf7a3aef2a9e7cadb67d8822122d98e9a3981811f2c897a21025c64f33c14858a2ca86d228297e5cb4d2f77a95780f32036712da4abb8405015e0d08faa7fef8a5460b4013f9db76a77fa4ad5c1b5881b7c8991a0887823c2fce5a07f4d4c8b38903fb0ac7f585ad73b113d2b8abe3dfe6dab783364472133f6ed3189f5730d463d4b789c7c9acd2e762eb3f4f90efb6a8d46cdaf6cbddf07135359f4d21524eef542c92a8f1bc6893b"),
24	bytesFromHex("74e3caf880b49768cd733f6c3d9ccb08c35229c5713c87d50702596087ca0d1e7a3923d9cb7f29db1215f11b2f5195f70b37f27c88eab26a07e0c6b5320cf28c879c4678b28c412ce3c90d5b5745860b5266269f900d16030302"),
25	bytesFromHex("4d0c00024903001741047aba3a17870610f3ed96c0c127fad642299e7bc46f068a395f85f69ccf91f49bbd41157fdc7e4c858e74fb0ef345a268f11d2efe355e64e69d2ac0e2a59f40710401020080eae34810adfb3c7f2191190bbfc12f6319afb36e1abccb054fe9cc650c1a2382e98ab5971939dd5b6c4965bf84739ab0a24e19a5b5e51004f9782ea7f205d40378a3654dcc80cd680b20bdb3f8d64f2907ba12b0c4903a78a34324d514516f8b6af17ea61a3e3c8b113822195b89f188c604df7ce3c904c04cb602d099da52e9f45635a407b752faadd14f9e47ad6f007bc230660b39da53ebdaf62c335f20a6b76b599723768574c619b6725732db2413909a6db1f2852bc7322cd03e7200648e91121b60295dfc282e16a0e57f186827c2d91c4057ddf823ecfd8b0f869eec42b98e531d949579e834b874ee68dcdf927940b716ec5a0e71b268443e31509a3a3261f484b1d2e3c0cedec0784d7cb5963ee673d53ae376b87cefabf34879810ff6b6a84af80939a10a7bd38a8ddb92a44604e75a359cc15acf2f09615eb719b14a9e62f3b9a21e58002245404ef768d595c639297c30865f27153771111e836d7539920e1f596113dfb7fd8975686419b07873766eaaff6f7c562cbc41c401a9261fc4411ecc17fc9f672341fac3d192e1f2bbc847efbcbd6f6adc0a0a446c3db43115b513e590462f03a9a4ed682d062be6596010c3ecd596efded4c9dc9dce4bcbb377d7dc0da883f99a4055a936ebf832806b1955c9319911e88f9bd74b8fde2e82fb12f2c59ce59852c6d5d0eccdf69c2269ed38f217b78cc66261c816030300040e000000"),
26	bytesFromHex("1403030001011603030028a4b792f47d4bceacacc033a61ffdb48e2983386259da76dbb04f56e3ff4decfe3d8cdac5c9f5f3ce"),
27	// bytesFromHex("160303005d020000590303561986f1db1afdfdc2458be105ffb6ea5ce74deabece1a6aafa93ec9e300b0ce208f60d1038ddd8930ea0e5a7d3bc52a91de884e0e368a2539c453a6f33b1d79acc03000001100000000ff01000100000b00040300010216030310240b00102000101d0009df308209db308208c3a0030201020203022008300d06092a864886f70d010105050030818c310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b3029060355040b1322536563757265204469676974616c204365727469666963617465205369676e696e67313830360603550403132f5374617274436f6d20436c6173732032205072696d61727920496e7465726d65646961746520536572766572204341301e170d3134303432313130313531335a170d3136303432313131313131395a30819d31193017060355040d13104e6a4d4833335634776757646b34614a310b30090603550406130255533111300f06035504081308496c6c696e6f69733110300e060355040713074368696361676f3111300f060355040a13084f6c612042696e69311530130603550403140c2a2e6f6c6162696e692e73653124302206092a864886f70d0109011615706f73746d6173746572406f6c6162696e692e736530820222300d06092a864886f70d01010105000382020f003082020a0282020100c30142b1459535ab3365827e3f4a654a87f11b96e307998ba6f799ab490d81e890f1121ce092bb0aae969d801510493e7e280356a5a0f888cb3ccb5abab5104c5630c7c1d88a0525948a6ba283b85f5a88365cb7dd1eba93b21d83a40a8fe0b9848677d21367e01b6dc75959e6a50e4ca5e0c2f9a2f93ddf2db9de7ef70df4be7ede241167d02208fbc5e8924f8ced4ce71bff966e80a9f8159a1cc466814f037c1434c7ba7c663c4101ecb1186c6f5828aaf5d562ee3e4c2a97e1a92f64a76fc25332d5e5a71a1d49eb0291b0faca2644333ca22cac55c5c7f7b3275c0801a22f0fc95a02ac13e947ed91f542ad6cbe580cceb0862940d8b558403614cd4a5d094e51db04eec944809a0b4d8da74cae3cbff9af3017bc87a66a84b9688d871474d89e7dbecedfcd246dbd58471272618ec1959a4923958639625476aad24832b692f88b4cedddf03b6aaf6be83ee0ca7e9f4dfbc55d589643f3113a86ec5e4bbb0cad357ea6d9634888870503da4e3d842dd05c5d9328393570660551361847b6dde4a54bb8452a4a6746fca4fd83f7556f39fea8a5d6339fc8ba1f967f687f3c6ae58e7be4a5459eb42ccaa0090f075202c8bb37d7505002a0bf66e3361f73697e825d20351e4c70bbaa1f8c4142f1b4b7d1b0c8adacf03ec69af7e8f8ab9d576f436f6ea51d60681d858ae777ee2eaa71fa3a53475737aaea71b1c15d"),
28	// bytesFromHex("04110203010001a38205313082052d30090603551d1304023000300b0603551d0f0404030203a8301d0603551d250416301406082b0601050507030206082b06010505070301301d0603551d0e0416041443d7a7c90643825a3150e3f331d4e1c9ba96174b301f0603551d2304183016801411db2345fd54cc6a716f848a03d7bef7012f26863082026b0603551d11048202623082025e820c2a2e6f6c6162696e692e7365820a6f6c6162696e692e736582092a2e62696e692e65638208696f6b652e6f7267820a2a2e696f6b652e6f726782106d616c696e73616e64656c6c2e636f6d82122a2e6d616c696e73616e64656c6c2e636f6d820f6d616c696e73616e64656c6c2e6e7582112a2e6d616c696e73616e64656c6c2e6e75820f6d616c696e73616e64656c6c2e736582112a2e6d616c696e73616e64656c6c2e7365820b6f6c6162696e692e636f6d820d2a2e6f6c6162696e692e636f6d820a6f6c6162696e692e6563820c2a2e6f6c6162696e692e6563820c6f6c6162696e692e696e666f820e2a2e6f6c6162696e692e696e666f820a6f6c6162696e692e6d65820c2a2e6f6c6162696e692e6d65820b6f6c6162696e692e6e6574820d2a2e6f6c6162696e692e6e6574820a6f6c6162696e692e6e75820c2a2e6f6c6162696e692e6e75820762696e692e6563820a6f6c6f6769782e6e6574820c2a2e6f6c6f6769782e6e657482096f6c6f6769782e7365820b2a2e6f6c6f6769782e73658207726561702e656382092a2e726561702e6563820a73616e64656c6c2e6563820c2a2e73616e64656c6c2e6563820d736570682d6c616e672e6f7267820f2a2e736570682d6c616e672e6f726782117374656c6c6173616e64656c6c2e636f6d82132a2e7374656c6c6173616e64656c6c2e636f6d82117374656c6c6173616e64656c6c2e6e657482132a2e7374656c6c6173616e64656c6c2e6e657482107374656c6c6173616e64656c6c2e736582122a2e7374656c6c6173616e64656c6c2e736582067477732e656382082a2e7477732e6563308201560603551d200482014d308201493008060667810c0102023082013b060b2b0601040181b5370102033082012a302e06082b060105050702011622687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963792e7064663081f706082b060105050702023081ea302716205374617274436f6d2043657274696669636174696f6e20417574686f7269747930030201011a81be546869732063657274696669636174652077617320697373756564206163636f7264696e6720746f2074686520436c61737320322056616c69646174696f6e20726571756972656d656e7473206f6620746865205374617274436f6d20434120706f6c6963792c2072656c69616e6365206f6e6c7920666f722074686520696e74656e64656420707572706f736520696e20636f6d706c69616e6365206f66207468652072656c79696e67207061727479206f626c69676174696f6e732e30350603551d1f042e302c302aa028a0268624687474703a2f2f63726c2e737461727473736c2e636f6d2f637274322d63726c2e63726c30818e06082b06010505070101048181307f303906082b06010505073001862d687474703a2f2f6f6373702e737461727473736c2e636f6d2f7375622f636c617373322f7365727665722f6361304206082b060105050730028636687474703a2f2f6169612e737461727473736c2e636f6d2f63657274732f7375622e636c617373322e7365727665722e63612e63727430230603551d12041c301a8618687474703a2f2f7777772e737461727473736c2e636f6d2f300d06092a864886f70d01010505000382010100debc4553a1ee7e34e0d2aa9100e08865153aa3a9055bca798feb006b429b7985a2e89451f65171c704fc9576c20818da71cccd1eb987cb4e5da4af1a5a0097c1e64a995941ee612865ef1c9b12f70c9ecf54e4fb35bac20b5f317f9f878f964779361adb66638a53c6c72f1ebfac6b083e5f5329f89f060ebd7671e26caa53597e9cfc5511ad1e5ab4a75b7b3ed1d01f6167eefca0708c5fdf18d8df0fc6ad794e774475c3205d02eaa3d88347181a5bad96284e2e70028ef84f21b6dc5c71aa635c949a574cef75eba1cd37b4c6af09564f047a573b1dae41574821cb1484d362e6250cc8f912f2a8684213f6016f0335011140986b390d98821697e492dc20000638308206343082041ca00302010202011a300d06092a864886f70d0101050500307d310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b3029060355040b1322536563757265204469676974616c204365727469666963617465205369676e696e6731293027060355040313205374617274436f6d2043657274696669636174696f6e20417574686f72697479301e170d3037313032343230353730395a170d3137313032343230353730395a30818c310b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b3029060355040b1322536563757265204469676974616c204365727469666963617465205369676e696e67313830360603550403132f5374617274436f6d20436c6173732032205072696d61727920496e7465726d6564696174652053657276657220434130820122300d06092a864886f70d01010105000382010f003082010a0282010100e24f392fa18c9a85ad080e083e57f28801211b94a96ce2b8dbaa1918463a52a1f50ff46e8cea968c9687791340512f22f20c8b870f65df7174344355b135099bd9bc1ffaeb42d0974072b743963dba969d5d50021c9b918d9cc0acd7bb2f17d7cb3e829d73eb074292b2cd64b374551bb44b86212cf7788732e016e4dabd4c95eaa40a7eb60a0d2e8acf55abc3e5dd418a4ee66f656cb240cf175db9c36a0b2711847761f6c27cedc08d7814189981997563b7e853d3ba61e90efaa230f346a2b9c91f6c805a40ac27ed484733b054c6461af33561c1022990547e644dc430520282d7dfce216e1891d7b8ab8c2717b5f0a3012f8ed22e873a3db429678ac4030203010001a38201ad308201a9300f0603551d130101ff040530030101ff300e0603551d0f0101ff040403020106301d0603551d0e0416041411db2345fd54cc6a716f848a03d7bef7012f2686301f0603551d230418301680144e0bef1aa4405ba517698730ca346843d041aef2306606082b06010505070101045a3058302706082b06010505073001861b687474703a2f2f6f6373702e737461727473736c2e636f6d2f6361302d06082b060105050730028621687474703a2f2f7777772e737461727473736c2e636f6d2f73667363612e637274305b0603551d1f045430523027a025a0238621687474703a2f2f7777772e737461727473736c2e636f6d2f73667363612e63726c3027a025a0238621687474703a2f2f63726c2e737461727473736c2e636f6d2f73667363612e63726c3081800603551d20047930773075060b2b0601040181b5370102013066302e06082b060105050702011622687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963792e706466303406082b060105050702011628687474703a2f2f7777772e737461727473736c2e636f6d2f696e7465726d6564696174652e706466300d06092a864886f70d010105050003820201009d07e1ee907631671645708ccb848b4b576844a589c1f27ecb288bf5e77077d5b6f40b2160a5a17473242280d6d8ba8da2625d09354229fb3963450ba4b0381a68f49513cce04394eceb391aec5729d9996df584cd8e73aec9dc6afa9e9d16649308c71cc289549e778090f6b92976eb13674859f82e3a31b8c9d388e55f4ed2193d438ed792ffcf38b6e15b8a531dceacb4762fd8f74063d5ee69f3457da062c161c375edb27b4dac2127304e59466a9317cac8392d0173655be9419b11179cc8c84aefa176602dae93ff0cd533139f4f13cedd86f1fcf8355415a85be7857efa3709ff8bb831499e0d6edeb4d2122db8edc8c3f1b642a04c9779dffec3a39fa1f46d2c8477a4a205e117ff31dd9af3b87ac352c21111b750318a7fcce75a89ccf7869a61924f2f94b698c778e0624b437d3cded69ab410a1409c4b2adcb8d0d49efdf184781b0e578f695442687beaa0ef750f07a28c7399ab55f50709d2af38036a90030c2f8fe2e843c231e96fad87e58dbd4e2c894b51e69c4c5476c01281539beca0fc2c9cda18956e1e38264227786008df7f6d32e8d8c06f1feb26759f93fc7b1bfe3590dc53a307a63f83550a2b4e628225ce66305d2ce0f9191b75b99d9856a683277ad18f8d5993fc3f73d72eb42c95d88bf7c97ec7fc9dac72041fd2cc17f4ed34609b9e4a9704fedd720e57545106704defaa1ca482e033c7f4160303024d0c000249030017410458fb4cf2e793e1da9e80cb9495bc8b8e699f4a0f6e7c361f01616f90cc47a7960bb190775f9725ea45eab1a7b8d982fa9433faea7fd731524b3cafa27870cd0c0201020015e77bb80a24b5a267e2cc3683c0b5477ad572d9d48fc16518e53a33eb9654f18b84d3b1ed74353606130be3d7707c0413922b2d989a2fcfac9f8ce63a48dfa4255e78181914f3d1588e79d13f3cfef213f8329fe8ad170a2d89bb93b247947fe361aac987782a47adfa06afe23b11475f309cfd0690daf86fc89bc305831b107b1d299e01b4b38e626cf126389532e838b7f57168e93ba655672367e0d5b6a4170dec1fa0f9ec26765c28976fa83422d5a28c3e99e0db500fe16d1eeb285f7f97c2f5f3c1cef5a34622e9a3b29552826c5e99889c5f2e7b323aabdc76eb0a54cc0755be63d6c952b6c68d04dda38a0a17ad9e891d1bac8d9bba4caec8d9c5e66ff53c789bbf3caa05fa928fead38c2271f71adca6706ae9de46aae8a31be97af6618d5e9223fcf9141651b53e99d2d142c2559f102b9ef28f948aec94b7dba85095f517b26481b8c75014b1315fae8ded43a9af117d87de375e6f1df736973aee1dfce71f5392b00c22139daa21eb0b29d2b424cacf251484bbfd1c05c9bb10571947292d19bc7c657250f3f1c937c3219ac79ad51caa472f4ef61a355fe299b199995c4b6476816821ffb0554783d9200eb12b891b4483c8a15c8011fa173c2d0ec3a4ffcd414f36e99ac82379bda42fa8ceae269ac008724f8d4b6e9ed8b330d597fad33ec1862ba6f700c5506cddefa1ac66fe262897f3fda961e5c140d216030300040e000000"),
29	// bytesFromHex("14030300010116030300283867a1b1ef4eaac9acda2164189ece901ff133bf9f98480f8a3aac09d26b5bd1b5ac929e10dc3209"),
30}
31