<?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>45831</bug_id>
          
          <creation_ts>2010-09-15 13:39:06 -0700</creation_ts>
          <short_desc>[Qt] Turn on PLATFORM_STRATEGIES</short_desc>
          <delta_ts>2010-09-21 06:16:38 -0700</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 Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46181</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ademar Reis">ademar</reporter>
          <assigned_to name="Ademar Reis">ademar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279677</commentid>
    <comment_count>0</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-15 13:39:06 -0700</bug_when>
    <thetext>We need to support/enable PLATFORM_STRATEGIES on the Qt port in order to support plugins and other features on WebKit2. Right now only mac/windows support it.

Some references:

 - https://lists.webkit.org/pipermail/webkit-dev/2010-June/013270.html (discussion on the webkit-dev ml)
 - Bug 43431 (adding support on Windows)
 - http://trac.webkit.org/changeset/64645 (commit adding support on windows)

I&apos;m working on it. A first patch should be available for review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280312</commentid>
    <comment_count>1</comment_count>
      <attachid>67833</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-16 13:34:10 -0700</bug_when>
    <thetext>Created attachment 67833
Initial patch

Initial patch for review.

Question for review: Inside our localization implementation, the following methods were inside an #if ENABLE(VIDEO):

localizedMediaControlElementString()
localizedMediaControlElementHelpText()
localizedMediaTimeDescription()
(these methods are relatively large, ~40 strings total)

But the WebCore::LocalizationStrategy base-class (pure virtual) doesn&apos;t have such conditional.

In my patch I added an #else and implemented stubs for these methods in case VIDEO is disabled. Should I add #if ENABLE(VIDEO) in the base class instead (and change the other ports as well)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280314</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-16 13:35:59 -0700</bug_when>
    <thetext>Attachment 67833 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:32:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280320</commentid>
    <comment_count>3</comment_count>
      <attachid>67836</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-16 13:40:06 -0700</bug_when>
    <thetext>Created attachment 67836
patch, now with a style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280335</commentid>
    <comment_count>4</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-16 13:50:03 -0700</bug_when>
    <thetext>I have another couple of questions for the reviewer :-)

While moving the implementation from WebCore/platform/qt/Localizations.cpp to 
WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp, I added notImplemented() to a few localization methods which are just returning String(), based on other examples I found in the same file.

I&apos;m not sure if that was really needed/correct. Example:

(from WebCore/platform/qt/Localizations.cpp)
-String AXLinkActionVerb()
-{
-    return String();
-}

(WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp)
+String WebPlatformStrategies::AXLinkActionVerb()
+{
+    notImplemented();
+    return String();
+}

Also, there was no multipleFileUploadText() implemented in the Qt localization, so I added a stub.

Sorry for not bringing these points when attaching the patch a few minutes ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280614</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-17 05:25:25 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=67833) [details]
&gt; Initial patch
&gt; 
&gt; Initial patch for review.
&gt; 
&gt; Question for review: Inside our localization implementation, the following methods were inside an #if ENABLE(VIDEO):
&gt; 
&gt; localizedMediaControlElementString()
&gt; localizedMediaControlElementHelpText()
&gt; localizedMediaTimeDescription()
&gt; (these methods are relatively large, ~40 strings total)
&gt; 
&gt; But the WebCore::LocalizationStrategy base-class (pure virtual) doesn&apos;t have such conditional.
&gt; 
&gt; In my patch I added an #else and implemented stubs for these methods in case VIDEO is disabled. Should I add #if ENABLE(VIDEO) in the base class instead (and change the other ports as well)?

That is probably just a bug, I guess you can leave them out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280616</commentid>
    <comment_count>6</comment_count>
      <attachid>67836</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-17 05:30:33 -0700</bug_when>
    <thetext>Comment on attachment 67836
patch, now with a style fix

View in context: https://bugs.webkit.org/attachment.cgi?id=67836&amp;action=prettypatch

&gt; WebCore/platform/qt/Language.cpp:2
&gt; + * Copyright (C) 2010 INdT - Instituto Nokia de Tecnologia

I think you need to add Nokia copyright as well

&gt; WebCore/platform/qt/Language.cpp:29
&gt; +

Why all these empty lines?

&gt; WebCore/platform/qt/Language.cpp:31
&gt; +

Here again

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:33
&gt; +

Please read the part about includes in the WebKit style guide. We normally don&apos;t add sections of includes, thought we might have done so earlier on.

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:86
&gt; +    QWebPluginFactory* factory = m_page-&gt;pluginFactory();

Will this work for webkit2? Can be fixes later!

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:88
&gt; +

remove newline

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:606
&gt; +// XXX: #if ENABLE(VIDEO) should be in the base class

We normally use FIXME:

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.h:137
&gt; +    QWebPage *m_page;

* is placed wrongly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280623</commentid>
    <comment_count>7</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-17 06:03:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 67836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67836&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/platform/qt/Language.cpp:2
&gt; &gt; + * Copyright (C) 2010 INdT - Instituto Nokia de Tecnologia
&gt; 
&gt; I think you need to add Nokia copyright as well

Done

&gt; 
&gt; &gt; WebCore/platform/qt/Language.cpp:29
&gt; &gt; +
&gt; 
&gt; Why all these empty lines?
&gt; 
&gt; &gt; WebCore/platform/qt/Language.cpp:31
&gt; &gt; +
&gt; 
&gt; Here again

Apparently I misunderstood check-webkit-style complains somewhere. Fixed.

&gt; 
&gt; &gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:33
&gt; &gt; +
&gt; 
&gt; Please read the part about includes in the WebKit style guide. We normally don&apos;t add sections of includes, thought we might have done so earlier on.

Not even when mixing internal and external headers (e.g. WebCore and Qt headers)? Apparently there&apos;s no rule or consistent example for such cases, so I just ordered them.

We should also have a guideline for when to use &quot;&quot; or &lt;&gt;, but that&apos;s off-topic now :)

&gt; 
&gt; &gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:86
&gt; &gt; +    QWebPluginFactory* factory = m_page-&gt;pluginFactory();
&gt; 
&gt; Will this work for webkit2? Can be fixes later!

WebKit2 has it&apos;s own WebPlatformStrategies.cpp implementation, which right now is shared among the three platforms supporting it and has a few FIXMEs inside.

I plan to invest some time on a second task focused on WebKit2, which will probably require changes in code which is common between all platforms. The idea of this patch/bug is just to enable platform strategies, &quot;AS IS&quot;.

&gt; 
&gt; &gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:88
&gt; &gt; +
&gt; 
&gt; remove newline

Was copy&amp;pasted, but done :)

&gt; 
&gt; &gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:606
&gt; &gt; +// XXX: #if ENABLE(VIDEO) should be in the base class
&gt; 
&gt; We normally use FIXME:
&gt; 

Done

&gt; &gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.h:137
&gt; &gt; +    QWebPage *m_page;
&gt; 
&gt; * is placed wrongly

Done

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280625</commentid>
    <comment_count>8</comment_count>
      <attachid>67904</attachid>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-09-17 06:11:34 -0700</bug_when>
    <thetext>Created attachment 67904
patch with review fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280632</commentid>
    <comment_count>9</comment_count>
      <attachid>67904</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-17 06:37:33 -0700</bug_when>
    <thetext>Comment on attachment 67904
patch with review fixes

View in context: https://bugs.webkit.org/attachment.cgi?id=67904&amp;action=prettypatch

&gt; WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp:375
&gt; +    return String();

Maybe we should file a bug about implementing these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281106</commentid>
    <comment_count>10</comment_count>
      <attachid>67836</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-18 03:19:12 -0700</bug_when>
    <thetext>Comment on attachment 67836
patch, now with a style fix

Cleared Kenneth Rohde Christiansen&apos;s review+ from obsolete attachment 67836 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281167</commentid>
    <comment_count>11</comment_count>
      <attachid>67904</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-18 13:16:02 -0700</bug_when>
    <thetext>Comment on attachment 67904
patch with review fixes

Clearing flags on attachment: 67904

Committed r67787: &lt;http://trac.webkit.org/changeset/67787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281168</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-18 13:16:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281170</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-18 13:23:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; All reviewed patches have been landed.  Closing bug.

Nice work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281458</commentid>
    <comment_count>14</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-09-20 02:21:57 -0700</bug_when>
    <thetext>*** Bug 45881 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67833</attachid>
            <date>2010-09-16 13:34:10 -0700</date>
            <delta_ts>2010-09-16 13:40:06 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>0001-Enable-Platform-Strategies-on-Qt.patch</filename>
            <type>text/plain</type>
            <size>69575</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSBmYmFjN2FhMTY0MmJjYWNiOWI3YjI4ZDM0MTVlYWQ5ZTc4ZTgzNGQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogVGh1LCAxNiBTZXAgMjAxMCAxNDoxNTo0NyAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0CgpbUXRdIFR1cm4g
b24gUExBVEZPUk1fU1RSQVRFR0lFUwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU4MzEKLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTEgKwogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggICAgICAg
ICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0xh
bmd1YWdlLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgNDIgKysKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvTG9jYWxpemF0aW9ucy5jcHAgICAgICAgICAgICAgIHwgIDUzNiAtLS0tLS0tLS0tLS0tLS0t
CiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcCAgICAgICAgICAgICAgICB8ICAg
OTggLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDMgKwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMTA1ICsrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgfCAgNjc4ICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggICB8ICAxNDAgKysrKwogV2ViS2l0Mi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIFdlYktp
dDIvV2ViS2l0Mi5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAx
MyBmaWxlcyBjaGFuZ2VkLCAxMDE4IGluc2VydGlvbnMoKyksIDYzNyBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjY2RjOTYuLmE5Njg0MDEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOS0xNiAgQWRlbWFyIGRlIFNvdXphIFJlaXMg
SnIgIDxhZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0
CisKKyAgICAgICAgW1F0XSBUdXJuIG9uIFBMQVRGT1JNX1NUUkFURUdJRVMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODMxCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDogRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgd2hlbiBidWlsZGluZyBR
dFdlYmtpdAorCiAyMDEwLTA5LTE2ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
ZDFjOTcwNi4uMDBhYjI2MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExMTEsNyArMTExMSw3
IEBACiAjZGVmaW5lIEVOQUJMRV9KU0NfWk9NQklFUyAwCiAKIC8qIEZJWE1FOiBFdmVudHVhbGx5
IHdlIHNob3VsZCBlbmFibGUgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyBhbmQgZ2V0IHJpZCBvZiB0
aGUgZGVmaW5lLiAqLwotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUgV1RG
X1VTRV9QTEFURk9STV9TVFJBVEVHSUVTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMGZiYTAuLjFkNGI0YTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTAtMDktMTYgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFy
LnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFbmFibGUgUGxhdGZvcm0gU3RyYXRlZ2llcyBvbiBRdAorCisgICAgICAg
IFtRdF0gVHVybiBvbiBQTEFURk9STV9TVFJBVEVHSUVTCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTgzMQorCisgICAgICAgICogV2ViQ29yZS5wcm86
IEFkZGluZy9yZW1vdmluZyBpbXBsZW1lbnRhdGlvbiBmaWxlcworICAgICAgICAqIHBsYXRmb3Jt
L3F0L0xhbmd1YWdlLmNwcDogQWRkZWQsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpIHdhcwor
ICAgICAgICBtb3ZlZCBmcm9tIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwCisgICAgICAg
IChXZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UpOiBNb3ZlZCBmcm9tIExvY2FsaXphdGlvbnMuY3Bw
CisgICAgICAgICogcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHA6IFJlbW92ZWQgKGNvZGUg
aXMgbm93IGluc2lkZQorICAgICAgICBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwKQorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcDogUmVtb3ZlZCAo
aWRlbSkKKwogMjAxMC0wOS0xNiAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNTRlZTUzNi4uODYxYTA3NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xMTc5LDYgKzExNzksOCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L3Ry
YW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9VVUlELmNwcCBcCiAg
ICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCBcCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgXAogICAgIHBsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpbkRlYnVnLmNwcCBcCiAgICAg
cGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBcCkBAIC0yMDMzLDYgKzIwMzUsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBcCiAgICAgcGxhdGZvcm0vTGlu
a0hhc2guaCBcCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5oIFwKKyAgICBwbGF0Zm9ybS9MYW5ndWFn
ZS5oIFwKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogICAgIHBsYXRmb3JtL25l
dHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvQXV0aGVudGljYXRpb25DbGllbnQuaCBcCkBAIC0yMDk1LDYgKzIwOTgsOCBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBcCiAgICAgcGxhdGZvcm0vVGltZXIu
aCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmggXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRl
Z2llcy5oIFwKKyAgICBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggXAogICAgIHBsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5oIFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlLmggXAogICAgIHBs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuaCBcCkBAIC0yNTA2LDYgKzI1MTEsNyBAQCBIRUFERVJTICs9
IFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdp
bi5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQu
aCBcCiAgICAgJCRQV0QvLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dVF0LmggXAorICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBcCiAgICAgJCRQV0QvcGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVmZXRj
aEhlbHBlci5oCiAKIHY4IHsKQEAgLTI1NzAsNyArMjU3Niw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRhUXQuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9LVVJMUXQuY3BwIFwK
LSAgICBwbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTUlN
RVR5cGVSZWdpc3RyeVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBc
CiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwIFwKQEAgLTI1ODUs
MTMgKzI1OTAsMTMgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1NvdW5kUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9M
b2dnaW5nUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRm
b3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9U
ZXh0Qm91bmRhcmllc1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5jcHAgXAogICAg
IHBsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1dpZGdldFF0
LmNwcCBcCi0gICAgcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcCBcCiAgICAgLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKQEAgLTI2MDgsNiArMjYx
Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1
cE1lbnVRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3Jt
UGx1Z2luLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudVF0LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCiAgICAgLi4vV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDY3NzdmCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPFFMb2NhbGU+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCit7CisgICAgUUxvY2FsZSBs
b2NhbGU7CisgICAgcmV0dXJuIGxvY2FsZS5uYW1lKCkucmVwbGFjZSgiXyIsICItIik7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0NTQ4NzJhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9j
YWxpemF0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuIDxpbmZvQHN0
YWlrb3MubmV0PgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKLSNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFMb2NhbGU+
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVN0cmluZyBzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVs
IGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsKLX0KLQotU3RyaW5n
IGlucHV0RWxlbWVudEFsdFRleHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN1Ym1pdCIsICJTdWJtaXQgKGlucHV0IGVsZW1lbnQpIGFs
dCB0ZXh0IGZvciA8aW5wdXQ+IGVsZW1lbnRzIHdpdGggbm8gYWx0LCB0aXRsZSwgb3IgdmFsdWUi
KTsKLX0KLQotU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKLXsKLSAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXNldCIsICJkZWZhdWx0
IGxhYmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOwotfQotCi1T
dHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKLXsKLSAgICBRTG9jYWxlIGxvY2FsZTsKLSAgICByZXR1
cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKCJfIiwgIi0iKTsKLX0KLQotU3RyaW5nIHNlYXJjaGFi
bGVJbmRleEludHJvZHVjdGlvbigpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVGhpcyBpcyBhIHNlYXJjaGFibGUgaW5kZXguIEVudGVyIHNl
YXJjaCBrZXl3b3JkczogIiwgInRleHQgdGhhdCBhcHBlYXJzIGF0IHRoZSBzdGFydCBvZiBuZWFy
bHktb2Jzb2xldGUgd2ViIHBhZ2VzIGluIHRoZSBmb3JtIG9mIGEgJ3NlYXJjaGFibGUgaW5kZXgn
Iik7Ci19Ci0KLVN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKLXsKLSAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDaG9vc2UgRmlsZSIs
ICJ0aXRsZSBmb3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIik7Ci19Ci0KLVN0cmlu
ZyBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0
IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmls
ZSBpcyBzZWxlY3RlZCIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJ
bk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiT3BlbiBpbiBOZXcgV2luZG93IiwgIk9wZW4gaW4gTmV3IFdpbmRvdyBjb250
ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRM
aW5rVG9EaXNrKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJTYXZlIExpbmsuLi4iLCAiRG93bmxvYWQgTGlua2VkIEZpbGUgY29udGV4dCBt
ZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlw
Ym9hcmQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIEltYWdl
IiwgIk9wZW4gSW1hZ2UgaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpCi17Ci0gICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2F2ZSBJbWFnZSIs
ICJEb3dubG9hZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQotewotICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNvcHkgSW1hZ2UiLCAiQ29weSBMaW5r
IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
RnJhbWVJbk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBGcmFtZSIsICJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3cg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHko
KQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnR29CYWNrKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJHbyBCYWNrIiwgIkJhY2sgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCi17Ci0gICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiR28gRm9yd2FyZCIsICJGb3J3
YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
dG9wKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1JlbG9hZCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVsb2FkIiwgIlJlbG9hZCBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKLXsKLSAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXQiLCAiQ3V0IGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpCi17Ci0g
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGFzdGUi
LCAiUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJObyBHdWVzc2VzIEZvdW5kIiwgIk5vIEd1ZXNzZXMgRm91bmQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZVNwZWxsaW5nKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJJZ25vcmUiLCAiSWdub3JlIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJBZGQgVG8gRGlj
dGlvbmFyeSIsICJMZWFybiBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWFyY2ggVGhlIFdlYiIsICJTZWFyY2gg
VGhlIFdlYiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnTG9va1VwSW5EaWN0aW9uYXJ5KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJMb29rIFVwIEluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBp
biBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGluaygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpCi17Ci0g
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSWdub3Jl
IiwgIklnbm9yZSBHcmFtbWFyIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNwZWxsaW5nIiwgIlNwZWxsaW5nIGFuZCBHcmFt
bWFyIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KQotewotICAgIHJldHVybiBzaG93ID8gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTaG93IFNwZWxsaW5nIGFuZCBH
cmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpIDoKLSAgICAgICAgICAgICAgICAgIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1h
ciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0No
ZWNrU3BlbGxpbmcoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIkNoZWNrIFNwZWxsaW5nIiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIsICJDaGVjayBzcGVsbGluZyB3
aGlsZSB0eXBpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxs
aW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQotewotICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkZvbnRzIiwgIkZvbnQgY29u
dGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xk
KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJCb2xkIiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0l0YWxpYygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiSXRhbGljIiwgIkl0YWxpYyBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKLXsKLSAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJVbmRlcmxpbmUiLCAiVW5k
ZXJsaW5lIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJPdXRsaW5lIiwgIk91dGxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJEaXJlY3Rpb24i
LCAiV3JpdGluZyBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpCi17Ci0gICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVGV4dCBEaXJlY3Rpb24iLCAi
VGV4dCBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJEZWZhdWx0IiwgIkRlZmF1bHQgd3JpdGlu
ZyBkaXJlY3Rpb24gY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0xlZnRUb1JpZ2h0KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4
dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0
KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKLXsKLSAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJbnNwZWN0IiwgIklu
c3BlY3QgRWxlbWVudCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVu
dU5vUmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJObyByZWNlbnQgc2VhcmNoZXMiLCAiTGFiZWwgZm9yIG9u
bHkgaXRlbSBpbiBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2gg
ZmllbGQgaW1hZ2UsIHdoZW4gbm8gc2VhcmNoZXMgaGF2ZSBiZWVuIHBlcmZvcm1lZCIpOwotfQot
Ci1TdHJpbmcgc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVjZW50IHNlYXJjaGVzIiwg
ImxhYmVsIGZvciBmaXJzdCBpdGVtIGluIHRoZSBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNr
aW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHVzZWQgYXMgZW1iZWRkZWQgbWVudSB0aXRs
ZSIpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKLXsK
LSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDbGVh
ciByZWNlbnQgc2VhcmNoZXMiLCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRo
YXQgZW1wdGllcyBtZW51J3MgY29udGVudHMiKTsKLX0KLQotU3RyaW5nIEFYV2ViQXJlYVRleHQo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTGlua1RleHQoKQotewot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKQotewot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWEhlYWRpbmdUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKQot
ewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3REZWZp
bml0aW9uVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhCdXR0
b25BY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWFJh
ZGlvQnV0dG9uQWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJp
bmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LVN0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJp
bmcoKTsKLX0KLQotU3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJi
KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWE1lbnVMaXN0QWN0aW9u
VmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgbWlzc2luZ1BsdWdp
blRleHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBs
dWctaW4gaXMgbWlzc2luZyIpOwotfQotCi1TdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcg
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7
Ci19Ci0KLVN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKLXsKLSAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJVbmtub3duIiwgIlVua25vd24gZmls
ZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKTsKLX0KLQotU3RyaW5nIGltYWdlVGl0
bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSAoJTJ4JTMg
cGl4ZWxzKSIsICJUaXRsZSBzdHJpbmcgZm9yIGltYWdlcyIpLmFyZyhmaWxlbmFtZSkuYXJnKHNp
emUud2lkdGgoKSkuYXJnKHNpemUuaGVpZ2h0KCkpOwotfQotCi1TdHJpbmcgbWVkaWFFbGVtZW50
TG9hZGluZ1N0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiTG9hZGluZy4uLiIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBt
ZXNzYWdlIHdoZW4gdGhlIG1lZGlhIGlzIGxvYWRpbmciKTsKLX0KLQotU3RyaW5nIG1lZGlhRWxl
bWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxpdmUgQnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRy
b2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB3YXRjaGluZyBhIGxpdmUgYnJvYWRjYXN0Iik7Ci19
Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0KLVN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVt
ZW50U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBpZiAobmFtZSA9PSAiQXVkaW9F
bGVtZW50IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiQXVkaW8gRWxlbWVudCIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAg
ICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVmlkZW8gRWxlbWVudCIsICJNZWRpYSBjb250
cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCi0gICAgICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk11dGUgQnV0
dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJVbk11
dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJVbm11dGUgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwot
ICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGxheSBCdXR0b24iLCAiTWVkaWEgY29udHJv
bGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKLSAgICAgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGF1c2UgQnV0
dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJTbGlk
ZXIiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJTbGlkZXIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIlNsaWRlclRodW1iIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiU2xpZGVyIFRodW1iIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOwotICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXdpbmQgQnV0dG9uIiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiUmV0dXJuIHRvIFJlYWwtdGltZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCi0gICAg
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkVsYXBz
ZWQgVGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAi
VGltZVJlbWFpbmluZ0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZW1haW5pbmcgVGltZSIsICJNZWRpYSBjb250cm9sbGVy
IGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCi0gICAgICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN0YXR1cyBEaXNw
bGF5IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJGdWxs
c2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiRnVsbHNjcmVlbiBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKLSAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBGb3J3YXJk
IEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAi
U2Vla0JhY2tCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJTZWVrIEJhY2sgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxl
bWVudCIpOwotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgbG9jYWxpemVkTWVk
aWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBpZiAo
bmFtZSA9PSAiQXVkaW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQXVkaW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBh
bmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYg
KG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29udHJvbHMg
YW5kIHN0YXR1cyBkaXNwbGF5IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlm
IChuYW1lID09ICJNdXRlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTXV0ZSBhdWRpbyB0cmFja3MiLCAiTWVkaWEgY29udHJv
bGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVubXV0ZSBh
dWRpbyB0cmFja3MiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIlBsYXlCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJCZWdpbiBwbGF5YmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKLSAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXVzZSBwbGF5YmFjayIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKLSAg
ICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTW92
aWUgdGltZSBzY3J1YmJlciIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAo
bmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNb3ZpZSB0aW1lIHNjcnViYmVyIHRodW1iIiwgIk1lZGlh
IGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQot
ICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJS
ZXdpbmQgbW92aWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXR1cm4gc3RyZWFtaW5nIG1vdmllIHRvIHJl
YWwtdGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAi
Q3VycmVudFRpbWVEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBtb3ZpZSB0aW1lIiwgIk1lZGlhIGNvbnRyb2xs
ZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIpCi0g
ICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJl
bWFpbmluZyBtb3ZpZSB0aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlm
IChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBtb3ZpZSBzdGF0dXMiLCAiTWVkaWEg
Y29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIkZ1bGxzY3JlZW5CdXR0b24i
KQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJQbGF5IG1vdmllIGluIGZ1bGwtc2NyZWVuIG1vZGUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKLSAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBxdWlja2x5
IGJhY2siLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlNl
ZWtCYWNrQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiU2VlayBxdWlja2x5IGZvcndhcmQiLCAiTWVkaWEgY29udHJvbGxlciBl
bGVtZW50Iik7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5n
KCk7Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCB0aW1l
KQotewotICAgIGlmICghaXNmaW5pdGUodGltZSkpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluZGVmaW5pdGUgdGltZSIsICJNZWRpYSB0
aW1lIGRlc2NyaXB0aW9uIik7Ci0KLSAgICBpbnQgc2Vjb25kcyA9IChpbnQpZmFic2YodGltZSk7
Ci0gICAgaW50IGRheXMgPSBzZWNvbmRzIC8gKDYwICogNjAgKiAyNCk7Ci0gICAgaW50IGhvdXJz
ID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjAp
ICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChkYXlzKQotICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBkYXlzICUyIGhv
dXJzICUzIG1pbnV0ZXMgJTQgc2Vjb25kcyIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIikuYXJn
KGRheXMpLmFyZyhob3VycykuYXJnKG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsKLQotICAgIGlmICho
b3VycykKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiJTEgaG91cnMgJTIgbWludXRlcyAlMyBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3Jp
cHRpb24iKS5hcmcoaG91cnMpLmFyZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7Ci0KLSAgICBpZiAo
bWludXRlcykKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiJTEgbWludXRlcyAlMiBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24i
KS5hcmcobWludXRlcykuYXJnKHNlY29uZHMpOwotCi0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgc2Vjb25kcyIsICJNZWRpYSB0aW1lIGRlc2Ny
aXB0aW9uIikuYXJnKHNlY29uZHMpOwotfQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykKLQotU3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVR5cGVNaXNtYXRjaFRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0
Y2hUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsK
LX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92
ZXJmbG93VGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5n
KCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi19Ci0vLyB2
aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpbkRh
dGFRdC5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjODZkMC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luRGF0YVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQotICAgIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVn
aW5EYXRhLmgiCi0KLSNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgotI2luY2x1ZGUgIlBsdWdp
blBhY2thZ2UuaCIKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVu
dFF0LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgPHF3ZWJwYWdlLmg+Ci0jaW5jbHVk
ZSA8cXdlYnBsdWdpbmZhY3RvcnkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFBs
dWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKLXsKLSAgICBRV2ViUGFnZSogd2ViUGFnZSA9IHN0YXRp
Y19jYXN0PENocm9tZUNsaWVudFF0Kj4obV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5tX3dl
YlBhZ2U7Ci0gICAgUVdlYlBsdWdpbkZhY3RvcnkqIGZhY3RvcnkgPSB3ZWJQYWdlLT5wbHVnaW5G
YWN0b3J5KCk7Ci0gICAgaWYgKGZhY3RvcnkpIHsKLQotICAgICAgICBRTGlzdDxRV2ViUGx1Z2lu
RmFjdG9yeTo6UGx1Z2luPiBxcGx1Z2lucyA9IGZhY3RvcnktPnBsdWdpbnMoKTsKLSAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBxcGx1Z2lucy5jb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IFFXZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4mIHFwbHVnaW4gPSBxcGx1Z2lucy5hdChp
KTsKLQotICAgICAgICAgICAgUGx1Z2luSW5mbyBpbmZvOwotICAgICAgICAgICAgaW5mby5uYW1l
ID0gcXBsdWdpbi5uYW1lOwotICAgICAgICAgICAgaW5mby5kZXNjID0gcXBsdWdpbi5kZXNjcmlw
dGlvbjsKLQotICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBxcGx1Z2luLm1pbWVUeXBl
cy5jb3VudCgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2luRmFjdG9y
eTo6TWltZVR5cGUmIG1pbWVUeXBlID0gcXBsdWdpbi5taW1lVHlwZXMuYXQoaik7Ci0KLSAgICAg
ICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWVJbmZvOwotICAgICAgICAgICAgICAgIG1pbWVJ
bmZvLnR5cGUgPSBtaW1lVHlwZS5uYW1lOwotICAgICAgICAgICAgICAgIG1pbWVJbmZvLmRlc2Mg
PSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsg
ayA8IG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zLmNvdW50KCk7ICsraykKLSAgICAgICAgICAgICAg
ICAgIG1pbWVJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zLmF0
KGspKTsKLQotICAgICAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWVJbmZvKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChpbmZvKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIFBsdWdpbkRhdGFiYXNlICpkYiA9IFBsdWdpbkRhdGFiYXNlOjpp
bnN0YWxsZWRQbHVnaW5zKCk7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1
Z2lucyA9IGRiLT5wbHVnaW5zKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyBpbmZvOwotICAgICAg
ICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKLQotICAgICAgICBpbmZvLm5h
bWUgPSBwYWNrYWdlLT5uYW1lKCk7Ci0gICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVO
YW1lKCk7Ci0gICAgICAgIGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7Ci0KLSAg
ICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBw
YWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKLSAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7Ci0gICAg
ICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVU
b0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1p
bWVDbGFzc0luZm8gbWltZTsKLQotICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0Owot
ICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIG1pbWUuZXh0
ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKLQot
ICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtX3BsdWdpbnMuYXBwZW5kKGluZm8pOwotICAgIH0KLX0KLQotdm9pZCBQbHVnaW5EYXRhOjpy
ZWZyZXNoKCkKLXsKLSAgICBQbHVnaW5EYXRhYmFzZSAqZGIgPSBQbHVnaW5EYXRhYmFzZTo6aW5z
dGFsbGVkUGx1Z2lucygpOwotICAgIGRiLT5yZWZyZXNoKCk7Ci19Ci0KLX07CmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CmluZGV4IDFmNzVmYTIuLjE4MWIzYTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC03OCw2ICs3OCw3IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkNhY2hlLmgiCiAj
aW5jbHVkZSAicnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgiCkBAIC0yNzEsNiArMjcyLDgg
QEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgIFdl
YkNvcmU6OkZvbnQ6OnNldENvZGVQYXRoKFdlYkNvcmU6OkZvbnQ6OkNvbXBsZXgpOwogI2VuZGlm
CiAKKyAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUocXEpOworCiAgICAgUGFn
ZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CiAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50
ID0gbmV3IENocm9tZUNsaWVudFF0KHEpOwogICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xp
ZW50ID0gbmV3IENvbnRleHRNZW51Q2xpZW50UXQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGJkNGIyYzIuLjM5NTZlMmQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEwOCBAQAorMjAxMC0wOS0xNiAgQWRlbWFyIGRlIFNvdXphIFJlaXMgSnIgIDxh
ZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0CisKKyAg
ICAgICAgW1F0XSBUdXJuIG9uIFBMQVRGT1JNX1NUUkFURUdJRVMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODMxCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOiBJ
bml0aWFsaXplIHRoZSBQbGF0Zm9ybVN0cmF0ZWd5CisgICAgICAgIHNpbmdsZXRvbi4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOiBBZGRlZCwgY29k
ZSB3YXMgbW92ZWQKKyAgICAgICAgZnJvbSBwbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcCBh
bmQgcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluaXRpYWxpemUpOiBjcmVhdGUgdGhlIHNpbmdsZXRvbiwKKyAgICAgICAgZm9sbG93
aW5nIHRoZSBzYW1lICJwYXR0ZXJuIiB1c2VkIGJ5IE1hYyBhbmQgV2luIHBvcnRzLgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmlucHV0RWxlbWVudEFsdFRleHQpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbik6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRM
YWJlbCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rSW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdl
SW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dp
bmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0NvcHkpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdHb0JhY2spOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdHb0ZvcndhcmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdTdG9wKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnQ3V0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnUGFzdGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
Yik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xv
b2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tT
cGVsbGluZyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQm9sZCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxp
Yyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Vu
ZGVybGluZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ091dGxpbmUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbik6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlZnRU
b1JpZ2h0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnUmlnaHRUb0xlZnQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFdlYkFyZWFUZXh0KToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OkFYTGlzdE1hcmtlclRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpBWEltYWdlTWFwVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OkFYSGVhZGluZ1RleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWERlZmlu
aXRpb25MaXN0VGVybVRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWERl
ZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpBWEJ1dHRvbkFjdGlvblZlcmIpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OkFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om1pc3NpbmdQbHVnaW5UZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3Jhc2hlZFBsdWdpblRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dW5rbm93bkZpbGVTaXplVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptZWRp
YUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50
SGVscFRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRp
YVRpbWVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlk
YXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9u
Z1RleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2Fn
ZVJhbmdlVW5kZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZh
bGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YWRkVmlzaXRlZExpbmspOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOiBBZGRlZCwgYmFzZWQgb24gTWFjIGFuZCBXaW4KKyAg
ICAgICAgdmVyc2lvbnMuCisKIDIwMTAtMDktMTYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkM2RkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMCww
ICsxLDY3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuIDxpbmZvQHN0YWlrb3MubmV0PgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8SW50U2l6ZS5oPgor
I2luY2x1ZGUgPFBhZ2UuaD4KKyNpbmNsdWRlIDxQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxQbHVn
aW5EYXRhYmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKKyNpbmNsdWRlIDxR
Q29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFMb2NhbGU+CisjaW5jbHVkZSA8cXdlYnBhZ2Uu
aD4KKyNpbmNsdWRlIDxxd2VicGx1Z2luZmFjdG9yeS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoUVdlYlBhZ2Uq
IHdlYlBhZ2UpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMsIHBsYXRmb3JtU3RyYXRlZ2llcywgKHdlYlBhZ2UpKTsKKyAgICBRX1VOVVNFRChwbGF0Zm9y
bVN0cmF0ZWdpZXMpOworfQorCitXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llcyhRV2ViUGFnZSogd2ViUGFnZSkKKyAgICA6IG1fcGFnZSh3ZWJQYWdlKQoreworICAg
IHNldFBsYXRmb3JtU3RyYXRlZ2llcyh0aGlzKTsKK30KKworCisvLyBQbHVnaW5TdHJhdGVneQor
CitQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJh
dGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK0xvY2FsaXphdGlvblN0cmF0ZWd5KiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkKK3sKKyAg
ICByZXR1cm4gdGhpczsKK30KKworVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsK
K30KKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKK3sKKyAg
ICBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5yZWZyZXNoKCk7Cit9CisKK3Zv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiYgb3V0UGx1Z2lucykKK3sKKyAgICBRV2ViUGx1Z2luRmFjdG9yeSogZmFjdG9y
eSA9IG1fcGFnZS0+cGx1Z2luRmFjdG9yeSgpOworICAgIGlmIChmYWN0b3J5KSB7CisKKyAgICAg
ICAgUUxpc3Q8UVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbj4gcXBsdWdpbnMgPSBmYWN0b3J5LT5w
bHVnaW5zKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcXBsdWdpbnMuY291bnQoKTsg
KytpKSB7CisgICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2luRmFjdG9yeTo6UGx1Z2luJiBxcGx1
Z2luID0gcXBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAg
ICAgICAgICAgIGluZm8ubmFtZSA9IHFwbHVnaW4ubmFtZTsKKyAgICAgICAgICAgIGluZm8uZGVz
YyA9IHFwbHVnaW4uZGVzY3JpcHRpb247CisKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBq
IDwgcXBsdWdpbi5taW1lVHlwZXMuY291bnQoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgUVdlYlBsdWdpbkZhY3Rvcnk6Ok1pbWVUeXBlJiBtaW1lVHlwZSA9IHFwbHVnaW4ubWltZVR5
cGVzLmF0KGopOworCisgICAgICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lSW5mbzsKKyAg
ICAgICAgICAgICAgICBtaW1lSW5mby50eXBlID0gbWltZVR5cGUubmFtZTsKKyAgICAgICAgICAg
ICAgICBtaW1lSW5mby5kZXNjID0gbWltZVR5cGUuZGVzY3JpcHRpb247CisgICAgICAgICAgICAg
ICAgZm9yIChpbnQgayA9IDA7IGsgPCBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucy5jb3VudCgpOyAr
K2spCisgICAgICAgICAgICAgICAgICBtaW1lSW5mby5leHRlbnNpb25zLmFwcGVuZChtaW1lVHlw
ZS5maWxlRXh0ZW5zaW9ucy5hdChrKSk7CisKKyAgICAgICAgICAgICAgICBpbmZvLm1pbWVzLmFw
cGVuZChtaW1lSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRQbHVnaW5zLmFw
cGVuZChpbmZvKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9
IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBs
dWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRiLT5wbHVnaW5zKCk7CisKKyAgICBvdXRQbHVnaW5z
LnJlc2l6ZShwbHVnaW5zLnNpemUoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUGx1Z2luSW5mbyBpbmZvOworICAg
ICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKKworICAgICAgICBpbmZv
Lm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7CisgICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZp
bGVOYW1lKCk7CisgICAgICAgIGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CisK
KyAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMg
PSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKKyAgICAgICAgTUlNRVRvRGVzY3JpcHRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7Cisg
ICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1p
bWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IE1pbWVDbGFzc0luZm8gbWltZTsKKworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0
OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUu
ZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsK
KworICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CisgICAgICAgIH0KKworICAg
ICAgICBvdXRQbHVnaW5zLmFwcGVuZChpbmZvKTsKKyAgICB9CisKK30KKworCisvLyBMb2NhbGl6
YXRpb25TdHJhdGVneQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbnB1dEVsZW1l
bnRBbHRUZXh0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBlbGVtZW50KSBhbHQgdGV4dCBmb3Ig
PGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9yIHZhbHVlIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sK
KyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXNl
dCIsICJkZWZhdWx0IGxhYmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdl
cyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJ
bnRyb2R1Y3Rpb24oKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlRoaXMgaXMgYSBzZWFyY2hhYmxlIGluZGV4LiBFbnRlciBzZWFyY2gga2V5
d29yZHM6ICIsICJ0ZXh0IHRoYXQgYXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgbmVhcmx5LW9ic29s
ZXRlIHdlYiBwYWdlcyBpbiB0aGUgZm9ybSBvZiBhICdzZWFyY2hhYmxlIGluZGV4JyIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwo
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVsIGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3
ZWIgcGFnZXMiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRv
bkNob29zZUZpbGVMYWJlbCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiQ2hvb3NlIEZpbGUiLCAidGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVz
ZWQgaW4gSFRNTCBmb3JtcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpm
aWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0IHRv
IGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmlsZSBp
cyBzZWxlY3RlZCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIGluIE5ldyBXaW5kb3ciLCAiT3Bl
biBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2F2
ZSBMaW5rLi4uIiwgIkRvd25sb2FkIExpbmtlZCBGaWxlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlM
aW5rVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
T3BlbkltYWdlSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk9wZW4gSW1hZ2UiLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2lu
ZG93IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQoreworICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNhdmUgSW1hZ2UiLCAi
RG93bmxvYWQgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNv
cHkgSW1hZ2UiLCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2lu
ZG93KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJPcGVuIEZyYW1lIiwgIk9wZW4gRnJhbWUgaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdDb3B5KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJDb3B5IiwgIkNvcHkgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkKK3sKKyAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJHbyBCYWNr
IiwgIkJhY2sgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJHbyBGb3J3YXJkIiwgIkZvcndh
cmQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3RvcCIsICJTdG9wIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z1JlbG9hZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiUmVsb2FkIiwgIlJlbG9hZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQoreworICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkN1dCIsICJD
dXQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhc3RlIiwgIlBhc3RlIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJObyBHdWVzc2VzIEZvdW5kIiwgIk5vIEd1ZXNzZXMgRm91bmQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcoKQoreworICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIklnbm9yZSIsICJJZ25vcmUgU3BlbGxp
bmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCit7CisgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQWRkIFRvIERpY3Rpb25hcnkiLCAi
TGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKK3sKKyAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWFyY2ggVGhlIFdl
YiIsICJTZWFyY2ggVGhlIFdlYiBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnko
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
Ikxvb2sgVXAgSW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBt
ZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkxpbmsoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIk9wZW4gTGluayIsICJPcGVuIExpbmsgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnSWdub3JlR3JhbW1hcigpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiSWdub3JlIiwgIklnbm9yZSBHcmFtbWFyIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ1NwZWxsaW5nTWVudSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiU3BlbGxpbmciLCAiU3BlbGxpbmcgYW5kIEdyYW1tYXIgY29udGV4
dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykKK3sKKyAgICByZXR1
cm4gc2hvdyA/IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2hvdyBT
cGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKSA6CisgICAgICAgICAgICAg
ICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkhpZGUgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKQoreworICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNoZWNrIFNw
ZWxsaW5nIiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdX
aGlsZVR5cGluZygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5n
IHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmco
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkNoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZyIsICJDaGVjayBncmFtbWFyIHdpdGggc3BlbGxp
bmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkZvbnRzIiwgIkZvbnQgY29udGV4dCBzdWIt
bWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0JvbGQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkJvbGQiLCAiQm9sZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkl0
YWxpYyIsICJJdGFsaWMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKK3sKKyAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJVbmRlcmxpbmUiLCAi
VW5kZXJsaW5lIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKQoreworICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk91dGxpbmUiLCAiT3V0bGluZSBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRGlyZWN0aW9uIiwgIldyaXRp
bmcgZGlyZWN0aW9uIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVGV4
dCBEaXJlY3Rpb24iLCAiVGV4dCBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0RlZmF1
bHREaXJlY3Rpb24oKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIkRlZmF1bHQiLCAiRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTGVmdCB0byBSaWdodCIsICJMZWZ0IHRvIFJpZ2h0IGNv
bnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExl
ZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQoreworICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluc3BlY3QiLCAiSW5zcGVjdCBF
bGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTm8gcmVjZW50IHNlYXJjaGVz
IiwgIkxhYmVsIGZvciBvbmx5IGl0ZW0gaW4gbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlja2lu
ZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB3aGVuIG5vIHNlYXJjaGVzIGhhdmUgYmVlbiBw
ZXJmb3JtZWQiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVu
dVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVjZW50IHNlYXJjaGVzIiwgImxhYmVsIGZvciBmaXJzdCBp
dGVtIGluIHRoZSBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2gg
ZmllbGQgaW1hZ2UsIHVzZWQgYXMgZW1iZWRkZWQgbWVudSB0aXRsZSIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQo
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkNsZWFyIHJlY2VudCBzZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1l
bnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpBWFdlYkFyZWFUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhMaW5rVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlzdE1hcmtlclRleHQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEltYWdlTWFwVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYSGVhZGluZ1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWERlZmluaXRpb25MaXN0VGVybVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpB
WERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWEJ1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFJhZGlv
QnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYVGV4dEZpZWxk
QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYQ2hlY2tlZENoZWNrQm94
QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYVW5jaGVja2VkQ2hlY2tC
b3hBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdEFjdGlv
blZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0UG9wdXBBY3Rpb25W
ZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rQWN0aW9uVmVyYigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNaXNzaW5nIFBsdWctaW4i
LCAiTGFiZWwgdGV4dCB0byBiZSB1c2VkIHdoZW4gYSBwbHVnLWluIGlzIG1pc3NpbmciKTsKK30K
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jhc2hlZFBsdWdpblRleHQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmtub3duRmlsZVNpemVUZXh0KCkKK3sKKyAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJVbmtub3duIiwg
IlVua25vd24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxICglMnglMyBwaXhlbHMpIiwgIlRpdGxlIHN0cmlu
ZyBmb3IgaW1hZ2VzIikuYXJnKGZpbGVuYW1lKS5hcmcoc2l6ZS53aWR0aCgpKS5hcmcoc2l6ZS5o
ZWlnaHQoKSk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVu
dExvYWRpbmdTdGF0ZVRleHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIkxvYWRpbmcuLi4iLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMg
bWVzc2FnZSB3aGVuIHRoZSBtZWRpYSBpcyBsb2FkaW5nIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQorewor
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxpdmUg
QnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB3YXRjaGlu
ZyBhIGxpdmUgYnJvYWRjYXN0Iik7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pCisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmco
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQor
ICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJB
dWRpbyBFbGVtZW50IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1l
ID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJWaWRlbyBFbGVtZW50IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxl
bWVudCIpOworICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTXV0ZSBCdXR0b24iLCAiTWVk
aWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1dHRvbiIp
CisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlVubXV0ZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5h
bWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJQbGF5IEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXVzZSBCdXR0b24iLCAiTWVk
aWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlciIpCisgICAg
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNsaWRl
ciIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVy
VGh1bWIiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICJTbGlkZXIgVGh1bWIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAg
aWYgKG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJld2luZCBCdXR0b24iLCAiTWVkaWEgY29udHJv
bGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24i
KQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJSZXR1cm4gdG8gUmVhbC10aW1lIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQi
KTsKKyAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRWxhcHNlZCBUaW1lIiwg
Ik1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJUaW1lUmVtYWlu
aW5nRGlzcGxheSIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlJlbWFpbmluZyBUaW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIp
OworICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3RhdHVzIERpc3BsYXkiLCAiTWVk
aWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIkZ1bGxzY3JlZW5CdXR0
b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJGdWxsc2NyZWVuIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAg
ICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIEZvcndhcmQgQnV0dG9uIiwg
Ik1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1
dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIlNlZWsgQmFjayBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkF1ZGlvIGVsZW1lbnQgcGxheWJh
Y2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOworICAgIGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJWaWRlbyBlbGVtZW50IHBsYXli
YWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKKyAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk11dGUgYXVkaW8gdHJhY2tzIiwg
Ik1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0
b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJVbm11dGUgYXVkaW8gdHJhY2tzIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwor
ICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQmVnaW4gcGxheWJhY2siLCAiTWVkaWEgY29u
dHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGF1c2Ug
cGxheWJhY2siLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0g
IlNsaWRlciIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIk1vdmllIHRpbWUgc2NydWJiZXIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50
Iik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlclRodW1iIikKKyAgICAgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTW92aWUgdGltZSBzY3J1YmJlciB0
aHVtYiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUmV3
aW5kQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiUmV3aW5kIG1vdmllIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwor
ICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmV0dXJuIHN0cmVhbWlu
ZyBtb3ZpZSB0byByZWFsLXRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAg
aWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkN1cnJlbnQgbW92aWUgdGltZSIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmlu
Z0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJSZW1haW5pbmcgbW92aWUgdGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkN1cnJlbnQgbW92aWUgc3Rh
dHVzIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJGdWxs
c2NyZWVuQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiUGxheSBtb3ZpZSBpbiBmdWxsLXNjcmVlbiBtb2RlIiwgIk1lZGlhIGNv
bnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIp
CisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlNlZWsgcXVpY2tseSBiYWNrIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlm
IChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlZWsgcXVpY2tseSBmb3J3YXJkIiwgIk1lZGlh
IGNvbnRyb2xsZXIgZWxlbWVudCIpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2Nh
bGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCB0aW1lKQoreworICAgIGlmICghaXNmaW5p
dGUodGltZSkpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIkluZGVmaW5pdGUgdGltZSIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIik7CisK
KyAgICBpbnQgc2Vjb25kcyA9IChpbnQpZmFic2YodGltZSk7CisgICAgaW50IGRheXMgPSBzZWNv
bmRzIC8gKDYwICogNjAgKiAyNCk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYw
KTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAl
PSA2MDsKKworICAgIGlmIChkYXlzKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBkYXlzICUyIGhvdXJzICUzIG1pbnV0ZXMgJTQgc2Vj
b25kcyIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIikuYXJnKGRheXMpLmFyZyhob3VycykuYXJn
KG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsKKworICAgIGlmIChob3VycykKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgaG91cnMgJTIgbWlu
dXRlcyAlMyBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKS5hcmcoaG91cnMpLmFy
ZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7CisKKyAgICBpZiAobWludXRlcykKKyAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgbWludXRlcyAl
MiBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKS5hcmcobWludXRlcykuYXJnKHNl
Y29uZHMpOworCisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiJTEgc2Vjb25kcyIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIikuYXJnKHNlY29uZHMp
OworfQorCisjZWxzZSAvLyBFTkFCTEUoVklERU8pCisvLyBYWFg6ICNpZiBFTkFCTEUoVklERU8p
IHNob3VsZCBiZSBpbiB0aGUgYmFzZSBjbGFzcworCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCB0aW1lKQorewor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKworCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2lu
Z1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVR5cGVN
aXNtYXRjaFRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2Fn
ZVBhdHRlcm5NaXNtYXRjaFRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0
aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRh
dGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworCisvLyBWaXNpdGVkTGlu
a1N0cmF0ZWd5CisKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gpCit7CisgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNM
aW5rVmlzaXRlZChoYXNoKTsKK30KKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFZp
c2l0ZWRMaW5rKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gpCit7CisgICAgcGFnZS0+Z3JvdXAo
KS5hZGRWaXNpdGVkTGlua0hhc2goaGFzaCk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNDU5NjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKKyNkZWZpbmUgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzX2gKKworI2luY2x1ZGUgPExvY2FsaXphdGlvblN0cmF0ZWd5Lmg+CisjaW5j
bHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CisjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3kuaD4K
KyNpbmNsdWRlIDxWaXNpdGVkTGlua1N0cmF0ZWd5Lmg+CisKKyNpbmNsdWRlIDxxd2VicGFnZS5o
PgorCitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZv
cm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5r
U3RyYXRlZ3kgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoUVdlYlBhZ2Uq
IHdlYlBhZ2UpOworCitwcml2YXRlOgorICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyhRV2ViUGFn
ZSogd2ViUGFnZSk7CisKKyAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXph
dGlvblN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CisKKyAgICAvLyBXZWJDb3JlOjpQbHVnaW5T
dHJhdGVneQorICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRQbHVnaW5JbmZvKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCisgICAg
Ly8gV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IGlucHV0RWxlbWVudEFsdFRleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJlc2V0QnV0
dG9uRGVmYXVsdExhYmVsKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hhYmxlSW5k
ZXhJbnRyb2R1Y3Rpb24oKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHN1Ym1pdEJ1dHRvbkRl
ZmF1bHRMYWJlbCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZmlsZUJ1dHRvbkNob29zZUZp
bGVMYWJlbCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVj
dGVkTGFiZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09w
ZW5MaW5rSW5OZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpOworICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKTsKKyAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xp
cGJvYXJkKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
RnJhbWVJbk5ld1dpbmRvdygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ29weSgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
R29CYWNrKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0Zv
cndhcmQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3Ao
KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCk7CisgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpOworICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKTsKKyAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCk7CisgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCk7Cisg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eSgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbmso
KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1t
YXIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5n
TWVudSgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1Nw
ZWxsaW5nUGFuZWwoYm9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpOworICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7Cisg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpOworICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7CisgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKKyAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKTsKKyAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7CisgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlv
bigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmln
aHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9M
ZWZ0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0
RWxlbWVudCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50U2Vh
cmNoZXNUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hNZW51UmVjZW50U2Vh
cmNoZXNUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNl
bnRTZWFyY2hlc1RleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYV2ViQXJlYVRleHQo
KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYTGlua1RleHQoKTsKKyAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFY
SW1hZ2VNYXBUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWEhlYWRpbmdUZXh0KCk7
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCk7CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhNZW51
TGlzdFBvcHVwQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhMaW5rQWN0
aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCk7CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmls
ZXMpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1l
ZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1l
ZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRI
ZWxwVGV4dChjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbG9j
YWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQpOworICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
KTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxv
d1RleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1p
c21hdGNoVGV4dCgpOworCisgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQorICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCk7CisKKyAgICBRV2ViUGFnZSAqbV9wYWdlOworfTsKKworI2VuZGlm
IC8vIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCmRpZmYgLS1naXQgYS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRlYzg2MjMuLmFiZTlhNGIgMTAwNjQ0Ci0tLSBh
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTAtMDktMTYgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFbmFibGUgUGxhdGZvcm0gU3RyYXRlZ2llcyBvbiBRdAorCisgICAgICAgIFtRdF0gVHVy
biBvbiBQTEFURk9STV9TVFJBVEVHSUVTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTgzMQorCisgICAgICAgICogV2ViS2l0Mi5wcm86IEFkZGVkIEFk
ZGVkIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy57Y3BwLGh9CisKIDIwMTAtMDktMTYgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdHJpdmlh
bCB0eXBvIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9XZWJLaXQyL1dl
YktpdDIucHJvCmluZGV4IDI5ODc1NjEuLjY2ZGVlYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2Vi
S2l0Mi5wcm8KKysrIGIvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjU2LDYgKzI1Niw3IEBAIEhF
QURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggXAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggXAorICAg
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggXAogICAg
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIFwKQEAgLTM3MCw2ICszNzEsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJhY2tGb3J3
YXJkQ29udHJvbGxlckNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUG9wdXBNZW51LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2Vi
RXJyb3JzUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVw
ZGF0ZURyYXdpbmdBcmVhLmNwcCBcCi0tIAoxLjcuMi4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67836</attachid>
            <date>2010-09-16 13:40:06 -0700</date>
            <delta_ts>2010-09-18 03:19:12 -0700</delta_ts>
            <desc>patch, now with a style fix</desc>
            <filename>0001-Enable-Platform-Strategies-on-Qt.patch</filename>
            <type>text/plain</type>
            <size>69576</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSA3ZDk4MTMzZWM3YWRmNDdkMjUzNDNhZjg3Y2MzYWVmNmNhY2U1MzBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogVGh1LCAxNiBTZXAgMjAxMCAxNDoxNTo0NyAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0CgpbUXRdIFR1cm4g
b24gUExBVEZPUk1fU1RSQVRFR0lFUwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU4MzEKLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTEgKwogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggICAgICAg
ICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0xh
bmd1YWdlLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgNDIgKysKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvTG9jYWxpemF0aW9ucy5jcHAgICAgICAgICAgICAgIHwgIDUzNiAtLS0tLS0tLS0tLS0tLS0K
IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwICAgICAgICAgICAgICAgIHwgICA5
OCAtLS0KIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMyArCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMDUgKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCB8ICA2NzkgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAgIHwgIDE0MCArKysrCiBXZWJLaXQyL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogV2ViS2l0
Mi9XZWJLaXQyLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIDEz
IGZpbGVzIGNoYW5nZWQsIDEwMTkgaW5zZXJ0aW9ucygrKSwgNjM3IGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwCiBkZWxldGUg
bW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmNjZGM5Ni4uYTk2ODQwMSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA5LTE2ICBBZGVtYXIgZGUgU291emEgUmVpcyBK
ciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24gUXQK
KworICAgICAgICBbUXRdIFR1cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOiBFbmFibGUgUGxhdGZvcm0gU3RyYXRlZ2llcyB3aGVuIGJ1aWxkaW5nIFF0
V2Via2l0CisKIDIwMTAtMDktMTYgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCBk
MWM5NzA2Li4wMGFiMjYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTExMSw3ICsxMTExLDcg
QEAKICNkZWZpbmUgRU5BQkxFX0pTQ19aT01CSUVTIDAKIAogLyogRklYTUU6IEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGVuYWJsZSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zIGFuZCBnZXQgcmlkIG9mIHRo
ZSBkZWZpbmUuICovCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQogI2RlZmluZSBXVEZf
VVNFX1BMQVRGT1JNX1NUUkFURUdJRVMgMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIwZmJhMC4uMWQ0YjRhNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMC0wOS0xNiAgQWRlbWFyIGRlIFNvdXphIFJlaXMgSnIgIDxhZGVtYXIu
cmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0CisKKyAgICAgICAg
W1F0XSBUdXJuIG9uIFBMQVRGT1JNX1NUUkFURUdJRVMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODMxCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzog
QWRkaW5nL3JlbW92aW5nIGltcGxlbWVudGF0aW9uIGZpbGVzCisgICAgICAgICogcGxhdGZvcm0v
cXQvTGFuZ3VhZ2UuY3BwOiBBZGRlZCwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdlKCkgd2FzCisg
ICAgICAgIG1vdmVkIGZyb20gcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSk6IE1vdmVkIGZyb20gTG9jYWxpemF0aW9ucy5jcHAK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcDogUmVtb3ZlZCAoY29kZSBp
cyBub3cgaW5zaWRlCisgICAgICAgIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHApCisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwOiBSZW1vdmVkIChp
ZGVtKQorCiAyMDEwLTA5LTE2ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA1NGVlNTM2Li44NjFhMDc0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTExNzksNiArMTE3OSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvdHJh
bnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHAgXAogICAgIHBsYXRmb3JtL1VVSUQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9XaWRnZXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBcCiAgICAgcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luRGVidWcuY3BwIFwKICAgICBw
bHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIFwKQEAgLTIwMzMsNiArMjAzNSw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwKICAgICBwbGF0Zm9ybS9MaW5r
SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmggXAorICAgIHBsYXRmb3JtL0xhbmd1YWdl
LmggXAogICAgIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNsaWVudC5oIFwKQEAgLTIwOTUsNiArMjA5OCw4IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5oIFwKICAgICBwbGF0Zm9ybS9UaW1lci5o
IFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmggXAorICAgIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAgICAgcGx1Z2lucy9E
T01NaW1lVHlwZUFycmF5LmggXAogICAgIHBsdWdpbnMvRE9NTWltZVR5cGUuaCBcCiAgICAgcGx1
Z2lucy9ET01QbHVnaW5BcnJheS5oIFwKQEAgLTI1MDYsNiArMjUxMSw3IEBAIEhFQURFUlMgKz0g
XAogICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmggXAogICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5o
IFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
UXQuaCBcCisgICAgJCRQV0QvLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIFwKICAgICAkJFBXRC9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1ByZWZldGNo
SGVscGVyLmgKIAogdjggewpAQCAtMjU3MCw3ICsyNTc2LDYgQEAgU09VUkNFUyArPSBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvU2ltcGxlRm9udERhdGFRdC5jcHAgXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L1RpbGVRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L0tVUkxRdC5jcHAgXAot
ICAgIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9NSU1F
VHlwZVJlZ2lzdHJ5UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAgXApAQCAtMjU4NSwx
MyArMjU5MCwxMyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9xdC9TaGFyZWRUaW1lclF0
LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvU291bmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L0xv
Z2dpbmdRdC5jcHAgXAorICAgIHBsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcCBcCiAgICAgcGxhdGZv
cm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1Rl
eHRCb3VuZGFyaWVzUXQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJh
dG9yUXQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmNwcCBcCiAgICAg
cGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvV2lkZ2V0UXQu
Y3BwIFwKLSAgICBwbHVnaW5zL3F0L1BsdWdpbkRhdGFRdC5jcHAgXAogICAgIC4uL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAgXApAQCAtMjYwOCw2ICsyNjEz
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BvcHVw
TWVudVF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51UXQuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIFwKICAg
ICAuLi9XZWJLaXQvcXQvQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xh
bmd1YWdlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNjc3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSA8UUxvY2FsZT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKK3sKKyAgICBRTG9jYWxlIGxv
Y2FsZTsKKyAgICByZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKCJfIiwgIi0iKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ1NDg3MmEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2Nh
bGl6YXRpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4gPGluZm9Ac3Rh
aWtvcy5uZXQ+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0KLSNpbmNsdWRlICJJbnRT
aXplLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UUxvY2FsZT4K
LSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
U3RyaW5nIHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3VibWl0IiwgImRlZmF1bHQgbGFiZWwg
Zm9yIFN1Ym1pdCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOwotfQotCi1TdHJpbmcg
aW5wdXRFbGVtZW50QWx0VGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3VibWl0IiwgIlN1Ym1pdCAoaW5wdXQgZWxlbWVudCkgYWx0
IHRleHQgZm9yIDxpbnB1dD4gZWxlbWVudHMgd2l0aCBubyBhbHQsIHRpdGxlLCBvciB2YWx1ZSIp
OwotfQotCi1TdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJlc2V0IiwgImRlZmF1bHQg
bGFiZWwgZm9yIFJlc2V0IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBhZ2VzIik7Ci19Ci0KLVN0
cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQotewotICAgIFFMb2NhbGUgbG9jYWxlOwotICAgIHJldHVy
biBsb2NhbGUubmFtZSgpLnJlcGxhY2UoIl8iLCAiLSIpOwotfQotCi1TdHJpbmcgc2VhcmNoYWJs
ZUluZGV4SW50cm9kdWN0aW9uKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJUaGlzIGlzIGEgc2VhcmNoYWJsZSBpbmRleC4gRW50ZXIgc2Vh
cmNoIGtleXdvcmRzOiAiLCAidGV4dCB0aGF0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIG5lYXJs
eS1vYnNvbGV0ZSB3ZWIgcGFnZXMgaW4gdGhlIGZvcm0gb2YgYSAnc2VhcmNoYWJsZSBpbmRleCci
KTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKQotewotICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNob29zZSBGaWxlIiwg
InRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMiKTsKLX0KLQotU3RyaW5n
IGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJObyBmaWxlIHNlbGVjdGVkIiwgInRleHQg
dG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBmaWxl
IGlzIHNlbGVjdGVkIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0lu
TmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJPcGVuIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBpbiBOZXcgV2luZG93IGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExp
bmtUb0Rpc2soKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlNhdmUgTGluay4uLiIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBi
b2FyZCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiQ29weSBMaW5rIiwgIkNvcHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQotewotICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk9wZW4gSW1hZ2Ui
LCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkKLXsKLSAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTYXZlIEltYWdlIiwg
IkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ29weSBJbWFnZSIsICJDb3B5IExpbmsg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5G
cmFtZUluTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJPcGVuIEZyYW1lIiwgIk9wZW4gRnJhbWUgaW4gTmV3IFdpbmRvdyBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgp
Ci17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
Q29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdHb0JhY2soKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkdvIEJhY2siLCAiQmFjayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkKLXsKLSAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJHbyBGb3J3YXJkIiwgIkZvcndh
cmQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0
b3AoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJSZWxvYWQiLCAiUmVsb2FkIGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQotewotICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkN1dCIsICJDdXQgY29udGV4dCBt
ZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKLXsKLSAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXN0ZSIs
ICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnTm9HdWVzc2VzRm91bmQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3NlcyBGb3VuZCBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3Jl
U3BlbGxpbmcoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIklnbm9yZSIsICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQotewotICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkFkZCBUbyBEaWN0
aW9uYXJ5IiwgIkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlYXJjaCBUaGUgV2ViIiwgIlNlYXJjaCBU
aGUgV2ViIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdMb29rVXBJbkRpY3Rpb25hcnkoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxvb2sgVXAgSW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGlu
IERpY3Rpb25hcnkgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ09wZW5MaW5rKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKLXsKLSAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJZ25vcmUi
LCAiSWdub3JlIEdyYW1tYXIgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3BlbGxpbmciLCAiU3BlbGxpbmcgYW5kIEdyYW1t
YXIgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCi17Ci0gICAgcmV0dXJuIHNob3cgPyBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNob3cgU3BlbGxpbmcgYW5kIEdy
YW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIikgOgotICAgICAgICAgICAgICAgICAgUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJIaWRlIFNwZWxsaW5nIGFuZCBHcmFtbWFy
IiwgIm1lbnUgaXRlbSB0aXRsZSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiQ2hlY2sgU3BlbGxpbmciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51
IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGls
ZVR5cGluZygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdo
aWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxp
bmciLCAiQ2hlY2sgZ3JhbW1hciB3aXRoIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCi17Ci0gICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRm9udHMiLCAiRm9udCBjb250
ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQo
KQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkJvbGQiLCAiQm9sZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnSXRhbGljKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQotewotICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVuZGVybGluZSIsICJVbmRl
cmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z091dGxpbmUoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIk91dGxpbmUiLCAiT3V0bGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQotewotICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRpcmVjdGlvbiIs
ICJXcml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKLXsKLSAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJUZXh0IERpcmVjdGlvbiIsICJU
ZXh0IGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKQotewotICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRlZmF1bHQiLCAiRGVmYXVsdCB3cml0aW5n
IGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0
IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQo
KQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQotewotICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluc3BlY3QiLCAiSW5z
cGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBzZWFyY2hNZW51
Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJlbCBmb3Igb25s
eSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBm
aWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVkIik7Ci19Ci0K
LVN0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZWNlbnQgc2VhcmNoZXMiLCAi
bGFiZWwgZm9yIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tp
bmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJlZGRlZCBtZW51IHRpdGxl
Iik7Ci19Ci0KLVN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQotewot
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNsZWFy
IHJlY2VudCBzZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhh
dCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOwotfQotCi1TdHJpbmcgQVhXZWJBcmVhVGV4dCgp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhMaW5rVGV4dCgpCi17Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhMaXN0TWFya2VyVGV4dCgpCi17Ci0g
ICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhJbWFnZU1hcFRleHQoKQotewotICAg
IHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYSGVhZGluZ1RleHQoKQotewotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhEZWZpbml0aW9uTGlzdERlZmlu
aXRpb25UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWEJ1dHRv
bkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYUmFk
aW9CdXR0b25BY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmlu
ZyBBWFRleHRGaWVsZEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQot
U3RyaW5nIEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1TdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQotewotICAg
IHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTGlua0FjdGlvblZlcmIoKQotewotICAg
IHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25W
ZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBtaXNzaW5nUGx1Z2lu
VGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiTWlzc2luZyBQbHVnLWluIiwgIkxhYmVsIHRleHQgdG8gYmUgdXNlZCB3aGVuIGEgcGx1
Zy1pbiBpcyBtaXNzaW5nIik7Ci19Ci0KLVN0cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBt
dWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQotewotICAgIHJldHVybiBTdHJpbmcoKTsK
LX0KLQotU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQotewotICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVua25vd24iLCAiVW5rbm93biBmaWxl
c2l6ZSBGVFAgZGlyZWN0b3J5IGxpc3RpbmcgaXRlbSIpOwotfQotCi1TdHJpbmcgaW1hZ2VUaXRs
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxICglMnglMyBw
aXhlbHMpIiwgIlRpdGxlIHN0cmluZyBmb3IgaW1hZ2VzIikuYXJnKGZpbGVuYW1lKS5hcmcoc2l6
ZS53aWR0aCgpKS5hcmcoc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLVN0cmluZyBtZWRpYUVsZW1lbnRM
b2FkaW5nU3RhdGVUZXh0KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1l
c3NhZ2Ugd2hlbiB0aGUgbWVkaWEgaXMgbG9hZGluZyIpOwotfQotCi1TdHJpbmcgbWVkaWFFbGVt
ZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTGl2ZSBCcm9hZGNhc3QiLCAiTWVkaWEgY29udHJv
bGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHdhdGNoaW5nIGEgbGl2ZSBicm9hZGNhc3QiKTsKLX0K
LQotI2lmIEVOQUJMRShWSURFTykKLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0Vs
ZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICJBdWRpbyBFbGVtZW50IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAg
IGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJWaWRlbyBFbGVtZW50IiwgIk1lZGlhIGNvbnRy
b2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikKLSAgICAgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTXV0ZSBCdXR0
b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlVuTXV0
ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlVubXV0ZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0g
ICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQbGF5IEJ1dHRvbiIsICJNZWRpYSBjb250cm9s
bGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQotICAgICAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXVzZSBCdXR0
b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRl
ciIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlNsaWRlciIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9
PSAiU2xpZGVyVGh1bWIiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJTbGlkZXIgVGh1bWIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50
Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJld2luZCBCdXR0b24iLCAiTWVk
aWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRp
bWVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJSZXR1cm4gdG8gUmVhbC10aW1lIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVy
IGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKLSAgICAg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRWxhcHNl
ZCBUaW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJU
aW1lUmVtYWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJlbWFpbmluZyBUaW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIg
ZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3RhdHVzIERpc3Bs
YXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIkZ1bGxz
Y3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJGdWxsc2NyZWVuIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIEZvcndhcmQg
QnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJT
ZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIlNlZWsgQmFjayBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRNZWRp
YUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChu
YW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJBdWRpbyBlbGVtZW50IHBsYXliYWNrIGNvbnRyb2xzIGFu
ZCBzdGF0dXMgZGlzcGxheSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAo
bmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBh
bmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYg
KG5hbWUgPT0gIk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNdXRlIGF1ZGlvIHRyYWNrcyIsICJNZWRpYSBjb250cm9s
bGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKLSAgICAgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVW5tdXRlIGF1
ZGlvIHRyYWNrcyIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9
PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkJlZ2luIHBsYXliYWNrIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhdXNlIHBsYXliYWNrIiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQotICAg
ICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNb3Zp
ZSB0aW1lIHNjcnViYmVyIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChu
YW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk1vdmllIHRpbWUgc2NydWJiZXIgdGh1bWIiLCAiTWVkaWEg
Y29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCi0g
ICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJl
d2luZCBtb3ZpZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9
PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJldHVybiBzdHJlYW1pbmcgbW92aWUgdG8gcmVh
bC10aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJD
dXJyZW50VGltZURpc3BsYXkiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHRpbWUiLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKLSAg
ICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVt
YWluaW5nIG1vdmllIHRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYg
KG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHN0YXR1cyIsICJNZWRpYSBj
b250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1dHRvbiIp
Ci0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlBsYXkgbW92aWUgaW4gZnVsbC1zY3JlZW4gbW9kZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIHF1aWNrbHkg
YmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vl
a0JhY2tCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJTZWVrIHF1aWNrbHkgZm9yd2FyZCIsICJNZWRpYSBjb250cm9sbGVyIGVs
ZW1lbnQiKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUp
Ci17Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSW5kZWZpbml0ZSB0aW1lIiwgIk1lZGlhIHRp
bWUgZGVzY3JpcHRpb24iKTsKLQotICAgIGludCBzZWNvbmRzID0gKGludClmYWJzZih0aW1lKTsK
LSAgICBpbnQgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2MCAqIDI0KTsKLSAgICBpbnQgaG91cnMg
PSBzZWNvbmRzIC8gKDYwICogNjApOwotICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkg
JSA2MDsKLSAgICBzZWNvbmRzICU9IDYwOwotCi0gICAgaWYgKGRheXMpCi0gICAgICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxIGRheXMgJTIgaG91
cnMgJTMgbWludXRlcyAlNCBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKS5hcmco
ZGF5cykuYXJnKGhvdXJzKS5hcmcobWludXRlcykuYXJnKHNlY29uZHMpOwotCi0gICAgaWYgKGhv
dXJzKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICIlMSBob3VycyAlMiBtaW51dGVzICUzIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlw
dGlvbiIpLmFyZyhob3VycykuYXJnKG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsKLQotICAgIGlmICht
aW51dGVzKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICIlMSBtaW51dGVzICUyIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIp
LmFyZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7Ci0KLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3Jp
cHRpb24iKS5hcmcoc2Vjb25kcyk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQotCi1TdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVHlwZU1pc21hdGNoVGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRj
aFRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwot
fQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3Zl
cmZsb3dUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLX0KLS8vIHZp
bTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0
YVF0LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZGM4NmQwLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdp
bkRhdGEuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiUGx1Z2lu
UGFja2FnZS5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50
UXQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSA8cXdlYnBhZ2UuaD4KLSNpbmNsdWRl
IDxxd2VicGx1Z2luZmFjdG9yeS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUGx1
Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQotewotICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gc3RhdGlj
X2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPm1fd2Vi
UGFnZTsKLSAgICBRV2ViUGx1Z2luRmFjdG9yeSogZmFjdG9yeSA9IHdlYlBhZ2UtPnBsdWdpbkZh
Y3RvcnkoKTsKLSAgICBpZiAoZmFjdG9yeSkgewotCi0gICAgICAgIFFMaXN0PFFXZWJQbHVnaW5G
YWN0b3J5OjpQbHVnaW4+IHFwbHVnaW5zID0gZmFjdG9yeS0+cGx1Z2lucygpOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHFwbHVnaW5zLmNvdW50KCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbiYgcXBsdWdpbiA9IHFwbHVnaW5zLmF0KGkp
OwotCi0gICAgICAgICAgICBQbHVnaW5JbmZvIGluZm87Ci0gICAgICAgICAgICBpbmZvLm5hbWUg
PSBxcGx1Z2luLm5hbWU7Ci0gICAgICAgICAgICBpbmZvLmRlc2MgPSBxcGx1Z2luLmRlc2NyaXB0
aW9uOwotCi0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHFwbHVnaW4ubWltZVR5cGVz
LmNvdW50KCk7ICsraikgewotICAgICAgICAgICAgICAgIGNvbnN0IFFXZWJQbHVnaW5GYWN0b3J5
OjpNaW1lVHlwZSYgbWltZVR5cGUgPSBxcGx1Z2luLm1pbWVUeXBlcy5hdChqKTsKLQotICAgICAg
ICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZUluZm87Ci0gICAgICAgICAgICAgICAgbWltZUlu
Zm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7Ci0gICAgICAgICAgICAgICAgbWltZUluZm8uZGVzYyA9
IG1pbWVUeXBlLmRlc2NyaXB0aW9uOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBr
IDwgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMuY291bnQoKTsgKytrKQotICAgICAgICAgICAgICAg
ICAgbWltZUluZm8uZXh0ZW5zaW9ucy5hcHBlbmQobWltZVR5cGUuZmlsZUV4dGVuc2lvbnMuYXQo
aykpOwotCi0gICAgICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZUluZm8pOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGluZm8pOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgUGx1Z2luRGF0YWJhc2UgKmRiID0gUGx1Z2luRGF0YWJhc2U6Omlu
c3RhbGxlZFBsdWdpbnMoKTsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVn
aW5zID0gZGItPnBsdWdpbnMoKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvIGluZm87Ci0gICAgICAg
IFBsdWdpblBhY2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwotCi0gICAgICAgIGluZm8ubmFt
ZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAgICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+ZmlsZU5h
bWUoKTsKLSAgICAgICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKLQotICAg
ICAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IHBh
Y2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwotICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKLSAgICAg
ICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRv
RGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgTWlt
ZUNsYXNzSW5mbyBtaW1lOwotCi0gICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+Zmlyc3Q7Ci0g
ICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgbWltZS5leHRl
bnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwotCi0g
ICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKLSAgICAgICAgfQotCi0gICAgICAg
IG1fcGx1Z2lucy5hcHBlbmQoaW5mbyk7Ci0gICAgfQotfQotCi12b2lkIFBsdWdpbkRhdGE6OnJl
ZnJlc2goKQotewotICAgIFBsdWdpbkRhdGFiYXNlICpkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0
YWxsZWRQbHVnaW5zKCk7Ci0gICAgZGItPnJlZnJlc2goKTsKLX0KLQotfTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAK
aW5kZXggMWY3NWZhMi4uMTgxYjNhNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTc4LDYgKzc4LDcgQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ2FjaGUuaCIKICNp
bmNsdWRlICJydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCIKQEAgLTI3MSw2ICsyNzIsOCBA
QCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSAqcXEpCiAgICAgV2Vi
Q29yZTo6Rm9udDo6c2V0Q29kZVBhdGgoV2ViQ29yZTo6Rm9udDo6Q29tcGxleCk7CiAjZW5kaWYK
IAorICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZShxcSk7CisKICAgICBQYWdl
OjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQg
PSBuZXcgQ2hyb21lQ2xpZW50UXQocSk7CiAgICAgcGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGll
bnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYmQ0YjJjMi4uMzk1NmUyZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTA4IEBACisyMDEwLTA5LTE2ICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFk
ZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24gUXQKKworICAg
ICAgICBbUXRdIFR1cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6IElu
aXRpYWxpemUgdGhlIFBsYXRmb3JtU3RyYXRlZ3kKKyAgICAgICAgc2luZ2xldG9uLgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6IEFkZGVkLCBjb2Rl
IHdhcyBtb3ZlZAorICAgICAgICBmcm9tIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwIGFu
ZCBwbHVnaW5zL3F0L1BsdWdpbkRhdGFRdC5jcHAKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6aW5pdGlhbGl6ZSk6IGNyZWF0ZSB0aGUgc2luZ2xldG9uLAorICAgICAgICBmb2xsb3dp
bmcgdGhlIHNhbWUgInBhdHRlcm4iIHVzZWQgYnkgTWFjIGFuZCBXaW4gcG9ydHMuCisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcyk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3kpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVtZW50QWx0VGV4dCk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExh
YmVsKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
T3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJ
bk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2lu
ZG93KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
Q29weSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0dvQmFjayk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1N0b3ApOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdSZWxvYWQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdQYXN0ZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2Vi
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTG9v
a1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnT3BlbkxpbmspOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGlj
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVW5k
ZXJsaW5lKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnT3V0bGluZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVmdFRv
UmlnaHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdSaWdodFRvTGVmdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJlYVRleHQpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhIZWFkaW5nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5p
dGlvbkxpc3RUZXJtVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVm
aW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYQnV0dG9uQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmFzaGVkUGx1Z2luVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6Om11bHRpcGxlRmlsZVVwbG9hZFRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp1bmtub3duRmlsZVNpemVUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlh
RWxlbWVudExvYWRpbmdTdGF0ZVRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRI
ZWxwVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlh
VGltZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25n
VGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdl
UmFuZ2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFs
aWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphZGRWaXNpdGVkTGluayk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6IEFkZGVkLCBiYXNlZCBvbiBNYWMgYW5kIFdpbgorICAg
ICAgICB2ZXJzaW9ucy4KKwogMjAxMC0wOS0xNiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE4ZmNmZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0wLDAg
KzEsNjc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNl
cnZpY2VzIEluYy4gPGluZm9Ac3RhaWtvcy5uZXQ+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2luY2x1ZGUgPEludFNpemUuaD4K
KyNpbmNsdWRlIDxQYWdlLmg+CisjaW5jbHVkZSA8UGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8UGx1
Z2luRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCisjaW5jbHVkZSA8
UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHF3ZWJwYWdl
Lmg+CisjaW5jbHVkZSA8cXdlYnBsdWdpbmZhY3RvcnkuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKFFXZWJQYWdl
KiB3ZWJQYWdlKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICh3ZWJQYWdlKSk7CisgICAgUV9VTlVTRUQocGxhdGZv
cm1TdHJhdGVnaWVzKTsKK30KKworV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMoUVdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3BhZ2Uod2ViUGFnZSkKK3sKKyAg
ICBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXModGhpcyk7Cit9CisKKworLy8gUGx1Z2luU3RyYXRlZ3kK
KworUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGx1Z2luU3Ry
YXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitMb2NhbGl6YXRpb25TdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpCit7Cisg
ICAgcmV0dXJuIHRoaXM7Cit9CisKK1Zpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7
Cit9CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCit7Cisg
ICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOworfQorCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIG91dFBsdWdpbnMpCit7CisgICAgUVdlYlBsdWdpbkZhY3RvcnkqIGZhY3Rv
cnkgPSBtX3BhZ2UtPnBsdWdpbkZhY3RvcnkoKTsKKyAgICBpZiAoZmFjdG9yeSkgeworCisgICAg
ICAgIFFMaXN0PFFXZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4+IHFwbHVnaW5zID0gZmFjdG9yeS0+
cGx1Z2lucygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFwbHVnaW5zLmNvdW50KCk7
ICsraSkgeworICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbiYgcXBs
dWdpbiA9IHFwbHVnaW5zLmF0KGkpOworCisgICAgICAgICAgICBQbHVnaW5JbmZvIGluZm87Cisg
ICAgICAgICAgICBpbmZvLm5hbWUgPSBxcGx1Z2luLm5hbWU7CisgICAgICAgICAgICBpbmZvLmRl
c2MgPSBxcGx1Z2luLmRlc2NyaXB0aW9uOworCisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IHFwbHVnaW4ubWltZVR5cGVzLmNvdW50KCk7ICsraikgeworICAgICAgICAgICAgICAgIGNv
bnN0IFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZSYgbWltZVR5cGUgPSBxcGx1Z2luLm1pbWVU
eXBlcy5hdChqKTsKKworICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZUluZm87Cisg
ICAgICAgICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7CisgICAgICAgICAg
ICAgICAgbWltZUluZm8uZGVzYyA9IG1pbWVUeXBlLmRlc2NyaXB0aW9uOworICAgICAgICAgICAg
ICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMuY291bnQoKTsg
KytrKQorICAgICAgICAgICAgICAgICAgbWltZUluZm8uZXh0ZW5zaW9ucy5hcHBlbmQobWltZVR5
cGUuZmlsZUV4dGVuc2lvbnMuYXQoaykpOworCisgICAgICAgICAgICAgICAgaW5mby5taW1lcy5h
cHBlbmQobWltZUluZm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0UGx1Z2lucy5h
cHBlbmQoaW5mbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQbHVnaW5EYXRhYmFzZSogZGIg
PSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQ
bHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1Z2lucygpOworCisgICAgb3V0UGx1Z2lu
cy5yZXNpemUocGx1Z2lucy5zaXplKCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAg
ICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBsdWdpbnNbaV07CisKKyAgICAgICAgaW5m
by5uYW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5m
aWxlTmFtZSgpOworICAgICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwor
CisgICAgICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25z
ID0gcGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7CisgICAgICAgIE1JTUVUb0Rlc2NyaXB0
aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwor
ICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
aW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBNaW1lQ2xhc3NJbmZvIG1pbWU7CisKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJz
dDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBtaW1l
LmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7
CisKKyAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWUpOworICAgICAgICB9CisKKyAg
ICAgICAgb3V0UGx1Z2lucy5hcHBlbmQoaW5mbyk7CisgICAgfQorCit9CisKKworLy8gTG9jYWxp
emF0aW9uU3RyYXRlZ3kKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVt
ZW50QWx0VGV4dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiU3VibWl0IiwgIlN1Ym1pdCAoaW5wdXQgZWxlbWVudCkgYWx0IHRleHQgZm9y
IDxpbnB1dD4gZWxlbWVudHMgd2l0aCBubyBhbHQsIHRpdGxlLCBvciB2YWx1ZSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVz
ZXQiLCAiZGVmYXVsdCBsYWJlbCBmb3IgUmVzZXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFn
ZXMiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoYWJsZUluZGV4
SW50cm9kdWN0aW9uKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJUaGlzIGlzIGEgc2VhcmNoYWJsZSBpbmRleC4gRW50ZXIgc2VhcmNoIGtl
eXdvcmRzOiAiLCAidGV4dCB0aGF0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIG5lYXJseS1vYnNv
bGV0ZSB3ZWIgcGFnZXMgaW4gdGhlIGZvcm0gb2YgYSAnc2VhcmNoYWJsZSBpbmRleCciKTsKK30K
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3VibWl0QnV0dG9uRGVmYXVsdExhYmVs
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJTdWJtaXQiLCAiZGVmYXVsdCBsYWJlbCBmb3IgU3VibWl0IGJ1dHRvbnMgaW4gZm9ybXMgb24g
d2ViIHBhZ2VzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0
b25DaG9vc2VGaWxlTGFiZWwoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIkNob29zZSBGaWxlIiwgInRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1
c2VkIGluIEhUTUwgZm9ybXMiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIGZpbGUgc2VsZWN0ZWQiLCAidGV4dCB0
byBkaXNwbGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyB3aGVuIG5vIGZpbGUg
aXMgc2VsZWN0ZWQiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBpbiBOZXcgV2luZG93IiwgIk9w
ZW4gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNh
dmUgTGluay4uLiIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5
TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJDb3B5IExpbmsiLCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z09wZW5JbWFnZUluTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIEltYWdlIiwgIk9wZW4gSW1hZ2UgaW4gTmV3IFdp
bmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkKK3sKKyAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTYXZlIEltYWdlIiwg
IkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkK
K3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJD
b3B5IEltYWdlIiwgIkNvcHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dp
bmRvdygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiT3BlbiBGcmFtZSIsICJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQ29weSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCit7Cisg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiR28gQmFj
ayIsICJCYWNrIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiR28gRm9yd2FyZCIsICJGb3J3
YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdSZWxvYWQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlJlbG9hZCIsICJSZWxvYWQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK3sKKyAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXQiLCAi
Q3V0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTm8gR3Vlc3NlcyBGb3VuZCIsICJObyBHdWVzc2VzIEZvdW5k
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJZ25vcmUiLCAiSWdub3JlIFNwZWxs
aW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQoreworICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkFkZCBUbyBEaWN0aW9uYXJ5Iiwg
IkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCit7CisgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VhcmNoIFRoZSBX
ZWIiLCAiU2VhcmNoIFRoZSBXZWIgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJMb29rIFVwIEluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQg
bWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ09wZW5MaW5rKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZUdyYW1tYXIoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIklnbm9yZSIsICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTcGVsbGluZ01lbnUoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIlNwZWxsaW5nIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRl
eHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCit7CisgICAgcmV0
dXJuIHNob3cgPyBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNob3cg
U3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIikgOgorICAgICAgICAgICAg
ICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJIaWRlIFNwZWxs
aW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkKK3sKKyAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDaGVjayBT
cGVsbGluZyIsICJDaGVjayBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmcoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIsICJDaGVjayBzcGVsbGlu
ZyB3aGlsZSB0eXBpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5n
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxpbmciLCAiQ2hlY2sgZ3JhbW1hciB3aXRoIHNwZWxs
aW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJGb250cyIsICJGb250IGNvbnRleHQgc3Vi
LW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdCb2xkKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJCb2xkIiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkK
K3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJ
dGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCit7CisgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVW5kZXJsaW5lIiwg
IlVuZGVybGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPdXRsaW5lIiwgIk91dGxpbmUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRpcmVjdGlvbiIsICJXcml0
aW5nIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlRl
eHQgRGlyZWN0aW9uIiwgIlRleHQgZGlyZWN0aW9uIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWZh
dWx0RGlyZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJEZWZhdWx0IiwgIkRlZmF1bHQgd3JpdGluZyBkaXJlY3Rpb24gY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBM
ZWZ0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJbnNwZWN0IiwgIkluc3BlY3Qg
RWxlbWVudCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIHJlY2VudCBzZWFyY2hl
cyIsICJMYWJlbCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tp
bmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4g
cGVyZm9ybWVkIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1l
bnVSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJlY2VudCBzZWFyY2hlcyIsICJsYWJlbCBmb3IgZmlyc3Qg
aXRlbSBpbiB0aGUgbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlja2luZyBvbiB0aGUgc2VhcmNo
IGZpZWxkIGltYWdlLCB1c2VkIGFzIGVtYmVkZGVkIG1lbnUgdGl0bGUiKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJDbGVhciByZWNlbnQgc2VhcmNoZXMiLCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBt
ZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVudHMiKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6QVhXZWJBcmVhVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OkFYTGlua1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpc3RNYXJrZXJUZXh0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhJbWFnZU1hcFRleHQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpBWEhlYWRpbmdUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhCdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhSYWRp
b0J1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFRleHRGaWVs
ZEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWENoZWNrZWRDaGVja0Jv
eEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFVuY2hlY2tlZENoZWNr
Qm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RBY3Rp
b25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0aW9u
VmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlua0FjdGlvblZlcmIoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptaXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTWlzc2luZyBQbHVnLWlu
IiwgIkxhYmVsIHRleHQgdG8gYmUgdXNlZCB3aGVuIGEgcGx1Zy1pbiBpcyBtaXNzaW5nIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNoZWRQbHVnaW5UZXh0KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dW5rbm93bkZpbGVTaXplVGV4dCgpCit7CisgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVW5rbm93biIs
ICJVbmtub3duIGZpbGVzaXplIEZUUCBkaXJlY3RvcnkgbGlzdGluZyBpdGVtIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSAoJTJ4JTMgcGl4ZWxzKSIsICJUaXRsZSBzdHJp
bmcgZm9yIGltYWdlcyIpLmFyZyhmaWxlbmFtZSkuYXJnKHNpemUud2lkdGgoKSkuYXJnKHNpemUu
aGVpZ2h0KCkpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptZWRpYUVsZW1l
bnRMb2FkaW5nU3RhdGVUZXh0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVz
IG1lc3NhZ2Ugd2hlbiB0aGUgbWVkaWEgaXMgbG9hZGluZyIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCkKK3sK
KyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJMaXZl
IEJyb2FkY2FzdCIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBtZXNzYWdlIHdoZW4gd2F0Y2hp
bmcgYSBsaXZlIGJyb2FkY2FzdCIpOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5n
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikK
KyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
QXVkaW8gRWxlbWVudCIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFt
ZSA9PSAiVmlkZW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVmlkZW8gRWxlbWVudCIsICJNZWRpYSBjb250cm9sbGVyIGVs
ZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk11dGUgQnV0dG9uIiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0b24i
KQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJVbm11dGUgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChu
YW1lID09ICJQbGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGxheSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGF1c2UgQnV0dG9uIiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQorICAg
ICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTbGlk
ZXIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRl
clRodW1iIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiU2xpZGVyIFRodW1iIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAg
IGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXdpbmQgQnV0dG9uIiwgIk1lZGlhIGNvbnRy
b2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiUmV0dXJuIHRvIFJlYWwtdGltZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50
Iik7CisgICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCisgICAgICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkVsYXBzZWQgVGltZSIs
ICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFp
bmluZ0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJSZW1haW5pbmcgVGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQi
KTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN0YXR1cyBEaXNwbGF5IiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVuQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiRnVsbHNjcmVlbiBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Cisg
ICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBGb3J3YXJkIEJ1dHRvbiIs
ICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tC
dXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICJTZWVrIEJhY2sgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwor
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJBdWRpbyBlbGVtZW50IHBsYXli
YWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVmlkZW8gZWxlbWVudCBwbGF5
YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNdXRlIGF1ZGlvIHRyYWNrcyIs
ICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiVW5tdXRlIGF1ZGlvIHRyYWNrcyIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsK
KyAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkJlZ2luIHBsYXliYWNrIiwgIk1lZGlhIGNv
bnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCisgICAg
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhdXNl
IHBsYXliYWNrIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09
ICJTbGlkZXIiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJNb3ZpZSB0aW1lIHNjcnViYmVyIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOworICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCisgICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk1vdmllIHRpbWUgc2NydWJiZXIg
dGh1bWIiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlJl
d2luZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlJld2luZCBtb3ZpZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsK
KyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJldHVybiBzdHJlYW1p
bmcgbW92aWUgdG8gcmVhbC10aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAg
IGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHRpbWUiLCAi
TWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5p
bmdEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiUmVtYWluaW5nIG1vdmllIHRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHN0
YXR1cyIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiRnVs
bHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIlBsYXkgbW92aWUgaW4gZnVsbC1zY3JlZW4gbW9kZSIsICJNZWRpYSBj
b250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24i
KQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJTZWVrIHF1aWNrbHkgYmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBp
ZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIHF1aWNrbHkgZm9yd2FyZCIsICJNZWRp
YSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9j
YWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmlu
aXRlKHRpbWUpKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJJbmRlZmluaXRlIHRpbWUiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIpOwor
CisgICAgaW50IHNlY29uZHMgPSAoaW50KWZhYnNmKHRpbWUpOworICAgIGludCBkYXlzID0gc2Vj
b25kcyAvICg2MCAqIDYwICogMjQpOworICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2
MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOworICAgIHNlY29uZHMg
JT0gNjA7CisKKyAgICBpZiAoZGF5cykKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgZGF5cyAlMiBob3VycyAlMyBtaW51dGVzICU0IHNl
Y29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIpLmFyZyhkYXlzKS5hcmcoaG91cnMpLmFy
ZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7CisKKyAgICBpZiAoaG91cnMpCisgICAgICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxIGhvdXJzICUyIG1p
bnV0ZXMgJTMgc2Vjb25kcyIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIikuYXJnKGhvdXJzKS5h
cmcobWludXRlcykuYXJnKHNlY29uZHMpOworCisgICAgaWYgKG1pbnV0ZXMpCisgICAgICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxIG1pbnV0ZXMg
JTIgc2Vjb25kcyIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIikuYXJnKG1pbnV0ZXMpLmFyZyhz
ZWNvbmRzKTsKKworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIiUxIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIpLmFyZyhzZWNvbmRz
KTsKK30KKworI2Vsc2UgLy8gRU5BQkxFKFZJREVPKQorLy8gWFhYOiAjaWYgRU5BQkxFKFZJREVP
KSBzaG91bGQgYmUgaW4gdGhlIGJhc2UgY2xhc3MKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKK3sK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3Np
bmdUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBl
TWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3Nh
Z2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRh
dGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlk
YXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKworLy8gVmlzaXRlZExp
bmtTdHJhdGVneQorCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQ
YWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoKQoreworICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlz
TGlua1Zpc2l0ZWQoaGFzaCk7Cit9CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRW
aXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoKQoreworICAgIHBhZ2UtPmdyb3Vw
KCkuYWRkVmlzaXRlZExpbmtIYXNoKGhhc2gpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQ1OTY1MDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCisjZGVmaW5lIFdlYlBsYXRm
b3JtU3RyYXRlZ2llc19oCisKKyNpbmNsdWRlIDxMb2NhbGl6YXRpb25TdHJhdGVneS5oPgorI2lu
Y2x1ZGUgPFBsYXRmb3JtU3RyYXRlZ2llcy5oPgorI2luY2x1ZGUgPFBsdWdpblN0cmF0ZWd5Lmg+
CisjaW5jbHVkZSA8VmlzaXRlZExpbmtTdHJhdGVneS5oPgorCisjaW5jbHVkZSA8cXdlYnBhZ2Uu
aD4KKworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFFXZWJQYWdl
KiB3ZWJQYWdlKTsKKworcHJpdmF0ZToKKyAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMoUVdlYlBh
Z2UqIHdlYlBhZ2UpOworCisgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCisgICAg
dmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5KiBjcmVhdGVMb2NhbGl6
YXRpb25TdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOworCisgICAgLy8gV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3kKKyAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGx1Z2luSW5mbyhWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKworICAg
IC8vIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyByZXNldEJ1
dHRvbkRlZmF1bHRMYWJlbCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoYWJsZUlu
ZGV4SW50cm9kdWN0aW9uKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBzdWJtaXRCdXR0b25E
ZWZhdWx0TGFiZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGZpbGVCdXR0b25DaG9vc2VG
aWxlTGFiZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxl
Y3RlZExhYmVsKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKTsKKyAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCk7CisgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCk7
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0Ns
aXBib2FyZCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
bkZyYW1lSW5OZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NvcHkoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0dvQmFjaygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29G
b3J3YXJkKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9w
KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgpOworICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKTsKKyAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7CisgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCk7Cisg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25h
cnkoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5r
KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFt
bWFyKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnUoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dT
cGVsbGluZ1BhbmVsKGJvb2wgc2hvdyk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKTsKKyAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKKyAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7CisgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOworICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rp
b24oKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1Jp
Z2h0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRv
TGVmdCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVj
dEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNl
YXJjaGVzVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVudVJlY2VudFNl
YXJjaGVzVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVj
ZW50U2VhcmNoZXNUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWFdlYkFyZWFUZXh0
KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWExpbmtUZXh0KCk7CisgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBBWExpc3RNYXJrZXJUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBB
WEltYWdlTWFwVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhIZWFkaW5nVGV4dCgp
OworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCk7Cisg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpOworICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgQVhNZW51TGlzdEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYTGlua0Fj
dGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCk7
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpOworICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZp
bGVzKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBt
ZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBt
ZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0IFdURjo6U3RyaW5n
Jik7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50
SGVscFRleHQoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGxv
Y2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0KTsKKyAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0
KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZs
b3dUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBN
aXNtYXRjaFRleHQoKTsKKworICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gpOworICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6TGlua0hhc2gpOworCisgICAgUVdlYlBhZ2UgKm1fcGFnZTsKK307CisKKyNlbmRp
ZiAvLyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0ZWM4NjIzLi5hYmU5YTRiIDEwMDY0NAotLS0g
YS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEwLTA5LTE2ICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24gUXQKKworICAgICAgICBbUXRdIFR1
cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAqIFdlYktpdDIucHJvOiBBZGRlZCBB
ZGRlZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMue2NwcCxofQorCiAyMDEwLTA5LTE2ICBCYWxhenMg
S2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRyaXZp
YWwgdHlwbyBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYktpdDIucHJvIGIvV2ViS2l0Mi9X
ZWJLaXQyLnBybwppbmRleCAyOTg3NTYxLi42NmRlZWJjIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dl
YktpdDIucHJvCisrKyBiL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI1Niw2ICsyNTYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oIFwKKyAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIFwKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBcCkBAIC0zNzAsNiArMzcxLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCYWNrRm9y
d2FyZENvbnRyb2xsZXJDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YkVycm9yc1F0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYS5jcHAgXAotLSAKMS43LjIuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67904</attachid>
            <date>2010-09-17 06:11:34 -0700</date>
            <delta_ts>2010-09-18 13:16:02 -0700</delta_ts>
            <desc>patch with review fixes</desc>
            <filename>0001-Enable-Platform-Strategies-on-Qt.patch</filename>
            <type>text/plain</type>
            <size>69699</size>
            <attacher name="Ademar Reis">ademar</attacher>
            
              <data encoding="base64">RnJvbSA5NjI2MmI0NTNlY2Q2MmRhYzMyOGZmMDBjYmYxYjc5ZTE3NDViZDljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVtYXIgZGUgU291emEgUmVpcyBKciA8YWRlbWFyLnJlaXNA
b3BlbmJvc3NhLm9yZz4KRGF0ZTogVGh1LCAxNiBTZXAgMjAxMCAxNDoxNTo0NyAtMDMwMApTdWJq
ZWN0OiBbUEFUQ0hdIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0CgpbUXRdIFR1cm4g
b24gUExBVEZPUk1fU1RSQVRFR0lFUwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU4MzEKLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTEgKwogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggICAgICAg
ICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0xh
bmd1YWdlLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvTG9jYWxpemF0aW9ucy5jcHAgICAgICAgICAgICAgIHwgIDUzNiAtLS0tLS0tLS0tLS0tLS0t
CiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcCAgICAgICAgICAgICAgICB8ICAg
OTggLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDMgKwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMTA1ICsrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgfCAgNjc1ICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggICB8ICAxNDEgKysrKwogV2ViS2l0Mi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIFdlYktp
dDIvV2ViS2l0Mi5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiAx
MyBmaWxlcyBjaGFuZ2VkLCAxMDE1IGluc2VydGlvbnMoKyksIDYzNyBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjY2RjOTYuLmE5Njg0MDEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOS0xNiAgQWRlbWFyIGRlIFNvdXphIFJlaXMg
SnIgIDxhZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBQbGF0Zm9ybSBTdHJhdGVnaWVzIG9uIFF0
CisKKyAgICAgICAgW1F0XSBUdXJuIG9uIFBMQVRGT1JNX1NUUkFURUdJRVMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODMxCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDogRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgd2hlbiBidWlsZGluZyBR
dFdlYmtpdAorCiAyMDEwLTA5LTE2ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
ZDFjOTcwNi4uMDBhYjI2MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExMTEsNyArMTExMSw3
IEBACiAjZGVmaW5lIEVOQUJMRV9KU0NfWk9NQklFUyAwCiAKIC8qIEZJWE1FOiBFdmVudHVhbGx5
IHdlIHNob3VsZCBlbmFibGUgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyBhbmQgZ2V0IHJpZCBvZiB0
aGUgZGVmaW5lLiAqLwotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUgV1RG
X1VTRV9QTEFURk9STV9TVFJBVEVHSUVTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMGZiYTAuLjFkNGI0YTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTAtMDktMTYgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFy
LnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFbmFibGUgUGxhdGZvcm0gU3RyYXRlZ2llcyBvbiBRdAorCisgICAgICAg
IFtRdF0gVHVybiBvbiBQTEFURk9STV9TVFJBVEVHSUVTCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTgzMQorCisgICAgICAgICogV2ViQ29yZS5wcm86
IEFkZGluZy9yZW1vdmluZyBpbXBsZW1lbnRhdGlvbiBmaWxlcworICAgICAgICAqIHBsYXRmb3Jt
L3F0L0xhbmd1YWdlLmNwcDogQWRkZWQsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpIHdhcwor
ICAgICAgICBtb3ZlZCBmcm9tIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwCisgICAgICAg
IChXZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UpOiBNb3ZlZCBmcm9tIExvY2FsaXphdGlvbnMuY3Bw
CisgICAgICAgICogcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHA6IFJlbW92ZWQgKGNvZGUg
aXMgbm93IGluc2lkZQorICAgICAgICBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwKQorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcDogUmVtb3ZlZCAo
aWRlbSkKKwogMjAxMC0wOS0xNiAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNTRlZTUzNi4uODYxYTA3NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xMTc5LDYgKzExNzksOCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L3Ry
YW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9VVUlELmNwcCBcCiAg
ICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCBcCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgXAogICAgIHBsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpbkRlYnVnLmNwcCBcCiAgICAg
cGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBcCkBAIC0yMDMzLDYgKzIwMzUsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBcCiAgICAgcGxhdGZvcm0vTGlu
a0hhc2guaCBcCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5oIFwKKyAgICBwbGF0Zm9ybS9MYW5ndWFn
ZS5oIFwKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogICAgIHBsYXRmb3JtL25l
dHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvQXV0aGVudGljYXRpb25DbGllbnQuaCBcCkBAIC0yMDk1LDYgKzIwOTgsOCBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBcCiAgICAgcGxhdGZvcm0vVGltZXIu
aCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmggXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRl
Z2llcy5oIFwKKyAgICBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggXAogICAgIHBsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5oIFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlLmggXAogICAgIHBs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuaCBcCkBAIC0yNTA2LDYgKzI1MTEsNyBAQCBIRUFERVJTICs9
IFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdp
bi5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQu
aCBcCiAgICAgJCRQV0QvLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dVF0LmggXAorICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBcCiAgICAgJCRQV0QvcGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVmZXRj
aEhlbHBlci5oCiAKIHY4IHsKQEAgLTI1NzAsNyArMjU3Niw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRhUXQuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9LVVJMUXQuY3BwIFwK
LSAgICBwbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvTUlN
RVR5cGVSZWdpc3RyeVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBc
CiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwIFwKQEAgLTI1ODUs
MTMgKzI1OTAsMTMgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1NvdW5kUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9M
b2dnaW5nUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRm
b3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9U
ZXh0Qm91bmRhcmllc1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5jcHAgXAogICAg
IHBsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1dpZGdldFF0
LmNwcCBcCi0gICAgcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwIFwKICAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcCBcCiAgICAgLi4vV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIFwKQEAgLTI2MDgsNiArMjYx
Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1
cE1lbnVRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3Jt
UGx1Z2luLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudVF0LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCiAgICAgLi4vV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDI5MDBiCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8UUxvY2FsZT4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKK3sKKyAgICBR
TG9jYWxlIGxvY2FsZTsKKyAgICByZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKCJfIiwgIi0i
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25z
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ1NDg3MmEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9Mb2NhbGl6YXRpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4g
PGluZm9Ac3RhaWtvcy5uZXQ+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0KLSNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8
UUxvY2FsZT4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU3RyaW5nIHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCi17Ci0gICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3VibWl0IiwgImRlZmF1
bHQgbGFiZWwgZm9yIFN1Ym1pdCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOwotfQot
Ci1TdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3VibWl0IiwgIlN1Ym1pdCAoaW5wdXQgZWxl
bWVudCkgYWx0IHRleHQgZm9yIDxpbnB1dD4gZWxlbWVudHMgd2l0aCBubyBhbHQsIHRpdGxlLCBv
ciB2YWx1ZSIpOwotfQotCi1TdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJlc2V0Iiwg
ImRlZmF1bHQgbGFiZWwgZm9yIFJlc2V0IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBhZ2VzIik7
Ci19Ci0KLVN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQotewotICAgIFFMb2NhbGUgbG9jYWxlOwot
ICAgIHJldHVybiBsb2NhbGUubmFtZSgpLnJlcGxhY2UoIl8iLCAiLSIpOwotfQotCi1TdHJpbmcg
c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJUaGlzIGlzIGEgc2VhcmNoYWJsZSBpbmRleC4g
RW50ZXIgc2VhcmNoIGtleXdvcmRzOiAiLCAidGV4dCB0aGF0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0
IG9mIG5lYXJseS1vYnNvbGV0ZSB3ZWIgcGFnZXMgaW4gdGhlIGZvcm0gb2YgYSAnc2VhcmNoYWJs
ZSBpbmRleCciKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKQotewot
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNob29z
ZSBGaWxlIiwgInRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMiKTsKLX0K
LQotU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKLXsKLSAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJObyBmaWxlIHNlbGVjdGVk
IiwgInRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hl
biBubyBmaWxlIGlzIHNlbGVjdGVkIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBpbiBOZXcgV2lu
ZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdE
b3dubG9hZExpbmtUb0Rpc2soKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIlNhdmUgTGluay4uLiIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxp
bmtUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiQ29weSBMaW5rIiwgIkNvcHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQot
ewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk9w
ZW4gSW1hZ2UiLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkKLXsK
LSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTYXZl
IEltYWdlIiwgIkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ29weSBJbWFnZSIsICJD
b3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIEZyYW1lIiwgIk9wZW4gRnJhbWUgaW4gTmV3
IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ29weSgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkdvIEJhY2siLCAiQmFjayBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJHbyBGb3J3YXJk
IiwgIkZvcndhcmQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1N0b3AoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZWxvYWQiLCAiUmVsb2FkIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQotewotICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkN1dCIsICJDdXQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3Rl
KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJQYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3Nl
cyBGb3VuZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSWdub3JlU3BlbGxpbmcoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIklnbm9yZSIsICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51
IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQot
ewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkFk
ZCBUbyBEaWN0aW9uYXJ5IiwgIkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQotewotICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlYXJjaCBUaGUgV2ViIiwg
IlNlYXJjaCBUaGUgV2ViIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxvb2sgVXAgSW4gRGljdGlvbmFyeSIsICJM
b29rIFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFy
KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJJZ25vcmUiLCAiSWdub3JlIEdyYW1tYXIgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCi17Ci0gICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3BlbGxpbmciLCAiU3BlbGxpbmcg
YW5kIEdyYW1tYXIgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCi17Ci0gICAgcmV0dXJuIHNo
b3cgPyBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNob3cgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIikgOgotICAgICAgICAgICAgICAgICAg
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJIaWRlIFNwZWxsaW5nIGFu
ZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ2hlY2sgU3BlbGxpbmciLCAiQ2hlY2sgc3BlbGxpbmcgY29u
dGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZygpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNw
ZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKLXsKLSAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDaGVjayBHcmFtbWFyIFdp
dGggU3BlbGxpbmciLCAiQ2hlY2sgZ3JhbW1hciB3aXRoIHNwZWxsaW5nIGNvbnRleHQgbWVudSBp
dGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCi17Ci0gICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRm9udHMiLCAi
Rm9udCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0JvbGQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIkJvbGQiLCAiQm9sZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBp
dGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQotewotICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVuZGVybGlu
ZSIsICJVbmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ091dGxpbmUoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIk91dGxpbmUiLCAiT3V0bGluZSBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQot
ewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRp
cmVjdGlvbiIsICJXcml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0K
LQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJUZXh0IERpcmVj
dGlvbiIsICJUZXh0IGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKQotewotICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRlZmF1bHQiLCAiRGVmYXVs
dCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdo
dCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmln
aHRUb0xlZnQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQotewot
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluc3Bl
Y3QiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBz
ZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJl
bCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhl
IHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVk
Iik7Ci19Ci0KLVN0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZWNlbnQgc2Vh
cmNoZXMiLCAibGFiZWwgZm9yIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBlYXJzIHdo
ZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJlZGRlZCBt
ZW51IHRpdGxlIik7Ci19Ci0KLVN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1Rl
eHQoKQotewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIkNsZWFyIHJlY2VudCBzZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVz
IG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOwotfQotCi1TdHJpbmcgQVhXZWJB
cmVhVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhMaW5rVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhMaXN0TWFya2VyVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhJbWFnZU1hcFRleHQo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYSGVhZGluZ1RleHQoKQot
ewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJt
VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhEZWZpbml0aW9u
TGlzdERlZmluaXRpb25UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmlu
ZyBBWEJ1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3Ry
aW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19
Ci0KLVN0cmluZyBBWFRleHRGaWVsZEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQotU3RyaW5nIEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0
dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTGlua0FjdGlvblZlcmIo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFj
dGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxp
c3RBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBtaXNz
aW5nUGx1Z2luVGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiTWlzc2luZyBQbHVnLWluIiwgIkxhYmVsIHRleHQgdG8gYmUgdXNlZCB3
aGVuIGEgcGx1Zy1pbiBpcyBtaXNzaW5nIik7Ci19Ci0KLVN0cmluZyBjcmFzaGVkUGx1Z2luVGV4
dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LVN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQotewotICAgIHJldHVybiBT
dHJpbmcoKTsKLX0KLQotU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQotewotICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVua25vd24iLCAiVW5r
bm93biBmaWxlc2l6ZSBGVFAgZGlyZWN0b3J5IGxpc3RpbmcgaXRlbSIpOwotfQotCi1TdHJpbmcg
aW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQot
ewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUx
ICglMnglMyBwaXhlbHMpIiwgIlRpdGxlIHN0cmluZyBmb3IgaW1hZ2VzIikuYXJnKGZpbGVuYW1l
KS5hcmcoc2l6ZS53aWR0aCgpKS5hcmcoc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLVN0cmluZyBtZWRp
YUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkKLXsKLSAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIg
c3RhdHVzIG1lc3NhZ2Ugd2hlbiB0aGUgbWVkaWEgaXMgbG9hZGluZyIpOwotfQotCi1TdHJpbmcg
bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTGl2ZSBCcm9hZGNhc3QiLCAiTWVk
aWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHdhdGNoaW5nIGEgbGl2ZSBicm9hZGNh
c3QiKTsKLX0KLQotI2lmIEVOQUJMRShWSURFTykKLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29u
dHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09
ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJBdWRpbyBFbGVtZW50IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOwotICAgIGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJWaWRlbyBFbGVtZW50IiwgIk1l
ZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikK
LSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
TXV0ZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIlVubXV0ZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQbGF5IEJ1dHRvbiIsICJNZWRp
YSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQot
ICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQ
YXVzZSBCdXR0b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlNsaWRlciIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBp
ZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTbGlkZXIgVGh1bWIiLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJld2luZCBCdXR0
b24iLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJldHVy
blRvUmVhbHRpbWVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJSZXR1cm4gdG8gUmVhbC10aW1lIEJ1dHRvbiIsICJNZWRpYSBj
b250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5
IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiRWxhcHNlZCBUaW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChu
YW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJlbWFpbmluZyBUaW1lIiwgIk1lZGlhIGNv
bnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAg
ICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU3Rh
dHVzIERpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUg
PT0gIkZ1bGxzY3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJGdWxsc2NyZWVuIEJ1dHRvbiIsICJNZWRpYSBjb250cm9s
bGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAg
ICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVr
IEZvcndhcmQgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChu
YW1lID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlZWsgQmFjayBCdXR0b24iLCAiTWVkaWEgY29udHJv
bGxlciBlbGVtZW50Iik7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsb2Nh
bGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJBdWRpbyBlbGVtZW50IHBsYXliYWNrIGNv
bnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsK
LSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVmlkZW8gZWxlbWVudCBwbGF5YmFjayBj
b250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7
Ci0gICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNdXRlIGF1ZGlvIHRyYWNrcyIsICJNZWRp
YSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikK
LSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
VW5tdXRlIGF1ZGlvIHRyYWNrcyIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBp
ZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkJlZ2luIHBsYXliYWNrIiwgIk1lZGlhIGNvbnRyb2xs
ZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhdXNlIHBsYXli
YWNrIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChuYW1lID09ICJTbGlk
ZXIiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJNb3ZpZSB0aW1lIHNjcnViYmVyIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwot
ICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk1vdmllIHRpbWUgc2NydWJiZXIgdGh1bWIi
LCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlJld2luZEJ1
dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIlJld2luZCBtb3ZpZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBp
ZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJldHVybiBzdHJlYW1pbmcgbW92
aWUgdG8gcmVhbC10aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwotICAgIGlmIChu
YW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHRpbWUiLCAiTWVkaWEg
Y29udHJvbGxlciBlbGVtZW50Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNw
bGF5IikKLSAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiUmVtYWluaW5nIG1vdmllIHRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7
Ci0gICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXJyZW50IG1vdmllIHN0YXR1cyIs
ICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVl
bkJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlBsYXkgbW92aWUgaW4gZnVsbC1zY3JlZW4gbW9kZSIsICJNZWRpYSBjb250cm9s
bGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAg
ICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVr
IHF1aWNrbHkgYmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKLSAgICBpZiAobmFt
ZSA9PSAiU2Vla0JhY2tCdXR0b24iKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIHF1aWNrbHkgZm9yd2FyZCIsICJNZWRpYSBjb250
cm9sbGVyIGVsZW1lbnQiKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZs
b2F0IHRpbWUpCi17Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKLSAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSW5kZWZpbml0ZSB0aW1lIiwg
Ik1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKTsKLQotICAgIGludCBzZWNvbmRzID0gKGludClmYWJz
Zih0aW1lKTsKLSAgICBpbnQgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2MCAqIDI0KTsKLSAgICBp
bnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwotICAgIGludCBtaW51dGVzID0gKHNlY29u
ZHMgLyA2MCkgJSA2MDsKLSAgICBzZWNvbmRzICU9IDYwOwotCi0gICAgaWYgKGRheXMpCi0gICAg
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxIGRh
eXMgJTIgaG91cnMgJTMgbWludXRlcyAlNCBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRp
b24iKS5hcmcoZGF5cykuYXJnKGhvdXJzKS5hcmcobWludXRlcykuYXJnKHNlY29uZHMpOwotCi0g
ICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICIlMSBob3VycyAlMiBtaW51dGVzICUzIHNlY29uZHMiLCAiTWVkaWEgdGlt
ZSBkZXNjcmlwdGlvbiIpLmFyZyhob3VycykuYXJnKG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsKLQot
ICAgIGlmIChtaW51dGVzKQotICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICIlMSBtaW51dGVzICUyIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNj
cmlwdGlvbiIpLmFyZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7Ci0KLSAgICByZXR1cm4gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBzZWNvbmRzIiwgIk1lZGlhIHRp
bWUgZGVzY3JpcHRpb24iKS5hcmcoc2Vjb25kcyk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVP
KQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRl
cm5NaXNtYXRjaFRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVJhbmdlT3ZlcmZsb3dUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4
dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LX0KLS8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luRGF0YVF0LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGM4NmQwLi4wMDAwMDAwCi0tLSBhL1dlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAs
MCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlBsdWdpbkRhdGEuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCi0jaW5jbHVk
ZSAiUGx1Z2luUGFja2FnZS5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hy
b21lQ2xpZW50UXQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSA8cXdlYnBhZ2UuaD4K
LSNpbmNsdWRlIDxxd2VicGx1Z2luZmFjdG9yeS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQotewotICAgIFFXZWJQYWdlKiB3ZWJQYWdl
ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KSktPm1fd2ViUGFnZTsKLSAgICBRV2ViUGx1Z2luRmFjdG9yeSogZmFjdG9yeSA9IHdlYlBhZ2Ut
PnBsdWdpbkZhY3RvcnkoKTsKLSAgICBpZiAoZmFjdG9yeSkgewotCi0gICAgICAgIFFMaXN0PFFX
ZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4+IHFwbHVnaW5zID0gZmFjdG9yeS0+cGx1Z2lucygpOwot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFwbHVnaW5zLmNvdW50KCk7ICsraSkgewotICAg
ICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbiYgcXBsdWdpbiA9IHFwbHVn
aW5zLmF0KGkpOwotCi0gICAgICAgICAgICBQbHVnaW5JbmZvIGluZm87Ci0gICAgICAgICAgICBp
bmZvLm5hbWUgPSBxcGx1Z2luLm5hbWU7Ci0gICAgICAgICAgICBpbmZvLmRlc2MgPSBxcGx1Z2lu
LmRlc2NyaXB0aW9uOwotCi0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHFwbHVnaW4u
bWltZVR5cGVzLmNvdW50KCk7ICsraikgewotICAgICAgICAgICAgICAgIGNvbnN0IFFXZWJQbHVn
aW5GYWN0b3J5OjpNaW1lVHlwZSYgbWltZVR5cGUgPSBxcGx1Z2luLm1pbWVUeXBlcy5hdChqKTsK
LQotICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZUluZm87Ci0gICAgICAgICAgICAg
ICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7Ci0gICAgICAgICAgICAgICAgbWltZUlu
Zm8uZGVzYyA9IG1pbWVUeXBlLmRlc2NyaXB0aW9uOwotICAgICAgICAgICAgICAgIGZvciAoaW50
IGsgPSAwOyBrIDwgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMuY291bnQoKTsgKytrKQotICAgICAg
ICAgICAgICAgICAgbWltZUluZm8uZXh0ZW5zaW9ucy5hcHBlbmQobWltZVR5cGUuZmlsZUV4dGVu
c2lvbnMuYXQoaykpOwotCi0gICAgICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZUlu
Zm8pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGluZm8p
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUGx1Z2luRGF0YWJhc2UgKmRiID0gUGx1Z2luRGF0
YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKTsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2Fn
ZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvIGluZm87
Ci0gICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwotCi0gICAgICAg
IGluZm8ubmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAgICAgICAgaW5mby5maWxlID0gcGFja2Fn
ZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24o
KTsKLQotICAgICAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0
aW9ucyA9IHBhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwotICAgICAgICBNSU1FVG9EZXNj
cmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQo
KTsKLSAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwotCi0gICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+
Zmlyc3Q7Ci0gICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAg
bWltZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5
cGUpOwotCi0gICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoaW5mbyk7Ci0gICAgfQotfQotCi12b2lkIFBsdWdp
bkRhdGE6OnJlZnJlc2goKQotewotICAgIFBsdWdpbkRhdGFiYXNlICpkYiA9IFBsdWdpbkRhdGFi
YXNlOjppbnN0YWxsZWRQbHVnaW5zKCk7Ci0gICAgZGItPnJlZnJlc2goKTsKLX0KLQotfTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAKaW5kZXggMWY3NWZhMi4uMTgxYjNhNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTc4LDYg
Kzc4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiQ2Fj
aGUuaCIKICNpbmNsdWRlICJydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCIKQEAgLTI3MSw2
ICsyNzIsOCBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSAqcXEp
CiAgICAgV2ViQ29yZTo6Rm9udDo6c2V0Q29kZVBhdGgoV2ViQ29yZTo6Rm9udDo6Q29tcGxleCk7
CiAjZW5kaWYKIAorICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZShxcSk7CisK
ICAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJv
bWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQocSk7CiAgICAgcGFnZUNsaWVudHMuY29udGV4
dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYmQ0YjJjMi4uMzk1
NmUyZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTA4IEBACisyMDEwLTA5LTE2ICBBZGVtYXIgZGUgU291emEgUmVp
cyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24g
UXQKKworICAgICAgICBbUXRdIFR1cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJp
dmF0ZSk6IEluaXRpYWxpemUgdGhlIFBsYXRmb3JtU3RyYXRlZ3kKKyAgICAgICAgc2luZ2xldG9u
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6IEFk
ZGVkLCBjb2RlIHdhcyBtb3ZlZAorICAgICAgICBmcm9tIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlv
bnMuY3BwIGFuZCBwbHVnaW5zL3F0L1BsdWdpbkRhdGFRdC5jcHAKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSk6IGNyZWF0ZSB0aGUgc2luZ2xldG9uLAorICAgICAg
ICBmb2xsb3dpbmcgdGhlIHNhbWUgInBhdHRlcm4iIHVzZWQgYnkgTWFjIGFuZCBXaW4gcG9ydHMu
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcyk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9jYWxpemF0aW9uU3RyYXRl
Z3kpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0
cmF0ZWd5KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVtZW50QWx0VGV4dCk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3VibWl0QnV0dG9uRGVmYXVsdExhYmVs
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVM
YWJlbCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25Ob0ZpbGVT
ZWxlY3RlZExhYmVsKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9h
cmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdP
cGVuSW1hZ2VJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFt
ZUluTmV3V2luZG93KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnQ29weSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjayk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ1N0b3ApOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxs
aW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
U2VhcmNoV2ViKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmspOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5n
UGFuZWwpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5n
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdCb2xkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnSXRhbGljKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnVW5kZXJsaW5lKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnT3V0bGluZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVz
VGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJlYVRleHQpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtUZXh0KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4dCk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6QVhIZWFkaW5nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OkFYQnV0dG9uQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0aW9uVmVyYik6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmFzaGVkUGx1Z2luVGV4dCk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om11bHRpcGxlRmlsZVVwbG9hZFRleHQpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp1bmtub3duRmlsZVNpemVUZXh0KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6Om1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmlu
Zyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJv
bEVsZW1lbnRIZWxwVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2Fs
aXplZE1lZGlhVGltZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0
Y2hUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3Nh
Z2VUb29Mb25nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRp
b25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRWaXNpdGVkTGluayk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6IEFkZGVkLCBiYXNlZCBvbiBNYWMgYW5k
IFdpbgorICAgICAgICB2ZXJzaW9ucy4KKwogMjAxMC0wOS0xNiAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4ZTBjZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC0wLDAgKzEsNjc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29t
cHV0aW5nIFNlcnZpY2VzIEluYy4gPGluZm9Ac3RhaWtvcy5uZXQ+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8SW50U2l6
ZS5oPgorI2luY2x1ZGUgPFBhZ2UuaD4KKyNpbmNsdWRlIDxQYWdlR3JvdXAuaD4KKyNpbmNsdWRl
IDxQbHVnaW5EYXRhYmFzZS5oPgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVk
ZSA8UUxvY2FsZT4KKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJwbHVnaW5m
YWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKFFXZWJQ
YWdlKiB3ZWJQYWdlKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICh3ZWJQYWdlKSk7CisgICAgUV9VTlVTRUQocGxh
dGZvcm1TdHJhdGVnaWVzKTsKK30KKworV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMoUVdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3BhZ2Uod2ViUGFnZSkKK3sK
KyAgICBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXModGhpcyk7Cit9CisKKworLy8gUGx1Z2luU3RyYXRl
Z3kKKworUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGx1Z2lu
U3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitMb2NhbGl6YXRpb25TdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpCit7
CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1Zpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRo
aXM7Cit9CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCit7
CisgICAgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOworfQor
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4mIG91dFBsdWdpbnMpCit7CisgICAgUVdlYlBsdWdpbkZhY3RvcnkqIGZh
Y3RvcnkgPSBtX3BhZ2UtPnBsdWdpbkZhY3RvcnkoKTsKKyAgICBpZiAoZmFjdG9yeSkgeworCisg
ICAgICAgIFFMaXN0PFFXZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4+IHFwbHVnaW5zID0gZmFjdG9y
eS0+cGx1Z2lucygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFwbHVnaW5zLmNvdW50
KCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbiYg
cXBsdWdpbiA9IHFwbHVnaW5zLmF0KGkpOworICAgICAgICAgICAgUGx1Z2luSW5mbyBpbmZvOwor
ICAgICAgICAgICAgaW5mby5uYW1lID0gcXBsdWdpbi5uYW1lOworICAgICAgICAgICAgaW5mby5k
ZXNjID0gcXBsdWdpbi5kZXNjcmlwdGlvbjsKKworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCBxcGx1Z2luLm1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBRV2ViUGx1Z2luRmFjdG9yeTo6TWltZVR5cGUmIG1pbWVUeXBlID0gcXBsdWdpbi5taW1l
VHlwZXMuYXQoaik7CisKKyAgICAgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWVJbmZvOwor
ICAgICAgICAgICAgICAgIG1pbWVJbmZvLnR5cGUgPSBtaW1lVHlwZS5uYW1lOworICAgICAgICAg
ICAgICAgIG1pbWVJbmZvLmRlc2MgPSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsKKyAgICAgICAgICAg
ICAgICBmb3IgKGludCBrID0gMDsgayA8IG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zLmNvdW50KCk7
ICsraykKKyAgICAgICAgICAgICAgICAgIG1pbWVJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKG1pbWVU
eXBlLmZpbGVFeHRlbnNpb25zLmF0KGspKTsKKworICAgICAgICAgICAgICAgIGluZm8ubWltZXMu
YXBwZW5kKG1pbWVJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dFBsdWdpbnMu
YXBwZW5kKGluZm8pOworICAgICAgICB9CisgICAgfQorCisgICAgUGx1Z2luRGF0YWJhc2UqIGRi
ID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8
UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKKworICAgIG91dFBsdWdp
bnMucmVzaXplKHBsdWdpbnMuc2l6ZSgpKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgeworICAgICAgICBQbHVnaW5JbmZvIGluZm87Cisg
ICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOworCisgICAgICAgIGlu
Zm8ubmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKKyAgICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+
ZmlsZU5hbWUoKTsKKyAgICAgICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsK
KworICAgICAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9u
cyA9IHBhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOworICAgICAgICBNSU1FVG9EZXNjcmlw
dGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsK
KyAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgTWltZUNsYXNzSW5mbyBtaW1lOworCisgICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+Zmly
c3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgbWlt
ZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUp
OworCisgICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIG91dFBsdWdpbnMuYXBwZW5kKGluZm8pOworICAgIH0KKworfQorCisKKy8vIExvY2Fs
aXphdGlvblN0cmF0ZWd5CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlucHV0RWxl
bWVudEFsdFRleHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlN1Ym1pdCIsICJTdWJtaXQgKGlucHV0IGVsZW1lbnQpIGFsdCB0ZXh0IGZv
ciA8aW5wdXQ+IGVsZW1lbnRzIHdpdGggbm8gYWx0LCB0aXRsZSwgb3IgdmFsdWUiKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJl
c2V0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFJlc2V0IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBh
Z2VzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaGFibGVJbmRl
eEludHJvZHVjdGlvbigpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiVGhpcyBpcyBhIHNlYXJjaGFibGUgaW5kZXguIEVudGVyIHNlYXJjaCBr
ZXl3b3JkczogIiwgInRleHQgdGhhdCBhcHBlYXJzIGF0IHRoZSBzdGFydCBvZiBuZWFybHktb2Jz
b2xldGUgd2ViIHBhZ2VzIGluIHRoZSBmb3JtIG9mIGEgJ3NlYXJjaGFibGUgaW5kZXgnIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJl
bCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiU3VibWl0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFN1Ym1pdCBidXR0b25zIGluIGZvcm1zIG9u
IHdlYiBwYWdlcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpmaWxlQnV0
dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJDaG9vc2UgRmlsZSIsICJ0aXRsZSBmb3IgZmlsZSBidXR0b24g
dXNlZCBpbiBIVE1MIGZvcm1zIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJObyBmaWxlIHNlbGVjdGVkIiwgInRleHQg
dG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBmaWxl
IGlzIHNlbGVjdGVkIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk9wZW4gaW4gTmV3IFdpbmRvdyIsICJP
cGVuIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkK
K3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJT
YXZlIExpbmsuLi4iLCAiRG93bmxvYWQgTGlua2VkIEZpbGUgY29udGV4dCBtZW51IGl0ZW0iKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29w
eUxpbmtUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiQ29weSBMaW5rIiwgIkNvcHkgTGluayBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBJbWFnZSIsICJPcGVuIEltYWdlIGluIE5ldyBX
aW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpCit7CisgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2F2ZSBJbWFnZSIs
ICJEb3dubG9hZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgp
Cit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
Q29weSBJbWFnZSIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdX
aW5kb3coKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIk9wZW4gRnJhbWUiLCAiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVu
dSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0NvcHkoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQorewor
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkdvIEJh
Y2siLCAiQmFjayBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQoreworICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkdvIEZvcndhcmQiLCAiRm9y
d2FyZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnUmVsb2FkKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJSZWxvYWQiLCAiUmVsb2FkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCit7Cisg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3V0Iiwg
IkN1dCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGFzdGUiLCAiUGFzdGUgY29udGV4dCBtZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnTm9HdWVzc2VzRm91bmQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3NlcyBGb3Vu
ZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCit7CisgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSWdub3JlIiwgIklnbm9yZSBTcGVs
bGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJBZGQgVG8gRGljdGlvbmFyeSIs
ICJMZWFybiBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlYXJjaCBUaGUg
V2ViIiwgIlNlYXJjaCBUaGUgV2ViIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiTG9vayBVcCBJbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdPcGVuTGluaygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJJZ25vcmUiLCAiSWdub3JlIEdyYW1tYXIgY29udGV4dCBtZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnU3BlbGxpbmdNZW51KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJTcGVsbGluZyIsICJTcGVsbGluZyBhbmQgR3JhbW1hciBjb250
ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KQoreworICAgIHJl
dHVybiBzaG93ID8gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTaG93
IFNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpIDoKKyAgICAgICAgICAg
ICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSGlkZSBTcGVs
bGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCit7Cisg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ2hlY2sg
U3BlbGxpbmciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
Z1doaWxlVHlwaW5nKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciLCAiQ2hlY2sgc3BlbGxp
bmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGlu
ZygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVs
bGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRm9udHMiLCAiRm9udCBjb250ZXh0IHN1
Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnQm9sZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiQm9sZCIsICJCb2xkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygp
Cit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
SXRhbGljIiwgIkl0YWxpYyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVuZGVybGluZSIs
ICJVbmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiT3V0bGluZSIsICJPdXRsaW5l
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkKK3sKKyAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJEaXJlY3Rpb24iLCAiV3Jp
dGluZyBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkK
K3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJU
ZXh0IERpcmVjdGlvbiIsICJUZXh0IGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVm
YXVsdERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiRGVmYXVsdCIsICJEZWZhdWx0IHdyaXRpbmcgZGlyZWN0aW9uIGNvbnRl
eHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8g
TGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSW5zcGVjdCIsICJJbnNwZWN0
IEVsZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJObyByZWNlbnQgc2VhcmNo
ZXMiLCAiTGFiZWwgZm9yIG9ubHkgaXRlbSBpbiBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNr
aW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHdoZW4gbm8gc2VhcmNoZXMgaGF2ZSBiZWVu
IHBlcmZvcm1lZCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hN
ZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZWNlbnQgc2VhcmNoZXMiLCAibGFiZWwgZm9yIGZpcnN0
IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJj
aCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJlZGRlZCBtZW51IHRpdGxlIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4
dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiQ2xlYXIgcmVjZW50IHNlYXJjaGVzIiwgIm1lbnUgaXRlbSBpbiBSZWNlbnQgU2VhcmNoZXMg
bWVudSB0aGF0IGVtcHRpZXMgbWVudSdzIGNvbnRlbnRzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJlYVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWExpbmtUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhIZWFkaW5nVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OkFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYUmFk
aW9CdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhUZXh0Rmll
bGRBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhDaGVja2VkQ2hlY2tC
b3hBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhVbmNoZWNrZWRDaGVj
a0JveEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0
aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlv
blZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQoKQoreworICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk1pc3NpbmcgUGx1Zy1p
biIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWctaW4gaXMgbWlzc2luZyIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmFzaGVkUGx1Z2luVGV4dCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVua25vd25GaWxlU2l6ZVRleHQoKQoreworICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVua25vd24i
LCAiVW5rbm93biBmaWxlc2l6ZSBGVFAgZGlyZWN0b3J5IGxpc3RpbmcgaXRlbSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgKCUyeCUzIHBpeGVscykiLCAiVGl0bGUgc3Ry
aW5nIGZvciBpbWFnZXMiKS5hcmcoZmlsZW5hbWUpLmFyZyhzaXplLndpZHRoKCkpLmFyZyhzaXpl
LmhlaWdodCgpKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVt
ZW50TG9hZGluZ1N0YXRlVGV4dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTG9hZGluZy4uLiIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1
cyBtZXNzYWdlIHdoZW4gdGhlIG1lZGlhIGlzIGxvYWRpbmciKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTGl2
ZSBCcm9hZGNhc3QiLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHdhdGNo
aW5nIGEgbGl2ZSBicm9hZGNhc3QiKTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmlu
Zyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIp
CisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkF1ZGlvIEVsZW1lbnQiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5h
bWUgPT0gIlZpZGVvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlZpZGVvIEVsZW1lbnQiLCAiTWVkaWEgY29udHJvbGxlciBl
bGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQorICAgICAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNdXRlIEJ1dHRvbiIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9u
IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiVW5tdXRlIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAo
bmFtZSA9PSAiUGxheUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBsYXkgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxl
bWVudCIpOworICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhdXNlIEJ1dHRvbiIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAg
ICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2xp
ZGVyIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTbGlk
ZXJUaHVtYiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIlNsaWRlciBUaHVtYiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAg
ICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmV3aW5kIEJ1dHRvbiIsICJNZWRpYSBjb250
cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRv
biIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlJldHVybiB0byBSZWFsLXRpbWUgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVu
dCIpOworICAgIGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQorICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJFbGFwc2VkIFRpbWUi
LCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1h
aW5pbmdEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiUmVtYWluaW5nIFRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50
Iik7CisgICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTdGF0dXMgRGlzcGxheSIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1
dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIkZ1bGxzY3JlZW4gQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOwor
ICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNlZWsgRm9yd2FyZCBCdXR0b24i
LCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtCYWNr
QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiU2VlayBCYWNrIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsK
KworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQXVkaW8gZWxlbWVudCBwbGF5
YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlZpZGVvIGVsZW1lbnQgcGxh
eWJhY2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5IiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxl
bWVudCIpOworICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTXV0ZSBhdWRpbyB0cmFja3Mi
LCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1
dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIlVubXV0ZSBhdWRpbyB0cmFja3MiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7
CisgICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJCZWdpbiBwbGF5YmFjayIsICJNZWRpYSBj
b250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAg
ICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJQYXVz
ZSBwbGF5YmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9
PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiTW92aWUgdGltZSBzY3J1YmJlciIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1l
bnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNb3ZpZSB0aW1lIHNjcnViYmVy
IHRodW1iIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJS
ZXdpbmRCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViUGFnZSIsICJSZXdpbmQgbW92aWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7
CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXR1cm4gc3RyZWFt
aW5nIG1vdmllIHRvIHJlYWwtdGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAg
ICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBtb3ZpZSB0aW1lIiwg
Ik1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJUaW1lUmVtYWlu
aW5nRGlzcGxheSIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlJlbWFpbmluZyBtb3ZpZSB0aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxl
bWVudCIpOworICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBtb3ZpZSBz
dGF0dXMiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIkZ1
bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJQbGF5IG1vdmllIGluIGZ1bGwtc2NyZWVuIG1vZGUiLCAiTWVkaWEg
Y29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9u
IikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiU2VlayBxdWlja2x5IGJhY2siLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAg
aWYgKG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBxdWlja2x5IGZvcndhcmQiLCAiTWVk
aWEgY29udHJvbGxlciBlbGVtZW50Iik7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omxv
Y2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCit7CisgICAgaWYgKCFpc2Zp
bml0ZSh0aW1lKSkKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiSW5kZWZpbml0ZSB0aW1lIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKTsK
KworICAgIGludCBzZWNvbmRzID0gKGludClmYWJzZih0aW1lKTsKKyAgICBpbnQgZGF5cyA9IHNl
Y29uZHMgLyAoNjAgKiA2MCAqIDI0KTsKKyAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICog
NjApOworICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRz
ICU9IDYwOworCisgICAgaWYgKGRheXMpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUxIGRheXMgJTIgaG91cnMgJTMgbWludXRlcyAlNCBz
ZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKS5hcmcoZGF5cykuYXJnKGhvdXJzKS5h
cmcobWludXRlcykuYXJnKHNlY29uZHMpOworCisgICAgaWYgKGhvdXJzKQorICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBob3VycyAlMiBt
aW51dGVzICUzIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIpLmFyZyhob3Vycyku
YXJnKG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsKKworICAgIGlmIChtaW51dGVzKQorICAgICAgICBy
ZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBtaW51dGVz
ICUyIHNlY29uZHMiLCAiTWVkaWEgdGltZSBkZXNjcmlwdGlvbiIpLmFyZyhtaW51dGVzKS5hcmco
c2Vjb25kcyk7CisKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICIlMSBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKS5hcmcoc2Vjb25k
cyk7Cit9CisKKyNlbHNlIC8vIEVOQUJMRShWSURFTykKKy8vIEZJWE1FOiAjaWYgRU5BQkxFKFZJ
REVPKSBzaG91bGQgYmUgaW4gdGhlIGJhc2UgY2xhc3MKKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkK
K3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisK
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1p
c3NpbmdUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VU
eXBlTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1l
c3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZh
bGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKworLy8gVmlzaXRl
ZExpbmtTdHJhdGVneQorCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRl
ZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoKQoreworICAgIHJldHVybiBwYWdlLT5ncm91cCgp
LmlzTGlua1Zpc2l0ZWQoaGFzaCk7Cit9CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjph
ZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoKQoreworICAgIHBhZ2UtPmdy
b3VwKCkuYWRkVmlzaXRlZExpbmtIYXNoKGhhc2gpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhlYTYwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQor
ICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCisj
ZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCisKKyNpbmNsdWRlIDxMb2NhbGl6YXRpb25T
dHJhdGVneS5oPgorI2luY2x1ZGUgPFBsYXRmb3JtU3RyYXRlZ2llcy5oPgorI2luY2x1ZGUgPFBs
dWdpblN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8VmlzaXRlZExpbmtTdHJhdGVneS5oPgorCitjbGFz
cyBRV2ViUGFnZTsKKworY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KFFXZWJQYWdlKiB3ZWJQYWdlKTsKKworcHJpdmF0ZToKKyAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMoUVdlYlBhZ2UqIHdlYlBhZ2UpOworCisgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzCisgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3Ry
YXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5KiBjcmVh
dGVMb2NhbGl6YXRpb25TdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExp
bmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOworCisgICAgLy8gV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
KTsKKworICAgIC8vIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5CisgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2Vh
cmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBzdWJt
aXRCdXR0b25EZWZhdWx0TGFiZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGZpbGVCdXR0
b25DaG9vc2VGaWxlTGFiZWwoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGZpbGVCdXR0b25O
b0ZpbGVTZWxlY3RlZExhYmVsKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKTsKKyAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKTsKKyAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCk7
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdl
VG9EaXNrKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
SW1hZ2VUb0NsaXBib2FyZCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NvcHkoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjaygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnR29Gb3J3YXJkKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTdG9wKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdS
ZWxvYWQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgp
OworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKTsKKyAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGlu
ZygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVs
bGluZygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNo
V2ViKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJ
Z25vcmVHcmFtbWFyKCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdyk7CisgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCk7CisgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKTsKKyAgICB2
aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVs
bGluZygpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1l
bnUoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsK
KyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7CisgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CisgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgp
OworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlv
bk1lbnUoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1
bHREaXJlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdSaWdodFRvTGVmdCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSW5zcGVjdEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHNlYXJjaE1lbnVO
b1JlY2VudFNlYXJjaGVzVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVu
dVJlY2VudFNlYXJjaGVzVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVu
dUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWFdl
YkFyZWFUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWExpbmtUZXh0KCk7CisgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBBWExpc3RNYXJrZXJUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyBBWEltYWdlTWFwVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhIZWFk
aW5nVGV4dCgpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhEZWZpbml0aW9uTGlzdFRlcm1U
ZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlv
blRleHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKTsKKyAgICB2
aXJ0dWFsIFdURjo6U3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBX
VEY6OlN0cmluZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgQVhNZW51TGlzdEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IEFYTGlua0FjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1pc3NpbmdQbHVn
aW5UZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpOwor
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBu
dW1iZXJPZkZpbGVzKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVua25vd25GaWxlU2l6ZVRl
eHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgV1RGOjpTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCk7CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRy
b2xFbGVtZW50SGVscFRleHQoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0KTsKKyAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Cisg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRl
eHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1Rl
eHQoKTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRl
cmZsb3dUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJh
bmdlT3ZlcmZsb3dUZXh0KCk7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVN0ZXBNaXNtYXRjaFRleHQoKTsKKworICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOworICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOworCisgICAgUVdlYlBhZ2UqIG1fcGFnZTsKK307
CisKKyNlbmRpZiAvLyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaApkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0ZWM4NjIzLi5hYmU5YTRiIDEw
MDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTA5LTE2ICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1h
ci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24gUXQKKworICAgICAg
ICBbUXRdIFR1cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAqIFdlYktpdDIucHJv
OiBBZGRlZCBBZGRlZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMue2NwcCxofQorCiAyMDEwLTA5LTE2
ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIHRyaXZpYWwgdHlwbyBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYktpdDIucHJvIGIv
V2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCAyOTg3NTYxLi42NmRlZWJjIDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI1Niw2ICsy
NTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVw
TWVudS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBcCkBAIC0zNzAs
NiArMzcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3F0L1dlYkVycm9yc1F0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9x
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgXAotLSAKMS43LjIuMgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>