<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>33351</bug_id>
          
          <creation_ts>2010-01-07 15:45:05 -0800</creation_ts>
          <short_desc>[Chromium] Upstream webkit unit tests from the chromium repository</short_desc>
          <delta_ts>2010-01-08 12:52:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>webkit.review.bot</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>178417</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-07 15:45:05 -0800</bug_when>
    <thetext>[Chromium] Upstream webkit unit tests from the chromium repository

The chromium repository has a number of unit tests that test WebKit and WebCore classes.  My plan is to upstream these into WebKit/chromium/tests/.  A webkit_unit_tests executable will be built, which we can then run on the build bots.

Initial patch will just contain one test and the associated build changes to get the ball rolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178700</commentid>
    <comment_count>1</comment_count>
      <attachid>46141</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-08 09:59:15 -0800</bug_when>
    <thetext>Created attachment 46141
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178703</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-08 10:06:47 -0800</bug_when>
    <thetext>Attachment 46141 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/tests/WebKitTest.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/KURLTest.cpp:35:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/KURLTest.cpp:37:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/KURLTest.cpp:78:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:79:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:80:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:81:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:82:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:124:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:128:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:131:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:134:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:147:  Use 0 instead of NULL.  [readability/null] [4]
WebKit/chromium/tests/KURLTest.cpp:160:  ascii_kurl is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/tests/KURLTest.cpp:224:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/KURLTest.cpp:398:  Use 0 instead of NULL.  [readability/null] [4]
WebKit/chromium/tests/KURLTest.cpp:412:  Use 0 instead of NULL.  [readability/null] [4]
WebKit/chromium/tests/KURLTest.cpp:478:  Use 0 instead of NULL.  [readability/null] [4]
WebKit/chromium/tests/KURLTest.cpp:488:  Use 0 instead of NULL.  [readability/null] [4]
WebKit/chromium/tests/KURLTest.cpp:593:  One space before end of line comments  [whitespace/comments] [5]
WebKit/chromium/tests/KURLTest.cpp:595:  One space before end of line comments  [whitespace/comments] [5]
WebKit/chromium/tests/KURLTest.cpp:604:  Missing space after ,  [whitespace/comma] [3]
WebKit/chromium/tests/KURLTest.cpp:608:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178728</commentid>
    <comment_count>3</comment_count>
      <attachid>46141</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-08 11:39:54 -0800</bug_when>
    <thetext>Comment on attachment 46141
v1 patch

LGTM after you take care of style-elves compaints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178755</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-08 12:52:18 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/53001</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46141</attachid>
            <date>2010-01-08 09:59:15 -0800</date>
            <delta_ts>2010-01-08 11:39:53 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>tests_1.txt</filename>
            <type>text/plain</type>
            <size>35093</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1Mjk5NSkKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wMS0wOCAgRGFy
aW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBzdHJlYW0gd2Via2l0IHVuaXQg
dGVzdHMgZnJvbSB0aGUgY2hyb21pdW0gcmVwb3NpdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMzNTEKKworICAgICAgICBUaGlzIGFkZHMgb25l
IHN1Y2ggdGVzdCAoZm9yIEtVUkwpIGFuZCBzZXRzIHVwIHRoZSB0ZXN0IGZyYW1ld29yay4KKwor
ICAgICAgICBTd2l0Y2ggV2ViS2l0IHRvIGJ1aWxkIGEgc3RhdGljIGxpYnJhcnkgb24gYWxsIHBs
YXRmb3Jtcy4gIEFkZCBhCisgICAgICAgIHdlYmtpdF91bml0X3Rlc3RzIGV4ZWN1dGFibGUgdGFy
Z2V0IHRoYXQgcnVucyB0aGUgdW5pdCB0ZXN0cyBhbmQgYWxzbworICAgICAgICBlbnN1cmVzIHRo
YXQgd2UgZG9uJ3QgaGF2ZSBhbnkgbWlzc2luZyBzeW1ib2xzIChhIGZ1bmN0aW9uIHRoYXQgV2Vi
S2l0CisgICAgICAgIGFzIGEgc2hhcmVkIGxpYnJhcnkgdXNlZCB0byBzZXJ2ZSkuCisKKyAgICAg
ICAgQ2hhbmdlcyBjaHJvbWl1bV9zcmNfZGlyIHRvIC4uLy4uL1dlYktpdC9jaHJvbWl1bSB0byBt
YXRjaCBob3cKKyAgICAgICAgV2ViQ29yZS5neXAgZGVmaW5lcyB0aGF0IHZhcmlhYmxlLgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdENsaWVudDo6Z2V0UGx1Z2luTGlzdCk6IFJlbW92ZSBib2d1
cyB0cmFpbGluZyBzZW1pLWNvbG9uLgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDbGllbnQ6OmRl
Y3JlbWVudFN0YXRzQ291bnRlcik6IFJlbW92ZSBib2d1cyB0cmFpbGluZyBzZW1pLWNvbG9uLgor
ICAgICAgICAoV2ViS2l0OjpXZWJLaXRDbGllbnQ6OmluY3JlbWVudFN0YXRzQ291bnRlcik6IFJl
bW92ZSBib2d1cyB0cmFpbGluZyBzZW1pLWNvbG9uLgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRD
bGllbnQ6OnRyYWNlRXZlbnRCZWdpbik6IFJlbW92ZSBib2d1cyB0cmFpbGluZyBzZW1pLWNvbG9u
LgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDbGllbnQ6OnRyYWNlRXZlbnRFbmQpOiBSZW1vdmUg
Ym9ndXMgdHJhaWxpbmcgc2VtaS1jb2xvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50
OjpoaXN0b2dyYW1Db3VudHMpOiBSZW1vdmUgYm9ndXMgdHJhaWxpbmcgc2VtaS1jb2xvbi4KKyAg
ICAgICAgKiB0ZXN0czogQWRkZWQuCisgICAgICAgICogdGVzdHMvS1VSTFRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJLaXRUZXN0Lmg6IEFkZGVkLgorCiAyMDEwLTAxLTA3ICBN
aWtlIEJlbHNoZSAgPG1iZWxzaGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTI5OTUpCisrKyBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzMgKzMzLDIz
IEBACiAgICAgICAgICdmZWF0dXJlcy5neXBpJywKICAgICBdLAogICAgICd2YXJpYWJsZXMnOiB7
CisgICAgICAgICd3ZWJraXRfdGFyZ2V0X3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAogICAgICAg
ICAnY29uZGl0aW9ucyc6IFsKICAgICAgICAgICAgICMgTG9jYXRpb24gb2YgdGhlIGNocm9taXVt
IHNyYyBkaXJlY3RvcnkgYW5kIHRhcmdldCB0eXBlIGlzIGRpZmZlcmVudAogICAgICAgICAgICAg
IyBpZiB3ZWJraXQgaXMgYnVpbHQgaW5zaWRlIGNocm9taXVtIG9yIGFzIHN0YW5kYWxvbmUgcHJv
amVjdC4KICAgICAgICAgICAgIFsnaW5zaWRlX2Nocm9taXVtX2J1aWxkPT0wJywgewogICAgICAg
ICAgICAgICAgICMgV2Via2l0IGlzIGJlaW5nIGJ1aWx0IG91dHNpZGUgb2YgdGhlIGZ1bGwgY2hy
b21pdW0gcHJvamVjdC4KICAgICAgICAgICAgICAgICAjIGUuZy4gdmlhIGJ1aWxkLXdlYmtpdCAt
LWNocm9taXVtCi0gICAgICAgICAgICAgICAgJ2Nocm9taXVtX3NyY19kaXInOiAnLicsCi0gICAg
ICAgICAgICAgICAgIyBGSVhNRTogVG8gZW5hYmxlIHNoYXJlZF9saWJyYXJ5IGluIGxpbnV4IGFs
bCBjb2RlIChpbmNsdWRpbmcKLSAgICAgICAgICAgICAgICAjIGRlcGVuZGVuY2llcykgbXVzdCBi
ZSBjb21wbGllZCB3aXRoIC1mUElDIGZsYWcuIFRoYXQgaXMKLSAgICAgICAgICAgICAgICAjIHBl
bmRpbmcgb24gY2hhbmdlcyBpbiBneXAuCi0gICAgICAgICAgICAgICAgJ3dlYmtpdF90YXJnZXRf
dHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCisgICAgICAgICAgICAgICAgJ2Nocm9taXVtX3NyY19k
aXInOiAnLi4vLi4vV2ViS2l0L2Nocm9taXVtJywKICAgICAgICAgICAgIH0sewogICAgICAgICAg
ICAgICAgICMgV2ViS2l0IGlzIGNoZWNrZWQgb3V0IGluIHNyYy9jaHJvbWl1bS90aGlyZF9wYXJ0
eS9XZWJLaXQKICAgICAgICAgICAgICAgICAnY2hyb21pdW1fc3JjX2Rpcic6ICcuLi8uLi8uLi8u
LicsCi0gICAgICAgICAgICAgICAgJ3dlYmtpdF90YXJnZXRfdHlwZSc6ICdzdGF0aWNfbGlicmFy
eScsCiAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICMgV2UgY2FuJ3QgdHVybiBvbiB3YXJu
aW5ncyBvbiBXaW5kb3dzIGFuZCBMaW51eCB1bnRpbCB3ZSB1cHN0cmVhbSB0aGUKICAgICAgICAg
ICAgICMgV2ViS2l0IEFQSS4KICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywgewogICAgICAgICAg
ICAgICAgICdjaHJvbWl1bV9jb2RlJzogMSwKICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
IyBGSVhNRTogVG8gZW5hYmxlIHNoYXJlZF9saWJyYXJ5IGluIGxpbnV4IGFsbCBjb2RlIChpbmNs
dWRpbmcKLSAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzKSBtdXN0IGJlIGNvbXBsaWVkIHdpdGgg
LWZQSUMgZmxhZy4gVGhhdCBpcwotICAgICAgICAgICAgIyBwZW5kaW5nIG9uIGNoYW5nZXMgaW4g
Z3lwLgotICAgICAgICAgICAgWydPUz09ImxpbnV4IiBvciBPUz09ImZyZWVic2QiJywgewotICAg
ICAgICAgICAgICAnd2Via2l0X3RhcmdldF90eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAg
ICAgICAgIH1dLAogICAgICAgICBdLAogICAgIH0sCiAgICAgJ3RhcmdldHMnOiBbCkBAIC00MTEs
NiArNDAxLDI2IEBACiAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBdLAogICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnd2Via2l0X3VuaXRf
dGVzdHMnLAorICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCisgICAgICAgICAgICAn
bXN2c19ndWlkJzogJzdDRUZFODAwLTg0MDMtNDE4QS1BRDZBLTJENTJDNkZDM0VBRCcsCisgICAg
ICAgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgICAgICAgICd3ZWJraXQnLAorICAg
ICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOndlYmNv
cmUnLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rlc3RpbmcvZ3Rlc3Qu
Z3lwOmd0ZXN0JywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOmJhc2UnLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2Uv
YmFzZS5neXA6YmFzZV9pMThuJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnaW5jbHVk
ZV9kaXJzJzogWworICAgICAgICAgICAgICAgICdwdWJsaWMnLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5j
cHAnLAorICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJLaXRUZXN0LmgnLAorICAgICAgICAgICAg
ICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvdGVzdC9ydW5fYWxsX3VuaXR0ZXN0cy5jYycs
CisgICAgICAgICAgICBdLAorICAgICAgICB9LAogICAgIF0sICMgdGFyZ2V0cwogfQogCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAkocmV2aXNpb24gNTI5OTUpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDEsMjMgKzIwMSwyMyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiByZWZyZXNoIGlzIHRydWUs
IHRoZW4gY2FjaGVkIGluZm9ybWF0aW9uIHNob3VsZCBub3QgYmUgdXNlZCB0bwogICAgIC8vIHNh
dGlzZnkgdGhpcyBjYWxsLgotICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5MaXN0KGJvb2wgcmVm
cmVzaCwgV2ViUGx1Z2luTGlzdEJ1aWxkZXIqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGdldFBs
dWdpbkxpc3QoYm9vbCByZWZyZXNoLCBXZWJQbHVnaW5MaXN0QnVpbGRlciopIHsgfQogCiAKICAg
ICAvLyBQcm9maWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRTdGF0c0NvdW50
ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRTdGF0
c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1l
bnRTdGF0c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGlu
Y3JlbWVudFN0YXRzQ291bnRlcihjb25zdCBjaGFyKiBuYW1lKSB7IH0KIAogICAgIC8vIEFuIGV2
ZW50IGlzIGlkZW50aWZpZWQgYnkgdGhlIHBhaXIgKG5hbWUsIGlkKS4gIFRoZSBleHRyYSBwYXJh
bWV0ZXIKICAgICAvLyBzcGVjaWZpZXMgYWRkaXRpb25hbCBkYXRhIHRvIGxvZyB3aXRoIHRoZSBl
dmVudC4KLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUs
IHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCB0cmFj
ZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkg
eyB9OworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwg
dm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2VF
dmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsg
fQogCiAgICAgLy8gR2VuZXJpYyBjYWxsYmFjayBmb3IgcmVwb3J0aW5nIGhpc3RvZ3JhbSBkYXRh
LiBSYW5nZSBpcyBpZGVudGlmaWVkIGJ5IHRoZSBtaW4sIG1heCBwYWlyLgogICAgIC8vIEJ5IGRl
ZmF1bHQsIGhpc3RvZ3JhbSBpcyBleHBvbmVudGlhbCwgc28gdGhhdCBtaW49MSwgbWF4PTEwMDAw
MDAsIGJ1Y2tldENvdW50PTUwIHdvdWxkIGRvLiBTZXR0aW5nCiAgICAgLy8gbGluZWFyIHRvIHRy
dWUgd291bGQgcmVxdWlyZSBidWNrZXQgY291bnQgdG8gY292ZXIgd2hvbGUgbWluLW1heCByYW5n
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ291bnRzKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50LCBib29sIGxp
bmVhcikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1Db3VudHMoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291bnQs
IGJvb2wgbGluZWFyKSB7IH0KIAogCiAgICAgLy8gUmVzb3VyY2VzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvS1VSTFRlc3QuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0tVUkxUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9LVVJMVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQmFzaWMg
dGVzdHMgdGhhdCB2ZXJpZnkgb3VyIEtVUkwncyBpbnRlcmZhY2UgYmVoYXZlcyB0aGUgc2FtZSBh
cyB0aGUKKy8vIG9yaWdpbmFsIEtVUkwncy4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdFRlc3QuaCIKKworI2luY2x1ZGUgIktVUkwuaCIKKworbmFtZXNwYWNlIHsKKwor
Ly8gT3V0cHV0IHN0cmVhbSBvcGVyYXRvciBzbyBnVGVzdCdzIG1hY3JvcyB3b3JrIHdpdGggV2Vi
Q29yZSBzdHJpbmdzLgorc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHN0cikKK3sKKyAgICByZXR1cm4gc3RyLmlzRW1wdHko
KSA/IG91dCA6IG91dCA8PCBzdHIudXRmOCgpLmRhdGEoKTsKK30KKworc3RydWN0IENvbXBvbmVu
dENhc2UgeworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICBjb25zdCBjaGFyKiBwcm90b2NvbDsK
KyAgICBjb25zdCBjaGFyKiBob3N0OworICAgIGNvbnN0IGludCBwb3J0OworICAgIGNvbnN0IGNo
YXIqIHVzZXI7CisgICAgY29uc3QgY2hhciogcGFzczsKKyAgICBjb25zdCBjaGFyKiBwYXRoOwor
ICAgIGNvbnN0IGNoYXIqIGxhc3RQYXRoOworICAgIGNvbnN0IGNoYXIqIHF1ZXJ5OworICAgIGNv
bnN0IGNoYXIqIHJlZjsKK307CisKK2NsYXNzIEtVUkxUZXN0IDogcHVibGljIFdlYktpdFRlc3Qg
eworfTsKKworLy8gVGVzdCB0aGUgY2FzZXMgd2hlcmUgd2Ugc2hvdWxkIGJlIHRoZSBzYW1lIGFz
IFdlYktpdCdzIG9sZCBLVVJMLgorVEVTVF9GKEtVUkxUZXN0LCBTYW1lR2V0dGVycykKK3sKKyAg
ICBzdHJ1Y3QgR2V0dGVyQ2FzZSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICAgICAg
Y29uc3QgY2hhciogcHJvdG9jb2w7CisgICAgICAgIGNvbnN0IGNoYXIqIGhvc3Q7CisgICAgICAg
IGludCBwb3J0OworICAgICAgICBjb25zdCBjaGFyKiB1c2VyOworICAgICAgICBjb25zdCBjaGFy
KiBwYXNzOworICAgICAgICBjb25zdCBjaGFyKiBsYXN0UGF0aENvbXBvbmVudDsKKyAgICAgICAg
Y29uc3QgY2hhciogcXVlcnk7CisgICAgICAgIGNvbnN0IGNoYXIqIHJlZjsKKyAgICAgICAgYm9v
bCBoYXNSZWY7CisgICAgfSBjYXNlc1tdID0geworICAgICAgICB7Imh0dHA6Ly93d3cuZ29vZ2xl
LmNvbS9mb28vYmxhaD9iYXI9YmF6I3JlZiIsICJodHRwIiwgInd3dy5nb29nbGUuY29tIiwgMCwg
IiIsIE5VTEwsICJibGFoIiwgImJhcj1iYXoiLCAicmVmIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0
cDovL2Zvby5jb206MTIzNC9mb28vYmFyLyIsICJodHRwIiwgImZvby5jb20iLCAxMjM0LCAiIiwg
TlVMTCwgImJhciIsIE5VTEwsIE5VTEwsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vd3d3Lmdv
b2dsZS5jb20/IyIsICJodHRwIiwgInd3dy5nb29nbGUuY29tIiwgMCwgIiIsIE5VTEwsIE5VTEws
ICIiLCAiIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cHM6Ly9tZTpwYXNzQGdvb2dsZS5jb206MjMj
Zm9vIiwgImh0dHBzIiwgImdvb2dsZS5jb20iLCAyMywgIm1lIiwgInBhc3MiLCBOVUxMLCBOVUxM
LCAiZm9vIiwgdHJ1ZX0sCisgICAgICAgIHsiamF2YXNjcmlwdDpoZWxsbyEvL3dvcmxkIiwgImph
dmFzY3JpcHQiLCAiIiwgMCwgIiIsIE5VTEwsICJ3b3JsZCIsIE5VTEwsIE5VTEwsIGZhbHNlfSwK
KyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWVNJWkVfVU5TQUZFKGNh
c2VzKTsgaSsrKSB7CisgICAgICAgIC8vIFVURi04CisgICAgICAgIFdlYkNvcmU6OktVUkwga3Vy
bChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIGNhc2VzW2ldLnVybCk7CisKKyAgICAgICAgRVhQ
RUNUX0VRKGNhc2VzW2ldLnByb3RvY29sLCBrdXJsLnByb3RvY29sKCkpOworICAgICAgICBFWFBF
Q1RfRVEoY2FzZXNbaV0uaG9zdCwga3VybC5ob3N0KCkpOworICAgICAgICBFWFBFQ1RfRVEoY2Fz
ZXNbaV0ucG9ydCwga3VybC5wb3J0KCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNbaV0udXNl
ciwga3VybC51c2VyKCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNbaV0ucGFzcywga3VybC5w
YXNzKCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNbaV0ubGFzdFBhdGhDb21wb25lbnQsIGt1
cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5xdWVy
eSwga3VybC5xdWVyeSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNhc2VzW2ldLnJlZiwga3VybC5m
cmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5oYXNSZWYs
IGt1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOworCisgICAgICAgIC8vIFVURi0xNgorICAg
ICAgICBXZWJDb3JlOjpTdHJpbmcgdXRmMTYoY2FzZXNbaV0udXJsKTsKKyAgICAgICAga3VybCA9
IFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1dGYxNik7CisKKyAgICAg
ICAgRVhQRUNUX0VRKGNhc2VzW2ldLnByb3RvY29sLCBrdXJsLnByb3RvY29sKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoY2FzZXNbaV0uaG9zdCwga3VybC5ob3N0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoY2FzZXNbaV0ucG9ydCwga3VybC5wb3J0KCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNb
aV0udXNlciwga3VybC51c2VyKCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNbaV0ucGFzcywg
a3VybC5wYXNzKCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FzZXNbaV0ubGFzdFBhdGhDb21wb25l
bnQsIGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tp
XS5xdWVyeSwga3VybC5xdWVyeSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNhc2VzW2ldLnJlZiwg
a3VybC5mcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5o
YXNSZWYsIGt1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgIH0KK30KKworLy8gVGVz
dCBhIGZldyBjYXNlcyB3aGVyZSB3ZSdyZSBkaWZmZXJlbnQganVzdCB0byBtYWtlIHN1cmUgd2Ug
Z2l2ZSByZWFzb25hYmxlCisvLyBvdXRwdXQuCitURVNUX0YoS1VSTFRlc3QsIERpZmZlcmVudEdl
dHRlcnMpCit7CisgICAgQ29tcG9uZW50Q2FzZSBjYXNlc1tdID0geworICAgICAgICAvLyB1cmwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCAgICAgIGhvc3QgICAg
ICAgIHBvcnQgIHVzZXIgIHBhc3MgICAgcGF0aCAgICAgICAgICAgICAgICBsYXN0UGF0aCAgcXVl
cnkgICAgICByZWYKKworICAgICAgICAvLyBPbGQgV2ViS2l0IGFsbG93cyByZWZlcmVuY2VzIGFu
ZCBxdWVyaWVzIGluIHdoYXQgd2UgY2FsbCAicGF0aCIgVVJMcworICAgICAgICAvLyBsaWtlIGph
dmFzY3JpcHQsIHNvIHRoZSBwYXRoIGhlcmUgd2lsbCBvbmx5IGNvbnNpc3Qgb2YgImhlbGxvISIu
CisgICAgICAgIHsiamF2YXNjcmlwdDpoZWxsbyE/Iy9cXHdvcmxkIiwgICAgICAgICAgICJqYXZh
c2NyaXB0IiwgIiIsICAgICAgICAgMCwgICAgIiIsICAgTlVMTCwgICAiaGVsbG8hPyMvXFx3b3Js
ZCIsICJ3b3JsZCIsICBOVUxMLCAgICAgIE5VTEx9LAorCisgICAgICAgIC8vIE9sZCBXZWJLaXQg
ZG9lc24ndCBoYW5kbGUgInBhcmFtZXRlcnMiIGluIHBhdGhzLCBzbyB3aWxsCisgICAgICAgIC8v
IGRpc2FncmVlIHdpdGggdXMgYWJvdXQgd2hlcmUgdGhlIHBhdGggaXMgZm9yIHRoaXMgVVJMLgor
ICAgICAgICB7Imh0dHA6Ly9hLmNvbS9oZWxsbzt3b3JsZCIsICAgICAgICAgICAgICAiaHR0cCIs
ICAgICAgICJhLmNvbSIsICAgIDAsICAgICIiLCAgIE5VTEwsICAgICAiL2hlbGxvO3dvcmxkIiwg
ICAgICJoZWxsbyIsICBOVUxMLCAgICBOVUxMfSwKKworICAgICAgICAvLyBXZWJLaXQgZG9lc24n
dCBsaWtlIFVURi04IG9yIFVURi0xNiBpbnB1dC4KKyAgICAgICAgeyJodHRwOi8vXHhlNFx4YmRc
eGEwXHhlNVx4YTVceGJkXHhlNFx4YmRceGEwXHhlNVx4YTVceGJkLyIsICJodHRwIiwgInhuLS02
cXFhMDg4ZWJhIiwgMCwgIiIsIE5VTEwsICIvIiwgICBOVUxMLCAgICAgTlVMTCwgICAgICAgTlVM
TH0sCisKKyAgICAgICAgLy8gV2ViS2l0ICUtZXNjYXBlcyBub24tQVNDSUkgY2hhcmFjdGVycyBp
biByZWZlcmVuY2UsIGJ1dCB3ZSBkb24ndC4KKyAgICAgICAgeyJodHRwOi8vd3d3Lmdvb2dsZS5j
b20vZm9vL2JsYWg/YmFyPWJheiNceGNlXHhiMVx4Y2VceGIyIiwgImh0dHAiLCAid3d3Lmdvb2ds
ZS5jb20iLCAwLCAiIiwgTlVMTCwgIi9mb28vYmxhaC8iLCAiYmxhaCIsICJiYXI9YmF6IiwgIlx4
Y2VceGIxXHhjZVx4YjIifSwKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheXNpemUoY2FzZXMpOyBpKyspIHsKKyAgICAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNv
cmU6OlBhcnNlZFVSTFN0cmluZywgY2FzZXNbaV0udXJsKTsKKworICAgICAgICBFWFBFQ1RfRVEo
Y2FzZXNbaV0ucHJvdG9jb2wsIGt1cmwucHJvdG9jb2woKSk7CisgICAgICAgIEVYUEVDVF9FUShj
YXNlc1tpXS5ob3N0LCBrdXJsLmhvc3QoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5w
b3J0LCBrdXJsLnBvcnQoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS51c2VyLCBrdXJs
LnVzZXIoKSk7CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5wYXNzLCBrdXJsLnBhc3MoKSk7
CisgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5sYXN0UGF0aCwga3VybC5sYXN0UGF0aENvbXBv
bmVudCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGNhc2VzW2ldLnF1ZXJ5LCBrdXJsLnF1ZXJ5KCkp
OworICAgICAgICAvLyBXYW50IHRvIGNvbXBhcmUgVUNTLTE2IHJlZnMgKG9yIHRvIE5VTEwpLgor
ICAgICAgICBpZiAoY2FzZXNbaV0ucmVmKQorICAgICAgICAgICAgRVhQRUNUX0VRKFdlYkNvcmU6
OlN0cmluZzo6ZnJvbVVURjgoY2FzZXNbaV0ucmVmKSwga3VybC5mcmFnbWVudElkZW50aWZpZXIo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGt1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkuaXNOdWxsKCkpOworICAgIH0KK30KKworLy8gRW5zdXJlcyB0aGF0IGJvdGgg
QVNDSUkgYW5kIFVURi04IGNhbm9uaWNhbCBVUkxzIGFyZSBoYW5kbGVkIHByb3Blcmx5IGFuZCB3
ZQorLy8gZ2V0IHRoZSBjb3JyZWN0IHN0cmluZyBvYmplY3Qgb3V0LgorVEVTVF9GKEtVUkxUZXN0
LCBVVEY4KQoreworICAgIGNvbnN0IGNoYXIgYXNjaWlVUkxbXSA9ICJodHRwOi8vZm9vL2JhciNi
YXoiOworICAgIFdlYkNvcmU6OktVUkwgYXNjaWlfa3VybChXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsIGFzY2lpVVJMKTsKKyAgICBFWFBFQ1RfVFJVRShhc2NpaV9rdXJsLnN0cmluZygpID09IFdl
YkNvcmU6OlN0cmluZyhhc2NpaVVSTCkpOworCisgICAgLy8gV2hlbiB0aGUgcmVzdWx0IGlzIEFT
Q0lJLCB3ZSBzaG91bGQgZ2V0IGFuIEFTQ0lJIFN0cmluZy4gU29tZQorICAgIC8vIGNvZGUgZGVw
ZW5kcyBvbiBiZWluZyBhYmxlIHRvIGNvbXBhcmUgdGhlIHJlc3VsdCBvZiB0aGUgLnN0cmluZygp
CisgICAgLy8gZ2V0dGVyIHdpdGggYW5vdGhlciBTdHJpbmcsIGFuZCB0aGUgaXNBU0NJSW5lc3Mg
b2YgdGhlIHR3bworICAgIC8vIHN0cmluZ3MgbXVzdCBtYXRjaCBmb3IgdGhlc2UgZnVuY3Rpb25z
IChsaWtlIGVxdWFsSWdub3JpbmdDYXNlKS4KKyAgICBFWFBFQ1RfVFJVRShXZWJDb3JlOjplcXVh
bElnbm9yaW5nQ2FzZShhc2NpaV9rdXJsLCBXZWJDb3JlOjpTdHJpbmcoYXNjaWlVUkwpKSk7CisK
KyAgICAvLyBSZXByb2R1Y2UgY29kZSBwYXRoIGluIEZyYW1lTG9hZGVyLmNwcCAtLSBlcXVhbEln
bm9yaW5nQ2FzZSBpbXBsaWNpdGx5CisgICAgLy8gZXhwZWN0cyBna3VybC5wcm90b2NvbCgpIHRv
IGhhdmUgYmVlbiBjcmVhdGVkIGFzIGFzY2lpLgorICAgIFdlYkNvcmU6OktVUkwgbWFpbHRvKFdl
YkNvcmU6OlBhcnNlZFVSTFN0cmluZywgIm1haWx0bzpmb29AZm9vLmNvbSIpOworICAgIEVYUEVD
VF9UUlVFKFdlYkNvcmU6OmVxdWFsSWdub3JpbmdDYXNlKG1haWx0by5wcm90b2NvbCgpLCAibWFp
bHRvIikpOworCisgICAgY29uc3QgY2hhciB1dGY4VVJMW10gPSAiaHR0cDovL2Zvby9iYXIjXHhl
NFx4YmRceGEwXHhlNVx4YTVceGJkIjsKKyAgICBXZWJDb3JlOjpLVVJMIHV0ZjhLVVJMKFdlYkNv
cmU6OlBhcnNlZFVSTFN0cmluZywgdXRmOFVSTCk7CisKKyAgICBFWFBFQ1RfVFJVRSh1dGY4S1VS
TC5zdHJpbmcoKSA9PSBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHV0ZjhVUkwpKTsKK30KKwor
VEVTVF9GKEtVUkxUZXN0LCBTZXR0ZXJzKQoreworICAgIC8vIFJlcGxhY2UgdGhlIHN0YXJ0aW5n
IFVSTCB3aXRoIHRoZSBnaXZlbiBjb21wb25lbnRzIG9uZSBhdCBhIHRpbWUgYW5kCisgICAgLy8g
dmVyaWZ5IHRoYXQgd2UncmUgYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBvbGQgS1VSTC4KKyAgICAv
LworICAgIC8vIE5vdGUgdGhhdCBvbGQgS1VSTCB3b24ndCBjYW5vbmljYWxpemUgdGhlIGRlZmF1
bHQgcG9ydCBhd2F5LCBzbyB3ZQorICAgIC8vIGNhbid0IHNldCBzZXR0aW5nIHRoZSBodHRwIHBv
cnQgdG8gIjgwIiAob3IgZXZlbiAiMCIpLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyBjYW4ndCB0
ZXN0IGNsZWFyaW5nIHRoZSBxdWVyeS4KKyAgICAvLworICAgIC8vIFRoZSBmb3JtYXQgaXMgZXZl
cnkgb3RoZXIgcm93IGlzIGEgdGVzdCwgYW5kIHRoZSByb3cgdGhhdCBmb2xsb3dzIGl0IGlzIHRo
ZQorICAgIC8vIGV4cGVjdGVkIHJlc3VsdC4KKyAgICBzdHJ1Y3QgRXhwZWN0ZWRDb21wb25lbnRD
YXNlIHsKKyAgICAgICAgY29uc3QgY2hhciogdXJsOworICAgICAgICBjb25zdCBjaGFyKiBwcm90
b2NvbDsKKyAgICAgICAgY29uc3QgY2hhciogaG9zdDsKKyAgICAgICAgY29uc3QgaW50IHBvcnQ7
CisgICAgICAgIGNvbnN0IGNoYXIqIHVzZXI7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhc3M7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIHBhdGg7CisgICAgICAgIGNvbnN0IGNoYXIqIHF1ZXJ5OworICAg
ICAgICBjb25zdCBjaGFyKiByZWY7CisKKyAgICAgICAgLy8gVGhlIGZ1bGwgZXhwZWN0ZWQgVVJM
IHdpdGggdGhlIGdpdmVuICJzZXQiIGFwcGxpZWQuCisgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkUHJvdG9jb2w7CisgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkSG9zdDsKKyAgICAgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWRQb3J0OworICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZFVz
ZXI7CisgICAgICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkUGFzczsKKyAgICAgICAgY29uc3QgY2hh
ciogZXhwZWN0ZWRQYXRoOworICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZFF1ZXJ5OworICAg
ICAgICBjb25zdCBjaGFyKiBleHBlY3RlZFJlZjsKKyAgICB9IGNhc2VzW10gPSB7CisgICAgICAg
ICAvLyB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sICAgICAg
aG9zdCAgICAgICAgICAgICAgIHBvcnQgIHVzZXIgIHBhc3MgICAgcGF0aCAgICAgICAgICAgIHF1
ZXJ5ICAgICAgcmVmCisgICAgICAgIHsiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICAgICAgICAg
ICAgICAgICJodHRwcyIsICAgICAgIm5ld3MuZ29vZ2xlLmNvbSIsIDg4ODgsICJtZSIsICJwYXNz
IiwgIi9mb28iLCAgICAgICAgICI/cT1hc2RmIiwgImhlZWhlZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL3d3dy5nb29nbGUuY29t
LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImh0dHBzOi8vbmV3cy5nb29nbGUuY29tLyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJodHRwczovL25ld3MuZ29vZ2xlLmNvbTo4ODg4LyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJodHRwczovL21lQG5ld3MuZ29vZ2xlLmNvbTo4ODg4LyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL21lOnBhc3NAbmV3
cy5nb29nbGUuY29tOjg4ODgvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaHR0cHM6Ly9tZTpwYXNzQG5ld3MuZ29vZ2xlLmNvbTo4ODg4L2ZvbyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJodHRwczovL21lOnBhc3NAbmV3cy5nb29nbGUuY29tOjg4ODgvZm9vP3E9YXNkZiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImh0dHBzOi8vbWU6cGFzc0BuZXdzLmdvb2dsZS5jb206ODg4OC9mb28/
cT1hc2RmI2hlZWhlZSJ9LAorCisgICAgICAgIHsiaHR0cHM6Ly9tZTpwYXNzQGdvb2dsZS5jb206
ODgvYT9mI2IiLCAgICJodHRwIiwgICAgICAgImdvby5jb20iLCAgICAgICAgIDkyLCAgICIiLCAg
ICIiLCAgICAgIi8iLCAgICAgICAgICAgIE5VTEwsICAgICAgIiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vbWU6cGFzc0Bnb29nbGUu
Y29tOjg4L2E/ZiNiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL21lOnBhc3NAZ29vLmNvbTo4OC9hP2YjYiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vbWU6cGFzc0Bnb28uY29tOjkyL2E/
ZiNiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly86cGFzc0Bnb28u
Y29tOjkyL2E/ZiNiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0
dHA6Ly9nb28uY29tOjkyL2E/ZiNiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImh0dHA6Ly9nb28uY29tOjkyLz9mI2IiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2dv
by5jb206OTIvI2IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2dvby5jb206OTIvIn0sCisg
ICAgfTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlTSVpFX1VOU0FGRShjYXNl
cyk7IGkrKykgeworICAgICAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6UGFyc2VkVVJM
U3RyaW5nLCBjYXNlc1tpXS51cmwpOworCisgICAgICAgIGt1cmwuc2V0UHJvdG9jb2woY2FzZXNb
aV0ucHJvdG9jb2wpOworICAgICAgICBFWFBFQ1RfU1RSRVEoY2FzZXNbaV0uZXhwZWN0ZWRQcm90
b2NvbCwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBrdXJsLnNldEhv
c3QoY2FzZXNbaV0uaG9zdCk7CisgICAgICAgIEVYUEVDVF9TVFJFUShjYXNlc1tpXS5leHBlY3Rl
ZEhvc3QsIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAga3VybC5zZXRQ
b3J0KGNhc2VzW2ldLnBvcnQpOworICAgICAgICBFWFBFQ1RfU1RSRVEoY2FzZXNbaV0uZXhwZWN0
ZWRQb3J0LCBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGt1cmwuc2V0
VXNlcihjYXNlc1tpXS51c2VyKTsKKyAgICAgICAgRVhQRUNUX1NUUkVRKGNhc2VzW2ldLmV4cGVj
dGVkVXNlciwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBrdXJsLnNl
dFBhc3MoY2FzZXNbaV0ucGFzcyk7CisgICAgICAgIEVYUEVDVF9TVFJFUShjYXNlc1tpXS5leHBl
Y3RlZFBhc3MsIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAga3VybC5z
ZXRQYXRoKGNhc2VzW2ldLnBhdGgpOworICAgICAgICBFWFBFQ1RfU1RSRVEoY2FzZXNbaV0uZXhw
ZWN0ZWRQYXRoLCBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGt1cmwu
c2V0UXVlcnkoY2FzZXNbaV0ucXVlcnkpOworICAgICAgICBFWFBFQ1RfU1RSRVEoY2FzZXNbaV0u
ZXhwZWN0ZWRRdWVyeSwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICAv
LyBSZWZzIGFyZSB0ZXN0ZWQgYmVsb3cuIE9uIHRoZSBTYWZhcmkgMy4xIGJyYW5jaCwgd2UgZG9u
J3QgbWF0Y2ggdGhlaXIKKyAgICAgICAgLy8gS1VSTCBzaW5jZSB3ZSBpbnRlZ3JhdGVkIGEgZml4
IGZyb20gdGhlaXIgdHJ1bmsuCisgICAgfQorfQorCisvLyBUZXN0cyB0aGF0IEtVUkw6OmRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyB3b3JrcyBhcyBleHBlY3RlZAorI2lmIFVTRShHT09HTEVVUkwp
CitURVNUX0YoS1VSTFRlc3QsIERlY29kZSkKK3sKKyAgICBzdHJ1Y3QgRGVjb2RlQ2FzZSB7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGlucHV0OworICAgICAgICBjb25zdCBjaGFyKiBvdXRwdXQ7Cisg
ICAgfSBkZWNvZGVDYXNlc1tdID0geworICAgICAgICB7ImhlbGxvLCB3b3JsZCIsICJoZWxsbywg
d29ybGQifSwKKyAgICAgICAgeyIlMDElMDIlMDMlMDQlMDUlMDYlMDclMDglMDklMGElMEIlMEMl
MEQlMGUlMGYvIiwgIlx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwOVx4MGFceDBC
XHgwQ1x4MERceDBlXHgwZi8ifSwKKyAgICAgICAgeyIlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTcl
MTglMTklMWElMUIlMUMlMUQlMWUlMWYvIiwgIlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZc
eDE3XHgxOFx4MTlceDFhXHgxQlx4MUNceDFEXHgxZVx4MWYvIn0sCisgICAgICAgIHsiJTIwJTIx
JTIyJTIzJTI0JTI1JTI2JTI3JTI4JTI5JTJhJTJCJTJDJTJEJTJlJTJmLyIsICIgIVwiIyQlJico
KSorLC0uLy8ifSwKKyAgICAgICAgeyIlMzAlMzElMzIlMzMlMzQlMzUlMzYlMzclMzglMzklM2El
M0IlM0MlM0QlM2UlM2YvIiwgIjAxMjM0NTY3ODk6Ozw9Pj8vIn0sCisgICAgICAgIHsiJTQwJTQx
JTQyJTQzJTQ0JTQ1JTQ2JTQ3JTQ4JTQ5JTRhJTRCJTRDJTREJTRlJTRmLyIsICJAQUJDREVGR0hJ
SktMTU5PLyJ9LAorICAgICAgICB7IiU1MCU1MSU1MiU1MyU1NCU1NSU1NiU1NyU1OCU1OSU1YSU1
QiU1QyU1RCU1ZSU1Zi8iLCAiUFFSU1RVVldYWVpbXFxdXl8vIn0sCisgICAgICAgIHsiJTYwJTYx
JTYyJTYzJTY0JTY1JTY2JTY3JTY4JTY5JTZhJTZCJTZDJTZEJTZlJTZmLyIsICJgYWJjZGVmZ2hp
amtsbW5vLyJ9LAorICAgICAgICB7IiU3MCU3MSU3MiU3MyU3NCU3NSU3NiU3NyU3OCU3OSU3YSU3
QiU3QyU3RCU3ZSU3Zi8iLCAicHFyc3R1dnd4eXp7fH1+XHg3Zi8ifSwKKyAgICAgICAgICAvLyBU
ZXN0IHVuLVVURi04LWl6YXRpb24uCisgICAgICAgIHsiJWU0JWJkJWEwJWU1JWE1JWJkIiwgIlx4
ZTRceGJkXHhhMFx4ZTVceGE1XHhiZCJ9LAorICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IEFSUkFZU0laRV9VTlNBRkUoZGVjb2RlQ2FzZXMpOyBpKyspIHsKKyAgICAgICAgV2Vi
Q29yZTo6U3RyaW5nIGlucHV0KGRlY29kZUNhc2VzW2ldLmlucHV0KTsKKyAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nIHN0ciA9IFdlYkNvcmU6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhpbnB1dCk7
CisgICAgICAgIEVYUEVDVF9TVFJFUShkZWNvZGVDYXNlc1tpXS5vdXRwdXQsIHN0ci51dGY4KCku
ZGF0YSgpKTsKKyAgICB9CisKKyAgICAvLyBPdXIgZGVjb2RlIHNob3VsZCBkZWNvZGUgJTAwCisg
ICAgV2ViQ29yZTo6U3RyaW5nIHplcm8gPSBXZWJDb3JlOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMoIiUwMCIpOworICAgIEVYUEVDVF9TVFJORSgiJTAwIiwgemVyby51dGY4KCkuZGF0YSgpKTsK
KworICAgIC8vIFRlc3QgdGhlIGVycm9yIGJlaGF2aW9yIGZvciBpbnZhbGlkIFVURi04ICh3ZSBk
aWZmZXIgZnJvbSBXZWJLaXQgaGVyZSkuCisgICAgV2ViQ29yZTo6U3RyaW5nIGludmFsaWQgPSBX
ZWJDb3JlOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoCisgICAgICAgICIlZTQlYTAlZTUlYTUl
YmQiKTsKKyAgICBjaGFyMTYgaW52YWxpZEV4cGVjdGVkSGVscGVyWzRdID0geyAweDAwZTQsIDB4
MDBhMCwgMHg1OTdkLCAwIH07CisgICAgV2ViQ29yZTo6U3RyaW5nIGludmFsaWRFeHBlY3RlZCgK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4oaW52YWxpZEV4cGVjdGVk
SGVscGVyKSwKKyAgICAgICAgMyk7CisgICAgRVhQRUNUX0VRKGludmFsaWRFeHBlY3RlZCwgaW52
YWxpZCk7Cit9CisjZW5kaWYKKworVEVTVF9GKEtVUkxUZXN0LCBFbmNvZGUpCit7CisgICAgLy8g
QWxzbyB0ZXN0IHRoYXQgaXQgZ2V0cyBjb252ZXJ0ZWQgdG8gVVRGLTggcHJvcGVybHkuCisgICAg
Y2hhcjE2IHdpZGVJbnB1dEhlbHBlclszXSA9IHsgMHg0ZjYwLCAweDU5N2QsIDAgfTsKKyAgICBX
ZWJDb3JlOjpTdHJpbmcgd2lkZUlucHV0KAorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0
IDo6VUNoYXIqPih3aWRlSW5wdXRIZWxwZXIpLCAyKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgd2lk
ZVJlZmVyZW5jZSgiXHhlNFx4YmRceGEwXHhlNVx4YTVceGJkIiwgNik7CisgICAgV2ViQ29yZTo6
U3RyaW5nIHdpZGVPdXRwdXQgPQorICAgICAgICBXZWJDb3JlOjplbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKHdpZGVJbnB1dCk7CisgICAgRVhQRUNUX0VRKHdpZGVSZWZlcmVuY2UsIHdpZGVP
dXRwdXQpOworCisgICAgLy8gT3VyIGVuY29kZSBvbmx5IGVzY2FwZXMgTlVMTHMgZm9yIHNhZmV0
eSAoc2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IKKyAgICAvLyBtb3JlKSwgc28gd2Ugb25seSBi
b3RoZXIgdG8gdGVzdCBhIGZldyBjYXNlcy4KKyAgICBXZWJDb3JlOjpTdHJpbmcgaW5wdXQoCisg
ICAgICAgICJceDAwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhceDA5XHgwYVx4MGJc
eDBjXHgwZFx4MGVceDBmIiwgMTYpOworICAgIFdlYkNvcmU6OlN0cmluZyByZWZlcmVuY2UoCisg
ICAgICAgICIlMDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4
MGNceDBkXHgwZVx4MGYiLCAxOCk7CisgICAgV2ViQ29yZTo6U3RyaW5nIG91dHB1dCA9IFdlYkNv
cmU6OmVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoaW5wdXQpOworICAgIEVYUEVDVF9FUShy
ZWZlcmVuY2UsIG91dHB1dCk7Cit9CisKK1RFU1RfRihLVVJMVGVzdCwgUmVzb2x2ZUVtcHR5KQor
eworICAgIFdlYkNvcmU6OktVUkwgZW1wdHlCYXNlOworCisgICAgLy8gV2ViS2l0IGxpa2VzIHRv
IGJlIGFibGUgdG8gcmVzb2x2ZSBhYnNvbHV0ZSBpbnB1dCBhZ2FpbnMgZW1wdHkgYmFzZSBVUkxz
LAorICAgIC8vIHdoaWNoIHdvdWxkIG5vcm1hbGx5IGJlIGludmFsaWQgc2luY2UgdGhlIGJhc2Ug
VVJMIGlzIGludmFsaWQuCisgICAgY29uc3QgY2hhciBhYnNbXSA9ICJodHRwOi8vd3d3Lmdvb2ds
ZS5jb20vIjsKKyAgICBXZWJDb3JlOjpLVVJMIHJlc29sdmVBYnMoZW1wdHlCYXNlLCBhYnMpOwor
ICAgIEVYUEVDVF9UUlVFKHJlc29sdmVBYnMuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
YWJzLCByZXNvbHZlQWJzLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gUmVzb2x2
aW5nIGEgbm9uLXJlbGF0aXZlIFVSTCBhZ2FpbnMgdGhlIGVtcHR5IG9uZSBzaG91bGQgc3RpbGwg
ZXJyb3IuCisgICAgY29uc3QgY2hhciByZWxbXSA9ICJmb28uaHRtbCI7CisgICAgV2ViQ29yZTo6
S1VSTCByZXNvbHZlRXJyKGVtcHR5QmFzZSwgcmVsKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzb2x2
ZUVyci5pc1ZhbGlkKCkpOworfQorCisvLyBXZWJLaXQgd2lsbCBtYWtlIGVtcHR5IFVSTHMgYW5k
IHNldCBjb21wb25lbnRzIG9uIHRoZW0uIGt1cmwgZG9lc24ndCBhbGxvdworLy8gcmVwbGFjZW1l
bnRzIG9uIGludmFsaWQgVVJMcywgYnV0IGhlcmUgd2UgZG8uCitURVNUX0YoS1VSTFRlc3QsIFJl
cGxhY2VJbnZhbGlkKQoreworICAgIFdlYkNvcmU6OktVUkwga3VybDsKKworICAgIEVYUEVDVF9G
QUxTRShrdXJsLmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5pc0VtcHR5KCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiIiwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAg
IGt1cmwuc2V0UHJvdG9jb2woImh0dHAiKTsKKyAgICAvLyBHS1VSTCB3aWxsIHNheSB0aGF0IGEg
VVJMIHdpdGgganVzdCBhIHNjaGVtZSBpcyBpbnZhbGlkLCBLVVJMIHdpbGwgbm90LgorI2lmIFVT
RShHT09HTEVVUkwpCisgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNWYWxpZCgpKTsKKyNlbHNlCisg
ICAgRVhQRUNUX1RSVUUoa3VybC5pc1ZhbGlkKCkpOworI2VuZGlmCisgICAgRVhQRUNUX0ZBTFNF
KGt1cmwuaXNFbXB0eSgpKTsKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBkbyB0aGluZ3Mgc2xp
Z2h0bHkgZGlmZmVyZW50bHkgaWYgdGhlcmUgaXMgb25seSBhIHNjaGVtZS4KKyAgICAvLyBXZSBj
aGVjayB0aGUgcmVzdWx0cyBoZXJlIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHdoYXQgaXMgZ29p
bmcgb24sIGJ1dCBpdAorICAgIC8vIHNob3VsZG4ndCBiZSBhIGJpZyBkZWFsIGlmIHRoZXNlIGNo
YW5nZS4KKyNpZiBVU0UoR09PR0xFVVJMKQorICAgIEVYUEVDVF9TVFJFUSgiaHR0cDoiLCBrdXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6
LyIsIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKworICAgIGt1cmwuc2V0
SG9zdCgid3d3Lmdvb2dsZS5jb20iKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsLmlzVmFsaWQoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAga3VybC5zZXRQb3J0KDgwMDApOworICAgIEVYUEVDVF9UUlVFKGt1cmwuaXNWYWxpZCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3d3dy5nb29nbGUuY29tOjgwMDAvIiwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGt1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7CisgICAgRVhQRUNUX1RSVUUoa3Vy
bC5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzRW1wdHkoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vd3d3Lmdvb2dsZS5jb206ODAwMC9mYXZpY29uLmljbyIsIGt1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBOb3cgbGV0J3MgdGVzdCB0aGF0IGdp
dmluZyBhbiBpbnZhbGlkIHJlcGxhY2VtZW50IHN0aWxsIGZhaWxzLgorI2lmIFVTRShHT09HTEVV
UkwpCisgICAga3VybC5zZXRQcm90b2NvbCgiZi9zaiNAIik7CisgICAgRVhQRUNUX0ZBTFNFKGt1
cmwuaXNWYWxpZCgpKTsKKyNlbmRpZgorfQorCitURVNUX0YoS1VSTFRlc3QsIFBhdGgpCit7Cisg
ICAgY29uc3QgY2hhciBpbml0aWFsW10gPSAiaHR0cDovL3d3dy5nb29nbGUuY29tL3BhdGgvZm9v
IjsKKyAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBpbml0
aWFsKTsKKworICAgIC8vIENsZWFyIGJ5IHNldHRpbmcgYSBOVUxMIHN0cmluZy4KKyAgICBXZWJD
b3JlOjpTdHJpbmcgbnVsbFN0cmluZzsKKyAgICBFWFBFQ1RfVFJVRShudWxsU3RyaW5nLmlzTnVs
bCgpKTsKKyAgICBrdXJsLnNldFBhdGgobnVsbFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKK30K
KworLy8gVGVzdCB0aGF0IHNldHRpbmcgdGhlIHF1ZXJ5IHRvIGRpZmZlcmVudCB0aGluZ3Mgd29y
a3MuIFRocSBxdWVyeSBpcyBoYW5kbGVkCisvLyBhIGxpdHRsZXIgZGlmZmVyZW50bHkgdGhhbiBz
b21lIG9mIHRoZSBvdGhlciBjb21wb25lbnRzLgorVEVTVF9GKEtVUkxUZXN0LCBRdWVyeSkKK3sK
KyAgICBjb25zdCBjaGFyIGluaXRpYWxbXSA9ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNo
P3E9YXdlc29tZSI7CisgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OlBhcnNlZFVSTFN0
cmluZywgaW5pdGlhbCk7CisKKyAgICAvLyBDbGVhciBieSBzZXR0aW5nIGEgTlVMTCBzdHJpbmcu
CisgICAgV2ViQ29yZTo6U3RyaW5nIG51bGxTdHJpbmc7CisgICAgRVhQRUNUX1RSVUUobnVsbFN0
cmluZy5pc051bGwoKSk7CisgICAga3VybC5zZXRRdWVyeShudWxsU3RyaW5nKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2giLCBrdXJsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgLy8gQ2xlYXIgYnkgc2V0dGluZyBhbiBlbXB0eSBzdHJpbmcu
CisgICAga3VybCA9IFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBpbml0
aWFsKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgZW1wdHlTdHJpbmcoIiIpOworICAgIEVYUEVDVF9G
QUxTRShlbXB0eVN0cmluZy5pc051bGwoKSk7CisgICAga3VybC5zZXRRdWVyeShlbXB0eVN0cmlu
Zyk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoPyIsIGt1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBTZXQgd2l0aCBzb21ldGhpbmcg
dGhhdCBiZWdpbnMgaW4gYSBxdWVzdGlvbiBtYXJrLgorICAgIGNvbnN0IGNoYXIgcXVlc3Rpb25b
XSA9ICI/Zm9vPWJhciI7CisgICAga3VybC5zZXRRdWVyeShxdWVzdGlvbik7CisgICAgRVhQRUNU
X1NUUkVRKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP2Zvbz1iYXIiLAorICAgICAgICAg
ICAgICAgICBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gU2V0IHdpdGgg
c29tZXRoaW5nIHRoYXQgZG9lc24ndCBiZWdpbiBpbiBhIHF1ZXN0aW9uIG1hcmsuCisgICAgY29u
c3QgY2hhciBxdWVyeVtdID0gImZvbz1iYXIiOworICAgIGt1cmwuc2V0UXVlcnkocXVlcnkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9mb289YmFyIiwK
KyAgICAgICAgICAgICAgICAga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKK30KKworVEVT
VF9GKEtVUkxUZXN0LCBSZWYpCit7CisgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OlBh
cnNlZFVSTFN0cmluZywgImh0dHA6Ly9mb28vYmFyI2JheiIpOworCisgICAgLy8gQmFzaWMgcmVm
IHNldHRpbmcuCisgICAgV2ViQ29yZTo6S1VSTCBjdXIoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2Zvby9iYXIiKTsKKyAgICBjdXIuc2V0RnJhZ21lbnRJZGVudGlmaWVyKCJhc2Rm
Iik7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vZm9vL2JhciNhc2RmIiwgY3VyLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgIGN1ciA9IGt1cmw7CisgICAgY3VyLnNldEZyYWdtZW50SWRl
bnRpZmllcigiYXNkZiIpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL2Zvby9iYXIjYXNkZiIs
IGN1ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIC8vIFNldHRpbmcgYSByZWYgdG8g
dGhlIGVtcHR5IHN0cmluZyB3aWxsIHNldCBpdCB0byAiIyIuCisgICAgY3VyID0gV2ViQ29yZTo6
S1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZm9vL2JhciIpOworICAgIGN1
ci5zZXRGcmFnbWVudElkZW50aWZpZXIoIiIpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL2Zv
by9iYXIjIiwgY3VyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGN1ciA9IGt1cmw7Cisg
ICAgY3VyLnNldEZyYWdtZW50SWRlbnRpZmllcigiIik7CisgICAgRVhQRUNUX1NUUkVRKCJodHRw
Oi8vZm9vL2JhciMiLCBjdXIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBTZXR0
aW5nIHRoZSByZWYgdG8gdGhlIG51bGwgc3RyaW5nIHdpbGwgY2xlYXIgaXQgYWx0b2dldGhlci4K
KyAgICBjdXIgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgImh0dHA6
Ly9mb28vYmFyIik7CisgICAgY3VyLnNldEZyYWdtZW50SWRlbnRpZmllcihXZWJDb3JlOjpTdHJp
bmcoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vZm9vL2JhciIsIGN1ci5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBjdXIgPSBrdXJsOworICAgIGN1ci5zZXRGcmFnbWVudElkZW50
aWZpZXIoV2ViQ29yZTo6U3RyaW5nKCkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL2Zvby9i
YXIiLCBjdXIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK1RFU1RfRihLVVJMVGVzdCwg
RW1wdHkpCit7CisgICAgV2ViQ29yZTo6S1VSTCBrdXJsOworCisgICAgLy8gRmlyc3QgdGVzdCB0
aGF0IHJlZ3VsYXIgZW1wdHkgVVJMcyBhcmUgdGhlIHNhbWUuCisgICAgRVhQRUNUX1RSVUUoa3Vy
bC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzVmFsaWQoKSk7CisgICAgRVhQ
RUNUX1RSVUUoa3VybC5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5zdHJpbmcoKS5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5zdHJpbmcoKS5pc0VtcHR5KCkpOworCisg
ICAgLy8gVGVzdCByZXNvbHZpbmcgYSBOVUxMIFVSTCBvbiBhbiBlbXB0eSBzdHJpbmcuCisgICAg
V2ViQ29yZTo6S1VSTCBrdXJsMihrdXJsLCAiIik7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwyLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsMi5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9G
QUxTRShrdXJsMi5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRShrdXJsMi5zdHJpbmcoKS5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybDIuc3RyaW5nKCkuaXNFbXB0eSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoa3VybDIuc3RyaW5nKCkuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGt1cmwyLnN0cmluZygpLmlzRW1wdHkoKSk7CisKKyAgICAvLyBSZXNvbHZlIHRoZSBOVUxMIFVS
TCBvbiBhIE5VTEwgc3RyaW5nLgorICAgIFdlYkNvcmU6OktVUkwga3VybDIyKGt1cmwsIFdlYkNv
cmU6OlN0cmluZygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybDIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfVFJVRShrdXJsMjIuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybDIyLmlz
VmFsaWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwyMi5zdHJpbmcoKS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoa3VybDIyLnN0cmluZygpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGt1cmwyMi5zdHJpbmcoKS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybDIyLnN0
cmluZygpLmlzRW1wdHkoKSk7CisKKyAgICAvLyBUZXN0IG5vbi1oaWVyYXJjaGljYWwgc2NoZW1l
cyByZXNvbHZpbmcuIFRoZSBhY3R1YWwgVVJMcyB3aWxsIGJlIGRpZmZlcmVudC4KKyAgICAvLyBX
ZWJLaXQncyBvbmUgd2lsbCBzZXQgdGhlIHN0cmluZyB0byAic29tZXRoaW5nLmdpZiIgYW5kIHdl
J2xsIHNldCBpdCB0byBhbgorICAgIC8vIGVtcHR5IHN0cmluZy4gSSB0aGluayBlaXRoZXIgaXMg
T0ssIHNvIHdlIGp1c3QgY2hlY2sgb3VyIGJlaGF2aW9yLgorI2lmIFVTRShHT09HTEVVUkwpCisg
ICAgV2ViQ29yZTo6S1VSTCBrdXJsMyhXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0
cmluZywgImRhdGE6Zm9vIiksCisgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nLmdp
ZiIpOworICAgIEVYUEVDVF9UUlVFKGt1cmwzLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGt1cmwzLmlzVmFsaWQoKSk7CisjZW5kaWYKKworICAgIC8vIFRlc3QgZm9yIHdlaXJkIGlzTnVs
bCBzdHJpbmcgaW5wdXQsCisgICAgLy8gc2VlOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ4NworICAgIFdlYkNvcmU6OktVUkwga3VybDQoV2ViQ29yZTo6UGFyc2Vk
VVJMU3RyaW5nLCBrdXJsLnN0cmluZygpKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsNC5pc0VtcHR5
KCkpOworICAgIEVYUEVDVF9GQUxTRShrdXJsNC5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9UUlVF
KGt1cmw0LnN0cmluZygpLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsNC5zdHJpbmco
KS5pc0VtcHR5KCkpOworCisgICAgLy8gUmVzb2x2aW5nIGFuIGVtcHR5IFVSTCBvbiBhbiBpbnZh
bGlkIHN0cmluZy4KKyAgICBXZWJDb3JlOjpLVVJMIGt1cmw1KFdlYkNvcmU6OktVUkwoKSwgImZv
by5qcyIpOworICAgIC8vIFdlJ2xsIGJlIGVtcHR5IGluIHRoaXMgY2FzZSwgYnV0IEtVUkwgd29u
J3QgYmUuIFNob3VsZCBiZSBPSy4KKyAgICAvLyBFWFBFQ1RfRVEoa3VybDUuaXNFbXB0eSgpLCBr
dXJsNS5pc0VtcHR5KCkpOworICAgIC8vIEVYUEVDVF9FUShrdXJsNS5zdHJpbmcoKS5pc0VtcHR5
KCksIGt1cmw1LnN0cmluZygpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmw1Lmlz
VmFsaWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmw1LnN0cmluZygpLmlzTnVsbCgpKTsKKwor
ICAgIC8vIEVtcHR5IHN0cmluZyBhcyBpbnB1dAorICAgIFdlYkNvcmU6OktVUkwga3VybDYoV2Vi
Q29yZTo6UGFyc2VkVVJMU3RyaW5nLCAiIik7CisgICAgRVhQRUNUX1RSVUUoa3VybDYuaXNFbXB0
eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybDYuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uoa3VybDYuc3RyaW5nKCkuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGt1cmw2LnN0cmlu
ZygpLmlzRW1wdHkoKSk7CisKKyAgICAvLyBOb24tZW1wdHkgYnV0IGludmFsaWQgQyBzdHJpbmcg
YXMgaW5wdXQuCisgICAgV2ViQ29yZTo6S1VSTCBrdXJsNyhXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsICJmb28uanMiKTsKKyAgICAvLyBXZWJLaXQgd2lsbCBhY3R1YWxseSBzYXkgdGhpcyBVUkwg
aGFzIHRoZSBzdHJpbmcgImZvby5qcyIgYnV0IGlzIGludmFsaWQuCisgICAgLy8gV2UgZG9uJ3Qg
ZG8gdGhhdC4KKyAgICAvLyBFWFBFQ1RfRVEoa3VybDcuaXNFbXB0eSgpLCBrdXJsNy5pc0VtcHR5
KCkpOworICAgIEVYUEVDVF9GQUxTRShrdXJsNy5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxT
RShrdXJsNy5zdHJpbmcoKS5pc051bGwoKSk7Cit9CisKK1RFU1RfRihLVVJMVGVzdCwgVXNlclBh
c3MpCit7CisgICAgY29uc3QgY2hhciogc3JjID0gImh0dHA6Ly91c2VyOnBhc3NAZ29vZ2xlLmNv
bS8iOworICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHNy
Yyk7CisKKyAgICAvLyBDbGVhciBqdXN0IHRoZSB1c2VybmFtZS4KKyAgICBrdXJsLnNldFVzZXIo
IiIpOworICAgIEVYUEVDVF9FUSgiaHR0cDovLzpwYXNzQGdvb2dsZS5jb20vIiwga3VybC5zdHJp
bmcoKSk7CisKKyAgICAvLyBDbGVhciBqdXN0IHRoZSBwYXNzd29yZC4KKyAgICBrdXJsID0gV2Vi
Q29yZTo6S1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHNyYyk7CisgICAga3VybC5zZXRQ
YXNzKCIiKTsKKyAgICBFWFBFQ1RfRVEoImh0dHA6Ly91c2VyQGdvb2dsZS5jb20vIiwga3VybC5z
dHJpbmcoKSk7CisKKyAgICAvLyBOb3cgY2xlYXIgYm90aC4KKyAgICBrdXJsLnNldFVzZXIoIiIp
OworICAgIEVYUEVDVF9FUSgiaHR0cDovL2dvb2dsZS5jb20vIiwga3VybC5zdHJpbmcoKSk7Cit9
CisKK1RFU1RfRihLVVJMVGVzdCwgT2Zmc2V0cykKK3sKKyAgICBjb25zdCBjaGFyKiBzcmMxID0g
Imh0dHA6Ly91c2VyOnBhc3NAZ29vZ2xlLmNvbS9mb28vYmFyLmh0bWw/YmF6PXF1ZXJ5I3JlZiI7
CisgICAgV2ViQ29yZTo6S1VSTCBrdXJsMShXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHNyYzEp
OworCisgICAgRVhQRUNUX0VRKDE3dSwga3VybDEuaG9zdFN0YXJ0KCkpOworICAgIEVYUEVDVF9F
USgyN3UsIGt1cmwxLmhvc3RFbmQoKSk7CisgICAgRVhQRUNUX0VRKDI3dSwga3VybDEucGF0aFN0
YXJ0KCkpOworICAgIEVYUEVDVF9FUSg0MHUsIGt1cmwxLnBhdGhFbmQoKSk7CisgICAgRVhQRUNU
X0VRKDMydSwga3VybDEucGF0aEFmdGVyTGFzdFNsYXNoKCkpOworCisgICAgY29uc3QgY2hhciog
c3JjMiA9ICJodHRwOi8vZ29vZ2xlLmNvbS9mb28vIjsKKyAgICBXZWJDb3JlOjpLVVJMIGt1cmwy
KFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgc3JjMik7CisKKyAgICBFWFBFQ1RfRVEoN3UsIGt1
cmwyLmhvc3RTdGFydCgpKTsKKyAgICBFWFBFQ1RfRVEoMTd1LCBrdXJsMi5ob3N0RW5kKCkpOwor
ICAgIEVYUEVDVF9FUSgxN3UsIGt1cmwyLnBhdGhTdGFydCgpKTsKKyAgICBFWFBFQ1RfRVEoMjJ1
LCBrdXJsMi5wYXRoRW5kKCkpOworICAgIEVYUEVDVF9FUSgyMnUsIGt1cmwyLnBhdGhBZnRlckxh
c3RTbGFzaCgpKTsKKworICAgIGNvbnN0IGNoYXIqIHNyYzMgPSAiamF2YXNjcmlwdDpmb29iYXIi
OworICAgIFdlYkNvcmU6OktVUkwga3VybDMoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBzcmMz
KTsKKworICAgIEVYUEVDVF9FUSgxMXUsIGt1cmwzLmhvc3RTdGFydCgpKTsKKyAgICBFWFBFQ1Rf
RVEoMTF1LCBrdXJsMy5ob3N0RW5kKCkpOworICAgIEVYUEVDVF9FUSgxMXUsIGt1cmwzLnBhdGhT
dGFydCgpKTsKKyAgICBFWFBFQ1RfRVEoMTd1LCBrdXJsMy5wYXRoRW5kKCkpOworICAgIEVYUEVD
VF9FUSgxMXUsIGt1cmwzLnBhdGhBZnRlckxhc3RTbGFzaCgpKTsKK30KKworVEVTVF9GKEtVUkxU
ZXN0LCBEZWVwQ29weSkKK3sKKyAgICBjb25zdCBjaGFyIHVybFtdID0gImh0dHA6Ly93d3cuZ29v
Z2xlLmNvbS8iOworICAgIFdlYkNvcmU6OktVUkwgc3JjKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmlu
ZywgdXJsKTsKKyAgICBFWFBFQ1RfVFJVRShzcmMuc3RyaW5nKCkgPT0gdXJsKTsgIC8vIFRoaXMg
cmVhbGx5IGp1c3QgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlLgorICAgIFdlYkNvcmU6OktVUkwgZGVz
dCA9IHNyYy5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoZGVzdC5zdHJpbmcoKSA9PSB1cmwpOyAg
Ly8gVGhpcyByZWFsbHkganVzdCBpbml0aWFsaXplcyB0aGUgY2FjaGUuCisKKyAgICAvLyBUaGUg
cG9pbnRlcnMgc2hvdWxkIGJlIGRpZmZlcmVudCBmb3IgYm90aCBVVEYtOCBhbmQgVVRGLTE2Lgor
ICAgIEVYUEVDVF9ORShkZXN0LnN0cmluZygpLmNoYXJhY3RlcnMoKSwgc3JjLnN0cmluZygpLmNo
YXJhY3RlcnMoKSk7CisgICAgRVhQRUNUX05FKGRlc3QudXRmOFN0cmluZygpLmRhdGEoKSwgc3Jj
LnV0ZjhTdHJpbmcoKS5kYXRhKCkpOworfQorCitURVNUX0YoS1VSTFRlc3QsIFByb3RvY29sSXMp
Cit7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwxKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywiZm9v
Oi8vYmFyIik7CisgICAgRVhQRUNUX1RSVUUodXJsMS5wcm90b2NvbElzKCJmb28iKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHVybDEucHJvdG9jb2xJcygiZm9vLWJhciIpKTsKKworICAgIFdlYkNvcmU6
OktVUkwgdXJsMihXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsImZvby1iYXI6Iik7CisgICAgRVhQ
RUNUX1RSVUUodXJsMi5wcm90b2NvbElzKCJmb28tYmFyIikpOworICAgIEVYUEVDVF9GQUxTRSh1
cmwyLnByb3RvY29sSXMoImZvbyIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKDQpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJLaXRcY2hyb21pdW1cdGVzdHNcS1VSTFRlc3QuY3BwDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
DQpBZGRlZDogc3ZuOmVvbC1zdHlsZQ0KICAgKyBMRg0KDQpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYktpdFRlc3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJLaXRUZXN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
S2l0VGVzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRUZXN0
X2gKKyNkZWZpbmUgV2ViS2l0VGVzdF9oCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCisj
aW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCisKK2NsYXNzIFdl
YktpdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFdlYktpdDo6aW5pdGlhbGl6ZSgmbV9kdW1teUNs
aWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAg
ICAgIFdlYktpdDo6c2h1dGRvd24oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gV2ViS2l0
Q2xpZW50IGhhcyBhIHByb3RlY3RlZCBkZXN0cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNz
LgorICAgIGNsYXNzIER1bW15Q2xpZW50IDogcHVibGljIFdlYktpdDo6V2ViS2l0Q2xpZW50IHt9
OworICAgIER1bW15Q2xpZW50IG1fZHVtbXlDbGllbnQ7Cit9OworCisjZW5kaWYKDQpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXRcY2hyb21pdW1cdGVzdHNcV2ViS2l0VGVzdC5oDQpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fDQpBZGRlZDogc3ZuOmVvbC1zdHlsZQ0KICAgKyBMRg0KDQo=
</data>
<flag name="review"
          id="28361"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="28365"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>