<?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>172541</bug_id>
          
          <creation_ts>2017-05-24 08:30:42 -0700</creation_ts>
          <short_desc>System sleeps while playing to wireless target, ending stream.</short_desc>
          <delta_ts>2017-05-30 20:24:01 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1312258</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 08:30:42 -0700</bug_when>
    <thetext>System sleeps while playing to wireless target, ending stream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312262</commentid>
    <comment_count>1</comment_count>
      <attachid>311121</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 08:41:37 -0700</bug_when>
    <thetext>Created attachment 311121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312284</commentid>
    <comment_count>2</comment_count>
      <attachid>311123</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 09:54:38 -0700</bug_when>
    <thetext>Created attachment 311123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312290</commentid>
    <comment_count>3</comment_count>
      <attachid>311126</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 10:09:07 -0700</bug_when>
    <thetext>Created attachment 311126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312314</commentid>
    <comment_count>4</comment_count>
      <attachid>311134</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 11:05:53 -0700</bug_when>
    <thetext>Created attachment 311134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312316</commentid>
    <comment_count>5</comment_count>
      <attachid>311136</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-24 11:11:59 -0700</bug_when>
    <thetext>Created attachment 311136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312390</commentid>
    <comment_count>6</comment_count>
      <attachid>311136</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-24 14:04:58 -0700</bug_when>
    <thetext>Comment on attachment 311136
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        one that is playing but not visible, and one that is playing remotely.

Nit: &quot;one that is&quot; =&gt; &quot;and one that is&quot;

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6356
&gt; +            m_sleepDisabler = SleepDisabler::create(&quot;com.apple.WebCore: HTMLMediaElement playback&quot;, type);

Nit: it may help debugging later if the type is in the name string.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6360
&gt; +        m_player-&gt;setShouldDisableSleep(shouldDisableSleep == SleepType::Display);

Nit: setShouldDisableSleep should probably be renamed to something like setShouldDisableDisplaySleep</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312813</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-05-25 13:03:31 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #6)
&gt; Comment on attachment 311136 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311136&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        one that is playing but not visible, and one that is playing remotely.
&gt; 
&gt; Nit: &quot;one that is&quot; =&gt; &quot;and one that is&quot;

?

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:6356
&gt; &gt; +            m_sleepDisabler = SleepDisabler::create(&quot;com.apple.WebCore: HTMLMediaElement playback&quot;, type);
&gt; 
&gt; Nit: it may help debugging later if the type is in the name string.

In `pmset -g assertions` it displays the type immediately before the string passed in here, which is why I didn&apos;t add it to the string itself. If we add logging for sleep assertions, we can just add the type to the log string itself.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:6360
&gt; &gt; +        m_player-&gt;setShouldDisableSleep(shouldDisableSleep == SleepType::Display);
&gt; 
&gt; Nit: setShouldDisableSleep should probably be renamed to something like
&gt; setShouldDisableDisplaySleep

Ok, but I&apos;d prefer to do that in a future patch (it&apos;ll touch a lot of files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312865</commentid>
    <comment_count>8</comment_count>
      <attachid>311136</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-25 14:05:29 -0700</bug_when>
    <thetext>Comment on attachment 311136
Patch

Clearing flags on attachment: 311136

Committed r217447: &lt;http://trac.webkit.org/changeset/217447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312866</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-25 14:05:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314040</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:24:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479770&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311121</attachid>
            <date>2017-05-24 08:41:37 -0700</date>
            <delta_ts>2017-05-24 09:54:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172541-20170524084135.patch</filename>
            <type>text/plain</type>
            <size>28484</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzMDFhYjAwODAyMGY3
MjIzYmUzYTExNjM5NDdlNjM5M2ZmYTQyZC4uZTEwN2M4YmE4OTkxYTM3MGNhZDkzMGNiN2Y2Yzky
MzkzZDZjNzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA1LTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hp
bGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdDogVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQorCisgICAgICAgIEtlZXAgdGhlIHN5c3Rl
bSBmcm9tIHNsZWVwaW5nIChidXQgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXApIHdoaWxlIHBs
YXlpbmcgbWVkaWEgdG8gYSB3aXJlbGVzcyB0YXJnZXQuCisKKyAgICAgICAgR2l2ZSB0aGUgU2xl
ZXBEaXNhYmxlciBhIFR5cGUsIGVpdGhlciBTeXN0ZW0gb3IgRGlzcGxheSwgd2hpY2ggaW5kaWNh
dGVzIHdoYXQga2luZCBvZiBzbGVlcCB0byBkaXNhYmxlLgorICAgICAgICBVcGRhdGUgSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGEgdmlkZW8gd2hpY2ggaXMgcGxheWluZyBsb2NhbGx5LAorICAgICAgICBvbmUgdGhhdCBpcyBw
bGF5aW5nIGJ1dCBub3QgdmlzaWJsZSwgYW5kIG9uZSB0aGF0IGlzIHBsYXlpbmcgcmVtb3RlbHku
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTbGVlcERpc2FibGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
aG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6
OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGVlcERp
c2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29hOjpT
bGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29h
Ojp+U2xlZXBEaXNhYmxlckNvY29hKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1
cGRhdGVQb3dlckFzc2VydGlvbnNdKToKKwogMjAxNy0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGlzcGxheVNsZWVwRGlzYWJsZXIgLT4g
U2xlZXBEaXNhYmxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggZjM4MWQxNjUzMDFlNDhmMjVlNGIzZTk3MTllMWJjOTZkZTQ0Y2JiNS4uYzU3NjJmNTEwYzMz
ZDIxYzRiYzA4ZDY1NDk0OTk5YTM2N2ViY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NDIwLDYgKzU0MjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVk
aWFQbAogICAgIG1fbWVkaWFTZXNzaW9uLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRDaGFuZ2VkKG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CiAgICAgbV9tZWRpYVNlc3Np
b24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0
ZVN0YXRlOjpBc3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKIH0K
IAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKQEAg
LTYzNDUsMjYgKzYzNDYsMzggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphcHBseU1lZGlhRnJh
Z21lbnRVUkkoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJsaW5n
KCkKIHsKLSAgICBib29sIHNob3VsZERpc2FibGVTbGVlcCA9IHRoaXMtPnNob3VsZERpc2FibGVT
bGVlcCgpOwotICAgIGlmICghc2hvdWxkRGlzYWJsZVNsZWVwICYmIG1fc2xlZXBEaXNhYmxlcikK
KyAgICBTbGVlcFR5cGUgc2hvdWxkRGlzYWJsZVNsZWVwID0gdGhpcy0+c2hvdWxkRGlzYWJsZVNs
ZWVwKCk7CisgICAgaWYgKHNob3VsZERpc2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6Ok5vbmUgJiYg
bV9zbGVlcERpc2FibGVyKQogICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBudWxscHRyOwotICAg
IGVsc2UgaWYgKHNob3VsZERpc2FibGVTbGVlcCAmJiAhbV9zbGVlcERpc2FibGVyKQotICAgICAg
ICBtX3NsZWVwRGlzYWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJD
b3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIik7CisgICAgZWxzZSBpZiAoc2hvdWxkRGlz
YWJsZVNsZWVwICE9IFNsZWVwVHlwZTo6Tm9uZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBzaG91
bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5ID8gU2xlZXBEaXNhYmxlcjo6VHlw
ZTo6RGlzcGxheSA6IFNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbTsKKyAgICAgICAgaWYgKCFt
X3NsZWVwRGlzYWJsZXIgfHwgbV9zbGVlcERpc2FibGVyLT50eXBlKCkgIT0gdHlwZSkKKyAgICAg
ICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siLCB0eXBlKTsKKyAgICB9CiAKICAg
ICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZXRTaG91bGREaXNhYmxlU2xlZXAo
c2hvdWxkRGlzYWJsZVNsZWVwKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFNob3VsZERpc2FibGVT
bGVlcChzaG91bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5KTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdAorSFRNTE1lZGlh
RWxlbWVudDo6U2xlZXBUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gU2xlZXBUeXBlOjpOb25lOwogI2VuZGlmCisgICAgaWYgKCFtX3BsYXllciB8fCBtX3Bs
YXllci0+cGF1c2VkKCkgfHwgbG9vcCgpKQorICAgICAgICByZXR1cm4gU2xlZXBUeXBlOjpOb25l
OworCisgICAgLy8gSWYgdGhlIG1lZGlhIGlzIHBsYXlpbmcgcmVtb3RlbHksIHdlIGNhbid0IGtu
b3cgZGVmaW5pdGl2ZWx5IHdoZXRoZXIgaXQgaGFzIGF1ZGlvIG9yIHZpZGVvIHRyYWNrcy4KKyAg
ICBpZiAobV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KQorICAgICAgICByZXR1cm4gU2xlZXBU
eXBlOjpTeXN0ZW07CisKKyAgICBpZiAoIWhhc1ZpZGVvKCkgfHwgIWhhc0F1ZGlvKCkpCisgICAg
ICAgIHJldHVybiBTbGVlcFR5cGU6Ok5vbmU7CiAKICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4p
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVt
OwogCi0gICAgcmV0dXJuIG1fcGxheWVyICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlk
ZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29wKCk7CisgICAgcmV0dXJuIFNsZWVwVHlwZTo6RGlz
cGxheTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2NTA2Mjcx
M2RiYzJhZWRmNjMxNDhlZDdlNWVhMDU0MDk2MDE4ZWI5Li5hOWViZGI2MmVkNzMzN2M0MDA4YjE1
YjkyMDM0ZTU5MzYxMGE3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtNjc4LDcgKzY3OCw3IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbWVkaWFQbGF5ZXJS
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdCBmaW5hbDsKICAgICBWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1lZGlhUGxheWVyRnVsbHNjcmVlbk1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmdWxs
c2NyZWVuTW9kZSgpOyB9Ci0gICAgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgpOyB9CisgICAgYm9vbCBt
ZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3Vs
ZERpc2FibGVTbGVlcCgpID09IFNsZWVwVHlwZTo6RGlzcGxheTsgfQogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIGZpbmFsOwpAQCAtNzkwLDcgKzc5MCwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyRW51bXM6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKLSAgICBib29sIHNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0OworICAgIGVudW0gY2xhc3MgU2xlZXBUeXBlIHsKKyAgICAgICAgTm9uZSwK
KyAgICAgICAgRGlzcGxheSwKKyAgICAgICAgU3lzdGVtLAorICAgIH07CisgICAgU2xlZXBUeXBl
IHNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xT
X1NDUklQVCkKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNh
Ymxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRl
eCAxZWMyODdmZjkxMTNmN2VmZDI3MTI0YzVhYzYxMWIzZGQwZmJhOGU5Li5iMjQzZTc3ZDk0MzM2
MTBjYzllOTVjYjViOWVmMzkwNTlmNzc0ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcApAQCAtMjksMTMgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4g
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0
cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29u
LCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PihuZXcgU2xlZXBEaXNhYmxlcihyZWFzb24pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkpOwogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihj
b25zdCBjaGFyKikKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5
cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TbGVlcERpc2FibGVyLmgKaW5kZXggM2JmYWI5NWE3MjRmYzAzYTY3YWU5NjIyZWJjM2M2YzY2
NzAzYjNkZS4uOTcxN2U5YTIwMWI2ZWVkNDBjZGE2YjZlOGJmNDdmZjFlYmU2ZTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjksMTEgKzI5LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgY2hhciop
OworICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFN5c3RlbSwKKyAgICAgICAgRGlzcGxh
eSwKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TbGVl
cERpc2FibGVyKCk7CiAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KwogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hh
ciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUp
OworICAgIFR5cGUgbV90eXBlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKaW5kZXggYTFiNTIwMDFlY2Y0MDNm
YmQxNjBkNDBhOTBlNTBhMmNlYWI3ZDE5MS4uZTg5ZWVkODI3MWYyZDdjYzI5N2Y4OTliODkxM2U1
N2E2OTViMmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
bGVlcERpc2FibGVyQ29jb2EuY3BwCkBAIC0zMywyMiArMzMsMzYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6
Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNh
YmxlckNvY29hKHJlYXNvbikpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNh
Ymxlcj4obmV3IFNsZWVwRGlzYWJsZXJDb2NvYShyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBE
aXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uKQotICAg
IDogU2xlZXBEaXNhYmxlcihyZWFzb24pCi0gICAgLCBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3Nl
cnRpb24oMCkKK1NsZWVwRGlzYWJsZXJDb2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNo
YXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24sIHR5cGUp
CisgICAgLCBtX3NsZWVwQXNzZXJ0aW9uKDApCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiByZWFzb25DRiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIElPUE1Bc3Nl
cnRpb25DcmVhdGVXaXRoRGVzY3JpcHRpb24oa0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJ
ZGxlRGlzcGxheVNsZWVwLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgMCwgbnVsbHB0ciwgJm1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisKKyAgICBD
RlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
VHlwZTo6RGlzcGxheToKKyAgICAgICAgYXNzZXJ0aW9uVHlwZSA9IGtJT1BNQXNzZXJ0aW9uVHlw
ZVByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpTeXN0ZW06CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBrSU9QTUFzc2VydGlvblR5cGVQ
cmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBu
dWxscHRyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdp
dGhEZXNjcmlwdGlvbihhc3NlcnRpb25UeXBlLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgJm1fc2xlZXBBc3NlcnRpb24pOwogfQogCiBTbGVl
cERpc2FibGVyQ29jb2E6On5TbGVlcERpc2FibGVyQ29jb2EoKQogewotICAgIElPUE1Bc3NlcnRp
b25SZWxlYXNlKG1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisgICAgSU9QTUFzc2Vy
dGlvblJlbGVhc2UobV9zbGVlcEFzc2VydGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgKaW5kZXggOWIwYjc0ZWI4
YzVkMDQwMzhiMDAyNmY3N2MxNmJiM2E0MTlkN2M0OS4uMTk2ODQwMTIyNWMxNmU3MjBlMjAwMzc3
NDRmZjUzYWUyN2Q3Zjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKQEAgLTMzLDExICszMywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNsZWVwRGlzYWJsZXJDb2NvYSA6IHB1YmxpYyBTbGVlcERpc2FibGVy
IHsKIHB1YmxpYzoKLSAgICBTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciopOworICAgIFNs
ZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBE
aXNhYmxlckNvY29hKCk7CiAKIHByaXZhdGU6Ci0gICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxh
eVNsZWVwQXNzZXJ0aW9uOworICAgIHVpbnQzMl90IG1fc2xlZXBBc3NlcnRpb247CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IDYyNTc5MTc0NjYzMzkyZmQyMjZiMzJlZTY0OTc1
ZTQ0YjM2ZTEwYTIuLmVhMjQ3ZWRhMjA5YzI2MWYwZmYyMGVhMTE5ZGU5YzdhN2FiNmI5OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAodm9pZCl1cGRhdGVQ
b3dlckFzc2VydGlvbnMKICAgICAKICAgICBpZiAocmF0ZSAmJiAhX2lzRW5kaW5nRnVsbHNjcmVl
bikgewogICAgICAgICBpZiAoIV9kaXNwbGF5U2xlZXBEaXNhYmxlcikKLSAgICAgICAgICAgIF9k
aXNwbGF5U2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YkNvcmUgLSBGdWxsc2NyZWVuIHZpZGVvIik7CisgICAgICAgICAgICBfZGlzcGxheVNsZWVwRGlz
YWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlIC0gRnVsbHNj
cmVlbiB2aWRlbyIsIFNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkpOwogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgICAgIF9kaXNwbGF5U2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWZjZjA0MzU1OWRl
NWJmZTE2OWY3ZTUxZWM2NGFmYWZkZTk2MTViYy4uMDY0ZWM5NWNmNWVjYjNiYWEyNWM4NGY3Njk0
NzcwYWUzNjBlYThhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hpbGUgcGxheWluZyB0byB3
aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW06IEFkZGVk
LgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Mb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1b
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjpd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRlS2V5RG93bik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpoYXNBc3NlcnRpb25UeXBlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE3LTA1LTIyICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBVbnJldmlld2VkLCBjaGFuZ2UgbXkgc3RhdHVzIHRvIHJldmlld2Vy
IGFuZCBmaWxsICJleHBlcnRpc2UiIGZpZWxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVl
NzNiOTQ2MTFjM2M3ODQ1NmVhZWY1YTZjZTUxNzM4ZWEwNzAxMGQuLjk5Njk5MmY5OWQyNmFiM2Rm
NWU2MTEzMjdlYzM0OTc1ZjU1MzcwZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODAs
NiArNTgwLDkgQEAKIAkJQ0Q3OEUxMUQxREI3RUE2NjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NzhFMTFBMURCN0VBMzYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUubW0gKi87IH07CiAJ
CUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDc4RTEx
QjFEQjdFQTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLmh0bWwgKi87IH07CiAJCUNE
OUUyOTJFMUM5MEMzM0YwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RTI5MkQxQzkwQzFCQTAw
MEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCAqLzsgfTsKKwkJQ0RBMzE1OTgxRUQ1MzY1MTAwOUY2
MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi87IH07CisJCUNEQTMxNTlBMUVENTQ4RjEw
MDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEzMTU5OTFFRDU0MEE1
MDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgKi87IH07CisJCUNE
QTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEzMTU5QzFFRDU2NDNGMDA5RjYw
RDMgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9OwogCQlDREI0MTE1QTFFMEIwMERCMDBFQUQzNTIg
LyogdmlkZW8td2l0aC1tdXRlZC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjQxMTU5MUUwOURBOEUwMEVBRDM1MiAvKiB2
aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwgKi87IH07CiAJCUNEQkZDQzQ1MUE5RkY0NTMwMEE3
QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQkZDQzQzMUE5RkY0NDgwMEE3QjY5MSAvKiBG
dWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLzsgfTsKIAkJQ0RCRkNDNDYxQTlGRjQ5RTAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCRkNDNDIxQTlGRjQ0ODAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi87IH07CkBAIC02OTIs
NiArNjk1LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRz
dFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJQ0RBMzE1OUExRUQ1NDhGMTAw
OUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUM5QjEwNDNFMUVDRjk4NDgwMDA1MjBGQSAvKiBhdXRvcGxheS1pbmhlcml0
cy1nZXN0dXJlLWZyb20tZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkz
RkNDNEZFODFFQzRFOENBMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxh
cmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE0NzYs
NiArMTQ4MCw5IEBACiAJCUNEODlEMDM4MUM0RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RTI5MkIx
QzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVxdWlyZXNVc2VyQWN0aW9uRm9y
UGxheWJhY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUUyOTJEMUM5MEMx
QkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiYXVkaW8tb25seS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1
OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1OTkxRUQ1NDBBNTAwOUY2MEQzIC8qIE1lZGlh
UGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTMxNTlDMUVE
NTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQ0RCNDExNTkxRTA5REE4RTAwRUFEMzUy
IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJ2aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFs
RnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5p
dGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQzMUE5
RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1l
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3Nyw2ICsxNTg0LDcgQEAKIAkJ
CWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUNEQTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJ
T0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk2MzQ5MTBFMDFFOUQzRkYzMDA4
ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdB
MDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHls
aWIgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE4NzAsNiArMTg3OCw3IEBACiAJCTdDODNFMDI4MUQw
QTVDREYwMEZFQkNGMyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDREEzMTU5QzFFRDU2NDNGMDA5RjYwRDMgLyogSU9LaXQuZnJh
bWV3b3JrICovLAogCQkJCTYzNDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24u
ZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhp
Y3MuZnJhbWV3b3JrICovLAogCQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vj
b3JlLmR5bGliICovLApAQCAtMjQxNCw2ICsyNDIzLDcgQEAKIAkJCQlBNUUyMDI3MjE1QjIxODE5
MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJRjRGQTkx
N0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld1NlbGVjdGlvblRlc3RzLm1tICovLAogCQkJ
CTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVz
Lm1tICovLAorCQkJCUNEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNDUxLDYgKzI0NjEsNyBAQAogCQkJCTUzNjc3MDM1MUNDODEyRjkw
MEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovLAogCQkJCUNFMTRG
MUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFz
aC5odG1sICovLAogCQkJCUE1RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2Vi
Vmlld1dpdGhNZWRpYS5odG1sICovLAorCQkJCUNEQTMxNTk5MUVENTQwQTUwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVz
b3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5NjAsNiArMjk3MSw3IEBA
CiAJCQkJN0NDRTdFQjIxQTQxMUE1MTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0Nh
Y2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8q
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQTMxNTk4
MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1QzBCRjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjcxRDBBNjRCODAwRkVCQ0YzIC8q
IE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODk0
MURENTk5QzkwMEIwMDMyOCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9N
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTEwYTZlNjk1NzIz
YTVmMjIwY2JkMWNiNjE5YzY2ZWM5YmQ3Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwKQEAg
LTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKKworICAgICAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgbmV4dHN0ZXApOworCisgICAg
ICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExp
c3RlbmVyKCdwbGF5aW5nJywgb25wbGF5aW5nKTsKKyAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50
TGlzdGVuZXIoJ3BhdXNlJywgb25wYXVzZSk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExp
c3RlbmVyKCd3ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcsIG9u
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQpOworICAgICAgICAgICAgd2lu
ZG93LmxvY2F0aW9uID0gJ2NhbGxiYWNrOmxvYWRlZCc7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbnBsYXlpbmcoZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGV2ZW50
LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwbGF5aW5n
JzsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9ucGF1c2UoZXZlbnQpIHsKKyAgICAg
ICAgICAgIHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2Nh
dGlvbiA9ICdjYWxsYmFjazpwYXVzZWQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25jdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZChldmVudCkgeworICAgICAg
ICAgICAgdmFyIHZpZGVvID0gZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgd2luZG93LmxvY2F0
aW9uID0gdmlkZW8ud2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyA/ICdjYWxs
YmFjazpyZW1vdGUtc3RhcnQnIDogJ2NhbGxiYWNrOnJlbW90ZS1lbmQnOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gbmV4dHN0ZXAoKSB7CisgICAgICAgICAgICB2YXIgdmlkZW8gPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOworICAgICAgICAgICAgaWYgKCF2aWRlby53
ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKSB7CisgICAgICAgICAgICAgICAg
aWYgKHZpZGVvLnBhdXNlZCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2aWRlby53ZWJraXRTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSgnU2xlZXB5IFRWJywgJ0RldmljZUF2YWlsYWJsZScp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF2aWRlby5wYXVzZWQpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLndlYmtp
dFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOworICAgICAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKCdTbGVlcHkgVFYnLCAnRGV2aWNlVW5hdmFp
bGFibGUnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VGVzdCk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRoLWF1
ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZjJjMWI2MTg0Y2EzNTVlMTMyMGE0MTc4ZDE5YTY1YTBjNDc3YmYzCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLm1tCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHMu
aD4KKyNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0TGVnYWN5Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0
YXRpYyBib29sIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEJlZ2luUGxh
eWluZyA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEVu
ZFJlbW90ZVBsYXliYWNrID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERl
bGVnYXRlCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IGZvckZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lCit7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29u
dGV4dC5KU0dsb2JhbENvbnRleHRSZWYpOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lZGlhUGxh
eWJhY2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlIDogTlNPYmplY3Q8V2ViUG9saWN5RGVs
ZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRp
b25Qb2xpY3lEZWxlZ2F0ZQorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihOU0RpY3Rpb25hcnkgKilhY3Rpb25JbmZvcm1h
dGlvbiByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lIGRlY2lzaW9uTGlzdGVuZXI6KGlkPFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI+KWxpc3Rl
bmVyCit7CisgICAgTlNVUkwqIFVSTCA9IHJlcXVlc3QuVVJMOworICAgIGlmIChbVVJMLnNjaGVt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJjYWxsYmFjayJdKSB7CisgICAgICAgIGlmIChbVVJMLnJlc291
cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJdKQorICAgICAgICAgICAgZGlk
RmluaXNoTG9hZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKFtVUkwucmVzb3VyY2VTcGVjaWZp
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGxheWluZyJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBs
YXlpbmcgPSB0cnVlOworICAgICAgICAgICAgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInBh
dXNlZCJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGRpZFN0b3BQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChbVVJMLnJlc291
cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInJlbW90ZS1zdGFydCJdKSB7CisgICAgICAg
ICAgICBkaWRCZWdpblJlbW90ZVBsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGRpZEVuZFJl
bW90ZVBsYXliYWNrID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoW1VSTC5yZXNvdXJjZVNw
ZWNpZmllciBpc0VxdWFsVG9TdHJpbmc6QCJyZW1vdGUtZW5kIl0pIHsKKyAgICAgICAgICAgIGRp
ZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpZEVuZFJlbW90ZVBs
YXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFtsaXN0ZW5lciBpZ25vcmVdOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW2xpc3RlbmVyIHVzZV07Cit9CitAZW5kCisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgc2ltdWxhdGVLZXlEb3du
KE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQ
b2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOjAKKyAgICAgICAgdGltZXN0YW1wOkdl
dEN1cnJlbnRFdmVudFRpbWUoKQorICAgICAgICB3aW5kb3dOdW1iZXI6d2luZG93LndpbmRvd051
bWJlcgorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0K
KyAgICAgICAgY2hhcmFjdGVyczpAIiAiCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyczpAIiAiCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOjB4MzFdOwor
CisgICAgW3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBr
ZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtl
UG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczowCisgICAgICAgIHRpbWVzdGFtcDpH
ZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgd2luZG93TnVtYmVyOndpbmRvdy53aW5kb3dO
dW1iZXIKKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgIGNoYXJhY3RlcnM6QCIgIgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6QCIgIgorICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZToweDMxXTsK
KworICAgIFt3aW5kb3cgc2VuZEV2ZW50OmV2ZW50XTsKK30KKworc3RhdGljIGJvb2wgaGFzQXNz
ZXJ0aW9uVHlwZShDRlN0cmluZ1JlZiB0eXBlKQoreworICAgIGludDMyX3QgcGlkID0gZ2V0cGlk
KCk7CisgICAgYXV0byBjZlBpZCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnBpZCkpOworICAgIENGRGljdGlvbmFyeVJl
ZiBiYXJlQXNzZXJ0aW9uc0J5UElEID0gbnVsbHB0cjsKKworICAgIElPUE1Db3B5QXNzZXJ0aW9u
c0J5UHJvY2VzcygmYmFyZUFzc2VydGlvbnNCeVBJRCk7CisgICAgaWYgKCFiYXJlQXNzZXJ0aW9u
c0J5UElEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFzc2VydGlvbnNCeVBJ
RCA9IGFkb3B0Q0YoYmFyZUFzc2VydGlvbnNCeVBJRCk7CisKKyAgICBDRkFycmF5UmVmIGFzc2Vy
dGlvbnMgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShhc3NlcnRpb25zQnlQSUQu
Z2V0KCksIGNmUGlkLmdldCgpKTsKKyAgICBpZiAoIWFzc2VydGlvbnMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291
bnQoYXNzZXJ0aW9ucyk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJl
ZiBhc3NlcnRpb24gPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXNz
ZXJ0aW9ucywgaSk7CisgICAgICAgIENGU3RyaW5nUmVmIGFzc2VydGlvblR5cGUgPSAoQ0ZTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXNzZXJ0aW9uLCBrSU9QTUFzc2VydGlvblR5cGVL
ZXkpOworICAgICAgICBpZiAoQ0ZFcXVhbCh0eXBlLCBhc3NlcnRpb25UeXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1RFU1QoV2Vi
S2l0MSwgTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uKQoreworICAgIGRpZEZpbmlzaExvYWQg
PSBmYWxzZTsKKyAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBkaWRTdG9wUGxheWlu
ZyA9IGZhbHNlOworICAgIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICBkaWRF
bmRSZW1vdGVQbGF5YmFjayA9IGZhbHNlOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OworICAgICAgICBhdXRvIGZyYW1lTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tTbGVlcEFzc2VydGlvbkxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRv
IHBvbGljeURlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvblBv
bGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgYXV0byB3aW5kb3cgPSBhZG9w
dE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVd
IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5QW5kT3Jk
ZXJGcm9udDpuaWxdOworCisgICAgICAgIHdlYlZpZXcuZ2V0KCkucG9saWN5RGVsZWdhdGUgPSBw
b2xpY3lEZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxl
Z2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOworICAgICAgICBXZWJGcmFtZSAqbWFpbkZy
YW1lID0gd2ViVmlldy5nZXQoKS5tYWluRnJhbWU7CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICAgICAgVXRp
bDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwor
CisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNl
cklkbGVEaXNwbGF5U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9u
VHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisgICAgICAgIHNp
bXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4oJmRpZEJlZ2lu
UGxheWluZyk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigi
UHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhh
c0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKwor
ICAgICAgICBzaW11bGF0ZUtleURvd24od2luZG93LmdldCgpKTsKKyAgICAgICAgVXRpbDo6cnVu
KCZkaWRCZWdpblJlbW90ZVBsYXliYWNrKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNz
ZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lz
dGVtU2xlZXAiKSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOwor
ICAgICAgICBVdGlsOjpydW4oJmRpZFN0b3BQbGF5aW5nKTsKKworICAgICAgICBFWFBFQ1RfRkFM
U0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRV
c2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKyAgICB9Cit9CisKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311123</attachid>
            <date>2017-05-24 09:54:38 -0700</date>
            <delta_ts>2017-05-24 10:09:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172541-20170524095436.patch</filename>
            <type>text/plain</type>
            <size>28484</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAzOTI2ZWM3YzY3OWQ3
MzZlODc2NzNiZDA3NjUwMzFlYTgxYWM0NC4uZmM1ZDA4YjU5ZGVlMTlmNDE2ZDJmYzcyNjhkZWZi
ZTY0YTI5YzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA1LTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hp
bGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdDogVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQorCisgICAgICAgIEtlZXAgdGhlIHN5c3Rl
bSBmcm9tIHNsZWVwaW5nIChidXQgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXApIHdoaWxlIHBs
YXlpbmcgbWVkaWEgdG8gYSB3aXJlbGVzcyB0YXJnZXQuCisKKyAgICAgICAgR2l2ZSB0aGUgU2xl
ZXBEaXNhYmxlciBhIFR5cGUsIGVpdGhlciBTeXN0ZW0gb3IgRGlzcGxheSwgd2hpY2ggaW5kaWNh
dGVzIHdoYXQga2luZCBvZiBzbGVlcCB0byBkaXNhYmxlLgorICAgICAgICBVcGRhdGUgSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGEgdmlkZW8gd2hpY2ggaXMgcGxheWluZyBsb2NhbGx5LAorICAgICAgICBvbmUgdGhhdCBpcyBw
bGF5aW5nIGJ1dCBub3QgdmlzaWJsZSwgYW5kIG9uZSB0aGF0IGlzIHBsYXlpbmcgcmVtb3RlbHku
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTbGVlcERpc2FibGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
aG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6
OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGVlcERp
c2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29hOjpT
bGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29h
Ojp+U2xlZXBEaXNhYmxlckNvY29hKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1
cGRhdGVQb3dlckFzc2VydGlvbnNdKToKKwogMjAxNy0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGlzcGxheVNsZWVwRGlzYWJsZXIgLT4g
U2xlZXBEaXNhYmxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggZjM4MWQxNjUzMDFlNDhmMjVlNGIzZTk3MTllMWJjOTZkZTQ0Y2JiNS4uYzU3NjJmNTEwYzMz
ZDIxYzRiYzA4ZDY1NDk0OTk5YTM2N2ViY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NDIwLDYgKzU0MjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVk
aWFQbAogICAgIG1fbWVkaWFTZXNzaW9uLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRDaGFuZ2VkKG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CiAgICAgbV9tZWRpYVNlc3Np
b24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0
ZVN0YXRlOjpBc3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKIH0K
IAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKQEAg
LTYzNDUsMjYgKzYzNDYsMzggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphcHBseU1lZGlhRnJh
Z21lbnRVUkkoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJsaW5n
KCkKIHsKLSAgICBib29sIHNob3VsZERpc2FibGVTbGVlcCA9IHRoaXMtPnNob3VsZERpc2FibGVT
bGVlcCgpOwotICAgIGlmICghc2hvdWxkRGlzYWJsZVNsZWVwICYmIG1fc2xlZXBEaXNhYmxlcikK
KyAgICBTbGVlcFR5cGUgc2hvdWxkRGlzYWJsZVNsZWVwID0gdGhpcy0+c2hvdWxkRGlzYWJsZVNs
ZWVwKCk7CisgICAgaWYgKHNob3VsZERpc2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6Ok5vbmUgJiYg
bV9zbGVlcERpc2FibGVyKQogICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBudWxscHRyOwotICAg
IGVsc2UgaWYgKHNob3VsZERpc2FibGVTbGVlcCAmJiAhbV9zbGVlcERpc2FibGVyKQotICAgICAg
ICBtX3NsZWVwRGlzYWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJD
b3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIik7CisgICAgZWxzZSBpZiAoc2hvdWxkRGlz
YWJsZVNsZWVwICE9IFNsZWVwVHlwZTo6Tm9uZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBzaG91
bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5ID8gU2xlZXBEaXNhYmxlcjo6VHlw
ZTo6RGlzcGxheSA6IFNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbTsKKyAgICAgICAgaWYgKCFt
X3NsZWVwRGlzYWJsZXIgfHwgbV9zbGVlcERpc2FibGVyLT50eXBlKCkgIT0gdHlwZSkKKyAgICAg
ICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siLCB0eXBlKTsKKyAgICB9CiAKICAg
ICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZXRTaG91bGREaXNhYmxlU2xlZXAo
c2hvdWxkRGlzYWJsZVNsZWVwKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFNob3VsZERpc2FibGVT
bGVlcChzaG91bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5KTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdAorSFRNTE1lZGlh
RWxlbWVudDo6U2xlZXBUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gU2xlZXBUeXBlOjpOb25lOwogI2VuZGlmCisgICAgaWYgKCFtX3BsYXllciB8fCBtX3Bs
YXllci0+cGF1c2VkKCkgfHwgbG9vcCgpKQorICAgICAgICByZXR1cm4gU2xlZXBUeXBlOjpOb25l
OworCisgICAgLy8gSWYgdGhlIG1lZGlhIGlzIHBsYXlpbmcgcmVtb3RlbHksIHdlIGNhbid0IGtu
b3cgZGVmaW5pdGl2ZWx5IHdoZXRoZXIgaXQgaGFzIGF1ZGlvIG9yIHZpZGVvIHRyYWNrcy4KKyAg
ICBpZiAobV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KQorICAgICAgICByZXR1cm4gU2xlZXBU
eXBlOjpTeXN0ZW07CisKKyAgICBpZiAoIWhhc1ZpZGVvKCkgfHwgIWhhc0F1ZGlvKCkpCisgICAg
ICAgIHJldHVybiBTbGVlcFR5cGU6Ok5vbmU7CiAKICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4p
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVt
OwogCi0gICAgcmV0dXJuIG1fcGxheWVyICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlk
ZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29wKCk7CisgICAgcmV0dXJuIFNsZWVwVHlwZTo6RGlz
cGxheTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2NTA2Mjcx
M2RiYzJhZWRmNjMxNDhlZDdlNWVhMDU0MDk2MDE4ZWI5Li5hOWViZGI2MmVkNzMzN2M0MDA4YjE1
YjkyMDM0ZTU5MzYxMGE3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtNjc4LDcgKzY3OCw3IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbWVkaWFQbGF5ZXJS
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdCBmaW5hbDsKICAgICBWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1lZGlhUGxheWVyRnVsbHNjcmVlbk1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmdWxs
c2NyZWVuTW9kZSgpOyB9Ci0gICAgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgpOyB9CisgICAgYm9vbCBt
ZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3Vs
ZERpc2FibGVTbGVlcCgpID09IFNsZWVwVHlwZTo6RGlzcGxheTsgfQogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIGZpbmFsOwpAQCAtNzkwLDcgKzc5MCwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyRW51bXM6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKLSAgICBib29sIHNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0OworICAgIGVudW0gY2xhc3MgU2xlZXBUeXBlIHsKKyAgICAgICAgTm9uZSwK
KyAgICAgICAgRGlzcGxheSwKKyAgICAgICAgU3lzdGVtLAorICAgIH07CisgICAgU2xlZXBUeXBl
IHNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xT
X1NDUklQVCkKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNh
Ymxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRl
eCAxZWMyODdmZjkxMTNmN2VmZDI3MTI0YzVhYzYxMWIzZGQwZmJhOGU5Li5iMjQzZTc3ZDk0MzM2
MTBjYzllOTVjYjViOWVmMzkwNTlmNzc0ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcApAQCAtMjksMTMgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4g
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0
cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29u
LCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PihuZXcgU2xlZXBEaXNhYmxlcihyZWFzb24pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkpOwogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihj
b25zdCBjaGFyKikKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5
cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TbGVlcERpc2FibGVyLmgKaW5kZXggM2JmYWI5NWE3MjRmYzAzYTY3YWU5NjIyZWJjM2M2YzY2
NzAzYjNkZS4uOTcxN2U5YTIwMWI2ZWVkNDBjZGE2YjZlOGJmNDdmZjFlYmU2ZTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjksMTEgKzI5LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgY2hhciop
OworICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFN5c3RlbSwKKyAgICAgICAgRGlzcGxh
eSwKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TbGVl
cERpc2FibGVyKCk7CiAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KwogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hh
ciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUp
OworICAgIFR5cGUgbV90eXBlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKaW5kZXggYTFiNTIwMDFlY2Y0MDNm
YmQxNjBkNDBhOTBlNTBhMmNlYWI3ZDE5MS4uZTg5ZWVkODI3MWYyZDdjYzI5N2Y4OTliODkxM2U1
N2E2OTViMmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
bGVlcERpc2FibGVyQ29jb2EuY3BwCkBAIC0zMywyMiArMzMsMzYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6
Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNh
YmxlckNvY29hKHJlYXNvbikpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNh
Ymxlcj4obmV3IFNsZWVwRGlzYWJsZXJDb2NvYShyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBE
aXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uKQotICAg
IDogU2xlZXBEaXNhYmxlcihyZWFzb24pCi0gICAgLCBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3Nl
cnRpb24oMCkKK1NsZWVwRGlzYWJsZXJDb2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNo
YXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24sIHR5cGUp
CisgICAgLCBtX3NsZWVwQXNzZXJ0aW9uKDApCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiByZWFzb25DRiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIElPUE1Bc3Nl
cnRpb25DcmVhdGVXaXRoRGVzY3JpcHRpb24oa0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJ
ZGxlRGlzcGxheVNsZWVwLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgMCwgbnVsbHB0ciwgJm1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisKKyAgICBD
RlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
VHlwZTo6RGlzcGxheToKKyAgICAgICAgYXNzZXJ0aW9uVHlwZSA9IGtJT1BNQXNzZXJ0aW9uVHlw
ZVByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpTeXN0ZW06CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBrSU9QTUFzc2VydGlvblR5cGVQ
cmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBu
dWxscHRyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdp
dGhEZXNjcmlwdGlvbihhc3NlcnRpb25UeXBlLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgJm1fc2xlZXBBc3NlcnRpb24pOwogfQogCiBTbGVl
cERpc2FibGVyQ29jb2E6On5TbGVlcERpc2FibGVyQ29jb2EoKQogewotICAgIElPUE1Bc3NlcnRp
b25SZWxlYXNlKG1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisgICAgSU9QTUFzc2Vy
dGlvblJlbGVhc2UobV9zbGVlcEFzc2VydGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgKaW5kZXggOWIwYjc0ZWI4
YzVkMDQwMzhiMDAyNmY3N2MxNmJiM2E0MTlkN2M0OS4uMTk2ODQwMTIyNWMxNmU3MjBlMjAwMzc3
NDRmZjUzYWUyN2Q3Zjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKQEAgLTMzLDExICszMywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNsZWVwRGlzYWJsZXJDb2NvYSA6IHB1YmxpYyBTbGVlcERpc2FibGVy
IHsKIHB1YmxpYzoKLSAgICBTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciopOworICAgIFNs
ZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBE
aXNhYmxlckNvY29hKCk7CiAKIHByaXZhdGU6Ci0gICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxh
eVNsZWVwQXNzZXJ0aW9uOworICAgIHVpbnQzMl90IG1fc2xlZXBBc3NlcnRpb247CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IDYyNTc5MTc0NjYzMzkyZmQyMjZiMzJlZTY0OTc1
ZTQ0YjM2ZTEwYTIuLmVhMjQ3ZWRhMjA5YzI2MWYwZmYyMGVhMTE5ZGU5YzdhN2FiNmI5OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAodm9pZCl1cGRhdGVQ
b3dlckFzc2VydGlvbnMKICAgICAKICAgICBpZiAocmF0ZSAmJiAhX2lzRW5kaW5nRnVsbHNjcmVl
bikgewogICAgICAgICBpZiAoIV9kaXNwbGF5U2xlZXBEaXNhYmxlcikKLSAgICAgICAgICAgIF9k
aXNwbGF5U2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YkNvcmUgLSBGdWxsc2NyZWVuIHZpZGVvIik7CisgICAgICAgICAgICBfZGlzcGxheVNsZWVwRGlz
YWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlIC0gRnVsbHNj
cmVlbiB2aWRlbyIsIFNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkpOwogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgICAgIF9kaXNwbGF5U2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWZjZjA0MzU1OWRl
NWJmZTE2OWY3ZTUxZWM2NGFmYWZkZTk2MTViYy4uMDY0ZWM5NWNmNWVjYjNiYWEyNWM4NGY3Njk0
NzcwYWUzNjBlYThhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hpbGUgcGxheWluZyB0byB3
aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW06IEFkZGVk
LgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Mb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1b
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjpd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRlS2V5RG93bik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpoYXNBc3NlcnRpb25UeXBlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE3LTA1LTIyICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBVbnJldmlld2VkLCBjaGFuZ2UgbXkgc3RhdHVzIHRvIHJldmlld2Vy
IGFuZCBmaWxsICJleHBlcnRpc2UiIGZpZWxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVl
NzNiOTQ2MTFjM2M3ODQ1NmVhZWY1YTZjZTUxNzM4ZWEwNzAxMGQuLjk5Njk5MmY5OWQyNmFiM2Rm
NWU2MTEzMjdlYzM0OTc1ZjU1MzcwZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODAs
NiArNTgwLDkgQEAKIAkJQ0Q3OEUxMUQxREI3RUE2NjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NzhFMTFBMURCN0VBMzYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUubW0gKi87IH07CiAJ
CUNENzhFMTFFMURCN0VFMkEwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDc4RTEx
QjFEQjdFQTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLmh0bWwgKi87IH07CiAJCUNE
OUUyOTJFMUM5MEMzM0YwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RTI5MkQxQzkwQzFCQTAw
MEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCAqLzsgfTsKKwkJQ0RBMzE1OTgxRUQ1MzY1MTAwOUY2
MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi87IH07CisJCUNEQTMxNTlBMUVENTQ4RjEw
MDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEzMTU5OTFFRDU0MEE1
MDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgKi87IH07CisJCUNE
QTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEzMTU5QzFFRDU2NDNGMDA5RjYw
RDMgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9OwogCQlDREI0MTE1QTFFMEIwMERCMDBFQUQzNTIg
LyogdmlkZW8td2l0aC1tdXRlZC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjQxMTU5MUUwOURBOEUwMEVBRDM1MiAvKiB2
aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwgKi87IH07CiAJCUNEQkZDQzQ1MUE5RkY0NTMwMEE3
QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQkZDQzQzMUE5RkY0NDgwMEE3QjY5MSAvKiBG
dWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLzsgfTsKIAkJQ0RCRkNDNDYxQTlGRjQ5RTAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCRkNDNDIxQTlGRjQ0ODAw
QTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi87IH07CkBAIC02OTIs
NiArNjk1LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRz
dFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJQ0RBMzE1OUExRUQ1NDhGMTAw
OUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUM5QjEwNDNFMUVDRjk4NDgwMDA1MjBGQSAvKiBhdXRvcGxheS1pbmhlcml0
cy1nZXN0dXJlLWZyb20tZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkz
RkNDNEZFODFFQzRFOENBMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxh
cmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE0NzYs
NiArMTQ4MCw5IEBACiAJCUNEODlEMDM4MUM0RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RTI5MkIx
QzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVxdWlyZXNVc2VyQWN0aW9uRm9y
UGxheWJhY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOUUyOTJEMUM5MEMx
QkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiYXVkaW8tb25seS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1
OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1OTkxRUQ1NDBBNTAwOUY2MEQzIC8qIE1lZGlh
UGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTMxNTlDMUVE
NTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0
LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQ0RCNDExNTkxRTA5REE4RTAwRUFEMzUy
IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJ2aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFs
RnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5p
dGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQzMUE5
RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1l
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3Nyw2ICsxNTg0LDcgQEAKIAkJ
CWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUNEQTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJ
T0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk2MzQ5MTBFMDFFOUQzRkYzMDA4
ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdB
MDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHls
aWIgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE4NzAsNiArMTg3OCw3IEBACiAJCTdDODNFMDI4MUQw
QTVDREYwMEZFQkNGMyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDREEzMTU5QzFFRDU2NDNGMDA5RjYwRDMgLyogSU9LaXQuZnJh
bWV3b3JrICovLAogCQkJCTYzNDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24u
ZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhp
Y3MuZnJhbWV3b3JrICovLAogCQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vj
b3JlLmR5bGliICovLApAQCAtMjQxNCw2ICsyNDIzLDcgQEAKIAkJCQlBNUUyMDI3MjE1QjIxODE5
MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJRjRGQTkx
N0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld1NlbGVjdGlvblRlc3RzLm1tICovLAogCQkJ
CTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVz
Lm1tICovLAorCQkJCUNEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNDUxLDYgKzI0NjEsNyBAQAogCQkJCTUzNjc3MDM1MUNDODEyRjkw
MEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovLAogCQkJCUNFMTRG
MUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFz
aC5odG1sICovLAogCQkJCUE1RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2Vi
Vmlld1dpdGhNZWRpYS5odG1sICovLAorCQkJCUNEQTMxNTk5MUVENTQwQTUwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVz
b3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5NjAsNiArMjk3MSw3IEBA
CiAJCQkJN0NDRTdFQjIxQTQxMUE1MTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0Nh
Y2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8q
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQTMxNTk4
MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1QzBCRjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjcxRDBBNjRCODAwRkVCQ0YzIC8q
IE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODk0
MURENTk5QzkwMEIwMDMyOCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9N
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTEwYTZlNjk1NzIz
YTVmMjIwY2JkMWNiNjE5YzY2ZWM5YmQ3Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwKQEAg
LTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKKworICAgICAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgbmV4dHN0ZXApOworCisgICAg
ICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExp
c3RlbmVyKCdwbGF5aW5nJywgb25wbGF5aW5nKTsKKyAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50
TGlzdGVuZXIoJ3BhdXNlJywgb25wYXVzZSk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExp
c3RlbmVyKCd3ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcsIG9u
Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQpOworICAgICAgICAgICAgd2lu
ZG93LmxvY2F0aW9uID0gJ2NhbGxiYWNrOmxvYWRlZCc7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbnBsYXlpbmcoZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGV2ZW50
LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwbGF5aW5n
JzsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9ucGF1c2UoZXZlbnQpIHsKKyAgICAg
ICAgICAgIHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2Nh
dGlvbiA9ICdjYWxsYmFjazpwYXVzZWQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25jdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZChldmVudCkgeworICAgICAg
ICAgICAgdmFyIHZpZGVvID0gZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgd2luZG93LmxvY2F0
aW9uID0gdmlkZW8ud2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyA/ICdjYWxs
YmFjazpyZW1vdGUtc3RhcnQnIDogJ2NhbGxiYWNrOnJlbW90ZS1lbmQnOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gbmV4dHN0ZXAoKSB7CisgICAgICAgICAgICB2YXIgdmlkZW8gPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOworICAgICAgICAgICAgaWYgKCF2aWRlby53
ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKSB7CisgICAgICAgICAgICAgICAg
aWYgKHZpZGVvLnBhdXNlZCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2aWRlby53ZWJraXRTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSgnU2xlZXB5IFRWJywgJ0RldmljZUF2YWlsYWJsZScp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF2aWRlby5wYXVzZWQpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLndlYmtp
dFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOworICAgICAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKCdTbGVlcHkgVFYnLCAnRGV2aWNlVW5hdmFp
bGFibGUnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VGVzdCk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRoLWF1
ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZjJjMWI2MTg0Y2EzNTVlMTMyMGE0MTc4ZDE5YTY1YTBjNDc3YmYzCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLm1tCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHMu
aD4KKyNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0TGVnYWN5Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0
YXRpYyBib29sIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEJlZ2luUGxh
eWluZyA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEVu
ZFJlbW90ZVBsYXliYWNrID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERl
bGVnYXRlCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IGZvckZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lCit7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29u
dGV4dC5KU0dsb2JhbENvbnRleHRSZWYpOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lZGlhUGxh
eWJhY2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlIDogTlNPYmplY3Q8V2ViUG9saWN5RGVs
ZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRp
b25Qb2xpY3lEZWxlZ2F0ZQorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihOU0RpY3Rpb25hcnkgKilhY3Rpb25JbmZvcm1h
dGlvbiByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lIGRlY2lzaW9uTGlzdGVuZXI6KGlkPFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI+KWxpc3Rl
bmVyCit7CisgICAgTlNVUkwqIFVSTCA9IHJlcXVlc3QuVVJMOworICAgIGlmIChbVVJMLnNjaGVt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJjYWxsYmFjayJdKSB7CisgICAgICAgIGlmIChbVVJMLnJlc291
cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJdKQorICAgICAgICAgICAgZGlk
RmluaXNoTG9hZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKFtVUkwucmVzb3VyY2VTcGVjaWZp
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGxheWluZyJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBs
YXlpbmcgPSB0cnVlOworICAgICAgICAgICAgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInBh
dXNlZCJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGRpZFN0b3BQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChbVVJMLnJlc291
cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInJlbW90ZS1zdGFydCJdKSB7CisgICAgICAg
ICAgICBkaWRCZWdpblJlbW90ZVBsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGRpZEVuZFJl
bW90ZVBsYXliYWNrID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoW1VSTC5yZXNvdXJjZVNw
ZWNpZmllciBpc0VxdWFsVG9TdHJpbmc6QCJyZW1vdGUtZW5kIl0pIHsKKyAgICAgICAgICAgIGRp
ZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpZEVuZFJlbW90ZVBs
YXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFtsaXN0ZW5lciBpZ25vcmVdOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW2xpc3RlbmVyIHVzZV07Cit9CitAZW5kCisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgc2ltdWxhdGVLZXlEb3du
KE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQ
b2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOjAKKyAgICAgICAgdGltZXN0YW1wOkdl
dEN1cnJlbnRFdmVudFRpbWUoKQorICAgICAgICB3aW5kb3dOdW1iZXI6d2luZG93LndpbmRvd051
bWJlcgorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0K
KyAgICAgICAgY2hhcmFjdGVyczpAIiAiCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyczpAIiAiCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOjB4MzFdOwor
CisgICAgW3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBr
ZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtl
UG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczowCisgICAgICAgIHRpbWVzdGFtcDpH
ZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgd2luZG93TnVtYmVyOndpbmRvdy53aW5kb3dO
dW1iZXIKKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgIGNoYXJhY3RlcnM6QCIgIgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6QCIgIgorICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZToweDMxXTsK
KworICAgIFt3aW5kb3cgc2VuZEV2ZW50OmV2ZW50XTsKK30KKworc3RhdGljIGJvb2wgaGFzQXNz
ZXJ0aW9uVHlwZShDRlN0cmluZ1JlZiB0eXBlKQoreworICAgIGludDMyX3QgcGlkID0gZ2V0cGlk
KCk7CisgICAgYXV0byBjZlBpZCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnBpZCkpOworICAgIENGRGljdGlvbmFyeVJl
ZiBiYXJlQXNzZXJ0aW9uc0J5UElEID0gbnVsbHB0cjsKKworICAgIElPUE1Db3B5QXNzZXJ0aW9u
c0J5UHJvY2VzcygmYmFyZUFzc2VydGlvbnNCeVBJRCk7CisgICAgaWYgKCFiYXJlQXNzZXJ0aW9u
c0J5UElEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFzc2VydGlvbnNCeVBJ
RCA9IGFkb3B0Q0YoYmFyZUFzc2VydGlvbnNCeVBJRCk7CisKKyAgICBDRkFycmF5UmVmIGFzc2Vy
dGlvbnMgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShhc3NlcnRpb25zQnlQSUQu
Z2V0KCksIGNmUGlkLmdldCgpKTsKKyAgICBpZiAoIWFzc2VydGlvbnMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291
bnQoYXNzZXJ0aW9ucyk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJl
ZiBhc3NlcnRpb24gPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXNz
ZXJ0aW9ucywgaSk7CisgICAgICAgIENGU3RyaW5nUmVmIGFzc2VydGlvblR5cGUgPSAoQ0ZTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXNzZXJ0aW9uLCBrSU9QTUFzc2VydGlvblR5cGVL
ZXkpOworICAgICAgICBpZiAoQ0ZFcXVhbCh0eXBlLCBhc3NlcnRpb25UeXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1RFU1QoV2Vi
S2l0MSwgTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uKQoreworICAgIGRpZEZpbmlzaExvYWQg
PSBmYWxzZTsKKyAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBkaWRTdG9wUGxheWlu
ZyA9IGZhbHNlOworICAgIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICBkaWRF
bmRSZW1vdGVQbGF5YmFjayA9IGZhbHNlOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0p
OworICAgICAgICBhdXRvIGZyYW1lTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tTbGVlcEFzc2VydGlvbkxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRv
IHBvbGljeURlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvblBv
bGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAgYXV0byB3aW5kb3cgPSBhZG9w
dE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVd
IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5QW5kT3Jk
ZXJGcm9udDpuaWxdOworCisgICAgICAgIHdlYlZpZXcuZ2V0KCkucG9saWN5RGVsZWdhdGUgPSBw
b2xpY3lEZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxl
Z2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOworICAgICAgICBXZWJGcmFtZSAqbWFpbkZy
YW1lID0gd2ViVmlldy5nZXQoKS5tYWluRnJhbWU7CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICAgICAgVXRp
bDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwor
CisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNl
cklkbGVEaXNwbGF5U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9u
VHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisgICAgICAgIHNp
bXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4oJmRpZEJlZ2lu
UGxheWluZyk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigi
UHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhh
c0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKwor
ICAgICAgICBzaW11bGF0ZUtleURvd24od2luZG93LmdldCgpKTsKKyAgICAgICAgVXRpbDo6cnVu
KCZkaWRCZWdpblJlbW90ZVBsYXliYWNrKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNz
ZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lz
dGVtU2xlZXAiKSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOwor
ICAgICAgICBVdGlsOjpydW4oJmRpZFN0b3BQbGF5aW5nKTsKKworICAgICAgICBFWFBFQ1RfRkFM
U0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRV
c2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKyAgICB9Cit9CisKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311126</attachid>
            <date>2017-05-24 10:09:07 -0700</date>
            <delta_ts>2017-05-24 11:05:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172541-20170524100905.patch</filename>
            <type>text/plain</type>
            <size>28616</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjZmNmYjA2MzUwY2I1
OTE4ZTQ5ZGI4N2ZiMGM0ODIyMjQ5NjZhYi4uMjhiNTc2NDQyZDkyNThhZGRiNDg0YmYzYTFmZGVj
N2RkY2UzZjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA1LTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hp
bGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdDogVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQorCisgICAgICAgIEtlZXAgdGhlIHN5c3Rl
bSBmcm9tIHNsZWVwaW5nIChidXQgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXApIHdoaWxlIHBs
YXlpbmcgbWVkaWEgdG8gYSB3aXJlbGVzcyB0YXJnZXQuCisKKyAgICAgICAgR2l2ZSB0aGUgU2xl
ZXBEaXNhYmxlciBhIFR5cGUsIGVpdGhlciBTeXN0ZW0gb3IgRGlzcGxheSwgd2hpY2ggaW5kaWNh
dGVzIHdoYXQga2luZCBvZiBzbGVlcCB0byBkaXNhYmxlLgorICAgICAgICBVcGRhdGUgSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGEgdmlkZW8gd2hpY2ggaXMgcGxheWluZyBsb2NhbGx5LAorICAgICAgICBvbmUgdGhhdCBpcyBw
bGF5aW5nIGJ1dCBub3QgdmlzaWJsZSwgYW5kIG9uZSB0aGF0IGlzIHBsYXlpbmcgcmVtb3RlbHku
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTbGVlcERpc2FibGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
aG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6
OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGVlcERp
c2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29hOjpT
bGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29h
Ojp+U2xlZXBEaXNhYmxlckNvY29hKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1
cGRhdGVQb3dlckFzc2VydGlvbnNdKToKKwogMjAxNy0wNS0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGlzcGxheVNsZWVwRGlzYWJsZXIgLT4g
U2xlZXBEaXNhYmxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTM0MjMyZGE4ZTk5YTFkNmE4M2RiNTk5Y2Y5ZTYwNzNjZWI2NDZmYi4uOWNkMjgyYzZlYTJl
YjI0MjZkZmNiNTE4ZjQ1ZDNiMmQxZWZkZTA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NDIxLDYgKzU0MjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVk
aWFQbAogICAgIG1fbWVkaWFTZXNzaW9uLT5pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRDaGFuZ2VkKG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CiAgICAgbV9tZWRpYVNlc3Np
b24tPmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKICAgICB1cGRhdGVNZWRpYVN0YXRlKFVwZGF0
ZVN0YXRlOjpBc3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKIH0K
IAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKQEAg
LTYzNDYsMjYgKzYzNDcsMzggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphcHBseU1lZGlhRnJh
Z21lbnRVUkkoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJsaW5n
KCkKIHsKLSAgICBib29sIHNob3VsZERpc2FibGVTbGVlcCA9IHRoaXMtPnNob3VsZERpc2FibGVT
bGVlcCgpOwotICAgIGlmICghc2hvdWxkRGlzYWJsZVNsZWVwICYmIG1fc2xlZXBEaXNhYmxlcikK
KyAgICBTbGVlcFR5cGUgc2hvdWxkRGlzYWJsZVNsZWVwID0gdGhpcy0+c2hvdWxkRGlzYWJsZVNs
ZWVwKCk7CisgICAgaWYgKHNob3VsZERpc2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6Ok5vbmUgJiYg
bV9zbGVlcERpc2FibGVyKQogICAgICAgICBtX3NsZWVwRGlzYWJsZXIgPSBudWxscHRyOwotICAg
IGVsc2UgaWYgKHNob3VsZERpc2FibGVTbGVlcCAmJiAhbV9zbGVlcERpc2FibGVyKQotICAgICAg
ICBtX3NsZWVwRGlzYWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJD
b3JlOiBIVE1MTWVkaWFFbGVtZW50IHBsYXliYWNrIik7CisgICAgZWxzZSBpZiAoc2hvdWxkRGlz
YWJsZVNsZWVwICE9IFNsZWVwVHlwZTo6Tm9uZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBzaG91
bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5ID8gU2xlZXBEaXNhYmxlcjo6VHlw
ZTo6RGlzcGxheSA6IFNsZWVwRGlzYWJsZXI6OlR5cGU6OlN5c3RlbTsKKyAgICAgICAgaWYgKCFt
X3NsZWVwRGlzYWJsZXIgfHwgbV9zbGVlcERpc2FibGVyLT50eXBlKCkgIT0gdHlwZSkKKyAgICAg
ICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYkNvcmU6IEhUTUxNZWRpYUVsZW1lbnQgcGxheWJhY2siLCB0eXBlKTsKKyAgICB9CiAKICAg
ICBpZiAobV9wbGF5ZXIpCi0gICAgICAgIG1fcGxheWVyLT5zZXRTaG91bGREaXNhYmxlU2xlZXAo
c2hvdWxkRGlzYWJsZVNsZWVwKTsKKyAgICAgICAgbV9wbGF5ZXItPnNldFNob3VsZERpc2FibGVT
bGVlcChzaG91bGREaXNhYmxlU2xlZXAgPT0gU2xlZXBUeXBlOjpEaXNwbGF5KTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdAorSFRNTE1lZGlh
RWxlbWVudDo6U2xlZXBUeXBlIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gU2xlZXBUeXBlOjpOb25lOwogI2VuZGlmCisgICAgaWYgKCFtX3BsYXllciB8fCBtX3Bs
YXllci0+cGF1c2VkKCkgfHwgbG9vcCgpKQorICAgICAgICByZXR1cm4gU2xlZXBUeXBlOjpOb25l
OworCisgICAgLy8gSWYgdGhlIG1lZGlhIGlzIHBsYXlpbmcgcmVtb3RlbHksIHdlIGNhbid0IGtu
b3cgZGVmaW5pdGl2ZWx5IHdoZXRoZXIgaXQgaGFzIGF1ZGlvIG9yIHZpZGVvIHRyYWNrcy4KKyAg
ICBpZiAobV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KQorICAgICAgICByZXR1cm4gU2xlZXBU
eXBlOjpTeXN0ZW07CisKKyAgICBpZiAoIWhhc1ZpZGVvKCkgfHwgIWhhc0F1ZGlvKCkpCisgICAg
ICAgIHJldHVybiBTbGVlcFR5cGU6Ok5vbmU7CiAKICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4p
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVt
OwogCi0gICAgcmV0dXJuIG1fcGxheWVyICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlk
ZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29wKCk7CisgICAgcmV0dXJuIFNsZWVwVHlwZTo6RGlz
cGxheTsKIH0KIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MDI5ZWNj
Mzg2ZjA1NzVjMDc2OTY1Y2E2NjhkMWQzMmMzMjg1YmRkLi5kYjAzZDU5ZGJjZjFkYzEzODEyODg3
NGI4YzNjNDI1NTFmMjQyNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtNjc5LDcgKzY3OSw3IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbWVkaWFQbGF5ZXJS
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdCBmaW5hbDsKICAgICBWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1lZGlhUGxheWVyRnVsbHNjcmVlbk1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmdWxs
c2NyZWVuTW9kZSgpOyB9Ci0gICAgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgpOyB9CisgICAgYm9vbCBt
ZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3Vs
ZERpc2FibGVTbGVlcCgpID09IFNsZWVwVHlwZTo6RGlzcGxheTsgfQogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIGZpbmFsOwpAQCAtNzkxLDcgKzc5MSwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyRW51bXM6OkxpdmVTdHJlYW07IH0KIAog
ICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKLSAgICBib29sIHNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0OworICAgIGVudW0gY2xhc3MgU2xlZXBUeXBlIHsKKyAgICAgICAgTm9uZSwK
KyAgICAgICAgRGlzcGxheSwKKyAgICAgICAgU3lzdGVtLAorICAgIH07CisgICAgU2xlZXBUeXBl
IHNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xT
X1NDUklQVCkKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNh
Ymxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRl
eCAxZWMyODdmZjkxMTNmN2VmZDI3MTI0YzVhYzYxMWIzZGQwZmJhOGU5Li5iMjQzZTc3ZDk0MzM2
MTBjYzllOTVjYjViOWVmMzkwNTlmNzc0ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
bGVlcERpc2FibGVyLmNwcApAQCAtMjksMTMgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4g
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0
cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29u
LCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PihuZXcgU2xlZXBEaXNhYmxlcihyZWFzb24pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkpOwogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihj
b25zdCBjaGFyKikKK1NsZWVwRGlzYWJsZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5
cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TbGVlcERpc2FibGVyLmgKaW5kZXggM2JmYWI5NWE3MjRmYzAzYTY3YWU5NjIyZWJjM2M2YzY2
NzAzYjNkZS4uOTcxN2U5YTIwMWI2ZWVkNDBjZGE2YjZlOGJmNDdmZjFlYmU2ZTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaApAQCAtMjksMTEgKzI5LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgY2hhciop
OworICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFN5c3RlbSwKKyAgICAgICAgRGlzcGxh
eSwKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TbGVl
cERpc2FibGVyKCk7CiAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KwogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hh
ciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUp
OworICAgIFR5cGUgbV90eXBlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKaW5kZXggYTFiNTIwMDFlY2Y0MDNm
YmQxNjBkNDBhOTBlNTBhMmNlYWI3ZDE5MS4uZTg5ZWVkODI3MWYyZDdjYzI5N2Y4OTliODkxM2U1
N2E2OTViMmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
bGVlcERpc2FibGVyQ29jb2EuY3BwCkBAIC0zMywyMiArMzMsMzYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6
Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVy
PiBTbGVlcERpc2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNh
YmxlckNvY29hKHJlYXNvbikpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNh
Ymxlcj4obmV3IFNsZWVwRGlzYWJsZXJDb2NvYShyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBE
aXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uKQotICAg
IDogU2xlZXBEaXNhYmxlcihyZWFzb24pCi0gICAgLCBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3Nl
cnRpb24oMCkKK1NsZWVwRGlzYWJsZXJDb2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNo
YXIqIHJlYXNvbiwgVHlwZSB0eXBlKQorICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24sIHR5cGUp
CisgICAgLCBtX3NsZWVwQXNzZXJ0aW9uKDApCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiByZWFzb25DRiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIElPUE1Bc3Nl
cnRpb25DcmVhdGVXaXRoRGVzY3JpcHRpb24oa0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJ
ZGxlRGlzcGxheVNsZWVwLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgMCwgbnVsbHB0ciwgJm1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisKKyAgICBD
RlN0cmluZ1JlZiBhc3NlcnRpb25UeXBlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
VHlwZTo6RGlzcGxheToKKyAgICAgICAgYXNzZXJ0aW9uVHlwZSA9IGtJT1BNQXNzZXJ0aW9uVHlw
ZVByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpTeXN0ZW06CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBrSU9QTUFzc2VydGlvblR5cGVQ
cmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBu
dWxscHRyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdp
dGhEZXNjcmlwdGlvbihhc3NlcnRpb25UeXBlLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgJm1fc2xlZXBBc3NlcnRpb24pOwogfQogCiBTbGVl
cERpc2FibGVyQ29jb2E6On5TbGVlcERpc2FibGVyQ29jb2EoKQogewotICAgIElPUE1Bc3NlcnRp
b25SZWxlYXNlKG1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisgICAgSU9QTUFzc2Vy
dGlvblJlbGVhc2UobV9zbGVlcEFzc2VydGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgKaW5kZXggOWIwYjc0ZWI4
YzVkMDQwMzhiMDAyNmY3N2MxNmJiM2E0MTlkN2M0OS4uMTk2ODQwMTIyNWMxNmU3MjBlMjAwMzc3
NDRmZjUzYWUyN2Q3Zjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2xlZXBEaXNhYmxlckNvY29hLmgKQEAgLTMzLDExICszMywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNsZWVwRGlzYWJsZXJDb2NvYSA6IHB1YmxpYyBTbGVlcERpc2FibGVy
IHsKIHB1YmxpYzoKLSAgICBTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciopOworICAgIFNs
ZWVwRGlzYWJsZXJDb2NvYShjb25zdCBjaGFyKiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBE
aXNhYmxlckNvY29hKCk7CiAKIHByaXZhdGU6Ci0gICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxh
eVNsZWVwQXNzZXJ0aW9uOworICAgIHVpbnQzMl90IG1fc2xlZXBBc3NlcnRpb247CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IDYyNTc5MTc0NjYzMzkyZmQyMjZiMzJlZTY0OTc1
ZTQ0YjM2ZTEwYTIuLmVhMjQ3ZWRhMjA5YzI2MWYwZmYyMGVhMTE5ZGU5YzdhN2FiNmI5OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAodm9pZCl1cGRhdGVQ
b3dlckFzc2VydGlvbnMKICAgICAKICAgICBpZiAocmF0ZSAmJiAhX2lzRW5kaW5nRnVsbHNjcmVl
bikgewogICAgICAgICBpZiAoIV9kaXNwbGF5U2xlZXBEaXNhYmxlcikKLSAgICAgICAgICAgIF9k
aXNwbGF5U2xlZXBEaXNhYmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YkNvcmUgLSBGdWxsc2NyZWVuIHZpZGVvIik7CisgICAgICAgICAgICBfZGlzcGxheVNsZWVwRGlz
YWJsZXIgPSBTbGVlcERpc2FibGVyOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlIC0gRnVsbHNj
cmVlbiB2aWRlbyIsIFNsZWVwRGlzYWJsZXI6OlR5cGU6OkRpc3BsYXkpOwogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgICAgIF9kaXNwbGF5U2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzRiYWMyMDE4M2Zj
MjBkMzBhYWU4NWIyOGE4MjgwMzE1YjZiZGFlNS4uOWQyYWNmMzg3NGU2OWQ3YzkwMDBhNjBhYzI1
YWNkMmQ0NWNlOGZmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hpbGUgcGxheWluZyB0byB3
aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW06IEFkZGVk
LgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Mb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDpmb3JGcmFtZTpdKToKKyAgICAgICAgKC1b
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjpd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRlS2V5RG93bik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpoYXNBc3NlcnRpb25UeXBlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE3LTA1LTI0ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBDcmVhdGUgdW5pcXVlIG5ldHdvcmsgc3RvcmFnZSBzZXNzaW9u
IGZvciBlYWNoIERSVC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTI0ZjdmOGU2ZjNkYzc5
NjVmMDExMzU1NTUyNzVlOThiN2VmOWM3Yi4uMTQ2YTQ4YzMzMjdmZGI5NDAzNzMwZjQzMzZkMzk1
OWRlNzYzODg1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4Myw2ICs1ODMsOSBAQAog
CQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3OEUxMUExREI3RUEz
NjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJQ0Q3OEUxMUUxREI3
RUUyQTAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENzhFMTFCMURCN0VBMzYwMDE0
QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJQ0Q5RTI5MkUxQzkwQzMz
RjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlFMjkyRDFDOTBDMUJBMDAwQkI4MDAgLyogYXVk
aW8tb25seS5odG1sICovOyB9OworCQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQ
bGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tT
bGVlcEFzc2VydGlvbi5tbSAqLzsgfTsKKwkJQ0RBMzE1OUExRUQ1NDhGMTAwOUY2MEQzIC8qIE1l
ZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTk5MUVENTQwQTUwMDlGNjBEMyAvKiBN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLzsgfTsKKwkJQ0RBMzE1OUQxRUQ1NjQz
RjAwOUY2MEQzIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTlDMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5m
cmFtZXdvcmsgKi87IH07CiAJCUNEQjQxMTVBMUUwQjAwREIwMEVBRDM1MiAvKiB2aWRlby13aXRo
LW11dGVkLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RCNDExNTkxRTA5REE4RTAwRUFEMzUyIC8qIHZpZGVvLXdpdGgtbXV0
ZWQtYXVkaW8uaHRtbCAqLzsgfTsKIAkJQ0RCRkNDNDUxQTlGRjQ1MzAwQTdCNjkxIC8qIEZ1bGxz
Y3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RCRkNDNDMxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29t
SW5pdGlhbEZyYW1lLm1tICovOyB9OwogCQlDREJGQ0M0NjFBOUZGNDlFMDBBN0I2OTEgLyogRnVs
bHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVs
bHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLzsgfTsKQEAgLTY5Nyw4ICs3MDAsNyBAQAog
CQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3Bl
YyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlGNDdEMzBFRTFFRDI4RTdEMDAwNDgyRTEgLyogZ2lm
LWFuZC1maWxlLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJRjQ3RDMwRUMx
RUQyODYzMTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlD
REEzMTU5QTFFRDU0OEYxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzlCMTA0M0UxRUNGOTg0ODAwMDUyMEZBIC8q
IGF1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVudC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0
dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOUI0QUQyQzFFQ0E2
RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKQEAgLTE0ODksNiArMTQ5MSw5IEBACiAJCUNEODlEMDM4MUM0RURCMkEwMDA0MEEwNCAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXli
YWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVxdWlyZXNV
c2VyQWN0aW9uRm9yUGxheWJhY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
OUUyOTJEMUM5MEMxQkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiYXVkaW8tb25seS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2Vy
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1OTkxRUQ1NDBBNTAwOUY2
MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVkaWFQ
bGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTMxNTlDMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJQ0RCNDExNTkxRTA5
REE4RTAwRUFEMzUyIC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJ2aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MjFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVl
blpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZ1bGxz
Y3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkZDQzQzMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29t
SW5pdGlhbEZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU5Miw2ICsx
NTk3LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUNEQTMxNTlEMUVENTY0M0Yw
MDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk2MzQ5MTBF
MDFFOUQzRkYzMDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAogCQkJCTdBMDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxp
YmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE4ODYsNiArMTg5Miw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGNEZGQUEwMUVEM0QwREUw
MEY3MTExRiAvKiBJbWFnZUlPLmZyYW1ld29yayAqLywKKwkJCQlDREEzMTU5QzFFRDU2NDNGMDA5
RjYwRDMgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTYzNDkxMERGMUU5RDNGRjMwMDg4MDMw
OSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNBMUQ4NzdDMDUwMEVE
RTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAogCQkJCTdDODNFMDMzMUQwQTVGMjcw
MEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliICovLApAQCAtMjQzNCw2ICsyNDQxLDcgQEAKIAkJ
CQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEu
bW0gKi8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld1NlbGVjdGlv
blRlc3RzLm1tICovLAogCQkJCTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRh
cnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovLAorCQkJCUNEQTMxNTk2MUVENTM2NTEwMDlGNjBEMyAv
KiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDcxLDYgKzI0NzksNyBAQAogCQkJ
CTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5o
dG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLAogCQkJCUE1RTIwMjcwMTVCMjE4MDYwMEMxM0Ux
NCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovLAorCQkJCUNEQTMxNTk5MUVE
NTQwQTUwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLywKIAkJ
CSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI5ODEsNiArMjk5MCw3IEBACiAJCQkJN0NDRTdFQjIxQTQxMUE1MTAwNDQ3QzRDIC8qIE1lbW9y
eUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzUx
QTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzYxQTQxMUE3RTAwNDQ3QzRDIC8q
IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCRjg4RDFERDU5NjREMDBCMDAzMjgg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjcx
RDBBNjRCODAwRkVCQ0YzIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMEJGODk0MURENTk5QzkwMEIwMDMyOCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2
ZW50cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOTEwYTZlNjk1NzIzYTVmMjIwY2JkMWNiNjE5YzY2ZWM5YmQ3Zjk0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxl
ZCh0cnVlKTsKKworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywg
bmV4dHN0ZXApOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgICAg
IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7CisgICAgICAgICAg
ICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25wbGF5aW5nKTsKKyAgICAgICAg
ICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25wYXVzZSk7CisgICAgICAgICAg
ICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZCcsIG9uY3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQp
OworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2NhbGxiYWNrOmxvYWRlZCc7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbnBsYXlpbmcoZXZlbnQpIHsKKyAgICAgICAgICAg
IHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9
ICdjYWxsYmFjazpwbGF5aW5nJzsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9ucGF1
c2UoZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAg
ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwYXVzZWQnOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25jdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdl
ZChldmVudCkgeworICAgICAgICAgICAgdmFyIHZpZGVvID0gZXZlbnQudGFyZ2V0OworICAgICAg
ICAgICAgd2luZG93LmxvY2F0aW9uID0gdmlkZW8ud2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzcyA/ICdjYWxsYmFjazpyZW1vdGUtc3RhcnQnIDogJ2NhbGxiYWNrOnJlbW90ZS1l
bmQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbmV4dHN0ZXAoKSB7CisgICAgICAg
ICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOworICAgICAg
ICAgICAgaWYgKCF2aWRlby53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnBhdXNlZCkKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW8ucGxheSgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB2aWRlby53ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZSgnU2xlZXB5IFRWJywg
J0RldmljZUF2YWlsYWJsZScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWYgKCF2aWRlby5wYXVzZWQpCisgICAgICAgICAgICAgICAg
ICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHZpZGVvLndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOworICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKCdTbGVlcHkg
VFYnLCAnRGV2aWNlVW5hdmFpbGFibGUnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHN0YXJ0VGVzdCk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8g
c3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVl
cEFzc2VydGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJh
Y2tTbGVlcEFzc2VydGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjJjMWI2MTg0Y2EzNTVlMTMyMGE0MTc4
ZDE5YTY1YTBjNDc3YmYzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tCkBAIC0wLDAgKzEsMTkyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbXBvcnQgPEhJVG9v
bGJveC9DYXJib25FdmVudHMuaD4KKyNpbXBvcnQgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Nl
dHRpbmdzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TGVnYWN5Lmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkU3RvcFBsYXlp
bmcgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsK
K3N0YXRpYyBib29sIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gZmFsc2U7CisKK0BpbnRlcmZhY2Ug
TWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdlYkZy
YW1lTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVkaWFQbGF5YmFja1Ns
ZWVwQXNzZXJ0aW9uTG9hZERlbGVnYXRlCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IGRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0IGZvckZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJ
bnRlcm5hbHNPYmplY3QoY29udGV4dC5KU0dsb2JhbENvbnRleHRSZWYpOworfQorQGVuZAorCitA
aW50ZXJmYWNlIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlIDogTlNP
YmplY3Q8V2ViUG9saWN5RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZWRpYVBs
YXliYWNrU2xlZXBBc3NlcnRpb25Qb2xpY3lEZWxlZ2F0ZQorLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihOU0RpY3Rpb25h
cnkgKilhY3Rpb25JbmZvcm1hdGlvbiByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lIGRlY2lzaW9uTGlzdGVuZXI6KGlkPFdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXI+KWxpc3RlbmVyCit7CisgICAgTlNVUkwqIFVSTCA9IHJlcXVlc3QuVVJMOwor
ICAgIGlmIChbVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJjYWxsYmFjayJdKSB7CisgICAg
ICAgIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJd
KQorICAgICAgICAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKFtV
UkwucmVzb3VyY2VTcGVjaWZpZXIgaXNFcXVhbFRvU3RyaW5nOkAicGxheWluZyJdKSB7CisgICAg
ICAgICAgICBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOworICAgICAgICAgICAgZGlkU3RvcFBsYXlp
bmcgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlz
RXF1YWxUb1N0cmluZzpAInBhdXNlZCJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBsYXlpbmcg
PSBmYWxzZTsKKyAgICAgICAgICAgIGRpZFN0b3BQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSBl
bHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInJlbW90ZS1z
dGFydCJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblJlbW90ZVBsYXliYWNrID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBp
ZiAoW1VSTC5yZXNvdXJjZVNwZWNpZmllciBpc0VxdWFsVG9TdHJpbmc6QCJyZW1vdGUtZW5kIl0p
IHsKKyAgICAgICAgICAgIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFts
aXN0ZW5lciBpZ25vcmVdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW2xpc3RlbmVy
IHVzZV07Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZv
aWQgc2ltdWxhdGVLZXlEb3duKE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgTlNFdmVudCAqZXZl
bnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgorICAgICAg
ICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOjAKKyAg
ICAgICAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKQorICAgICAgICB3aW5kb3dOdW1i
ZXI6d2luZG93LndpbmRvd051bWJlcgorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4
dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpAIiAiCisgICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczpAIiAiCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAg
ICBrZXlDb2RlOjB4MzFdOworCisgICAgW3dpbmRvdyBzZW5kRXZlbnQ6ZXZlbnRdOworCisgICAg
ZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKKyAgICAg
ICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczowCisg
ICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgd2luZG93TnVt
YmVyOndpbmRvdy53aW5kb3dOdW1iZXIKKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6QCIgIgorICAgICAgICBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6QCIgIgorICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAg
ICAga2V5Q29kZToweDMxXTsKKworICAgIFt3aW5kb3cgc2VuZEV2ZW50OmV2ZW50XTsKK30KKwor
c3RhdGljIGJvb2wgaGFzQXNzZXJ0aW9uVHlwZShDRlN0cmluZ1JlZiB0eXBlKQoreworICAgIGlu
dDMyX3QgcGlkID0gZ2V0cGlkKCk7CisgICAgYXV0byBjZlBpZCA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnBpZCkpOwor
ICAgIENGRGljdGlvbmFyeVJlZiBiYXJlQXNzZXJ0aW9uc0J5UElEID0gbnVsbHB0cjsKKworICAg
IElPUE1Db3B5QXNzZXJ0aW9uc0J5UHJvY2VzcygmYmFyZUFzc2VydGlvbnNCeVBJRCk7CisgICAg
aWYgKCFiYXJlQXNzZXJ0aW9uc0J5UElEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIGFzc2VydGlvbnNCeVBJRCA9IGFkb3B0Q0YoYmFyZUFzc2VydGlvbnNCeVBJRCk7CisKKyAg
ICBDRkFycmF5UmVmIGFzc2VydGlvbnMgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShhc3NlcnRpb25zQnlQSUQuZ2V0KCksIGNmUGlkLmdldCgpKTsKKyAgICBpZiAoIWFzc2VydGlv
bnMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291
bnQgPSBDRkFycmF5R2V0Q291bnQoYXNzZXJ0aW9ucyk7IGkgPCBjb3VudDsgKytpKSB7CisgICAg
ICAgIENGRGljdGlvbmFyeVJlZiBhc3NlcnRpb24gPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoYXNzZXJ0aW9ucywgaSk7CisgICAgICAgIENGU3RyaW5nUmVmIGFzc2Vy
dGlvblR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXNzZXJ0aW9uLCBr
SU9QTUFzc2VydGlvblR5cGVLZXkpOworICAgICAgICBpZiAoQ0ZFcXVhbCh0eXBlLCBhc3NlcnRp
b25UeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK1RFU1QoV2ViS2l0MSwgTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uKQorewor
ICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsK
KyAgICBkaWRTdG9wUGxheWluZyA9IGZhbHNlOworICAgIGRpZEJlZ2luUmVtb3RlUGxheWJhY2sg
PSBmYWxzZTsKKyAgICBkaWRFbmRSZW1vdGVQbGF5YmFjayA9IGZhbHNlOworCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpu
aWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBhdXRvIGZyYW1lTG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbkxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAgICAgICAg
YXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJl
Y3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3Mg
YmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgICAgICBbW3dp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICAgICAgW3dp
bmRvdyBtYWtlS2V5QW5kT3JkZXJGcm9udDpuaWxdOworCisgICAgICAgIHdlYlZpZXcuZ2V0KCku
cG9saWN5RGVsZWdhdGUgPSBwb2xpY3lEZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgd2ViVmlldy5n
ZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IGZyYW1lTG9hZERlbGVnYXRlLmdldCgpOworICAgICAg
ICBXZWJGcmFtZSAqbWFpbkZyYW1lID0gd2ViVmlldy5nZXQoKS5tYWluRnJhbWU7CisKKyAgICAg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiTWVkaWFQbGF5YmFja1NsZWVw
QXNzZXJ0aW9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV07CisgICAgICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CisKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICAgICAgZGlkRmlu
aXNoTG9hZCA9IGZhbHNlOworCisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBl
KENGU1RSKCJQcmV2ZW50VXNlcklkbGVEaXNwbGF5U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAi
KSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBV
dGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFzQXNz
ZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKGhhc0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZVN5
c3RlbVNsZWVwIikpKTsKKworICAgICAgICBzaW11bGF0ZUtleURvd24od2luZG93LmdldCgpKTsK
KyAgICAgICAgVXRpbDo6cnVuKCZkaWRCZWdpblJlbW90ZVBsYXliYWNrKTsKKworICAgICAgICBF
WFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxh
eVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigi
UHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93
bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4oJmRpZFN0b3BQbGF5aW5nKTsKKwor
ICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJ
ZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0Fzc2VydGlvblR5
cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKyAgICB9Cit9CisKK30K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311134</attachid>
            <date>2017-05-24 11:05:53 -0700</date>
            <delta_ts>2017-05-24 11:11:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172541-20170524110552.patch</filename>
            <type>text/plain</type>
            <size>29321</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjZmNmYjA2MzUwY2I1
OTE4ZTQ5ZGI4N2ZiMGM0ODIyMjQ5NjZhYi4uYzE0YzAyZWVlZDQ4ZjM3YzE0NzE5Yjg4OGY2ZTc2
NzY3MmRjMjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA1LTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hp
bGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdDogVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQorCisgICAgICAgIEtlZXAgdGhlIHN5c3Rl
bSBmcm9tIHNsZWVwaW5nIChidXQgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXApIHdoaWxlIHBs
YXlpbmcgbWVkaWEgdG8gYSB3aXJlbGVzcyB0YXJnZXQuCisKKyAgICAgICAgR2l2ZSB0aGUgU2xl
ZXBEaXNhYmxlciBhIFR5cGUsIGVpdGhlciBTeXN0ZW0gb3IgRGlzcGxheSwgd2hpY2ggaW5kaWNh
dGVzIHdoYXQga2luZCBvZiBzbGVlcCB0byBkaXNhYmxlLgorICAgICAgICBVcGRhdGUgSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGEgdmlkZW8gd2hpY2ggaXMgcGxheWluZyBsb2NhbGx5LAorICAgICAgICBvbmUgdGhhdCBpcyBw
bGF5aW5nIGJ1dCBub3QgdmlzaWJsZSwgYW5kIG9uZSB0aGF0IGlzIHBsYXlpbmcgcmVtb3RlbHku
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTbGVlcERpc2FibGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
aG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6
OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGVlcERp
c2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29hOjpT
bGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29h
Ojp+U2xlZXBEaXNhYmxlckNvY29hKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1
cGRhdGVQb3dlckFzc2VydGlvbnNdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvSU9Q
TUxpYlNQSS5oOgorCiAyMDE3LTA1LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBEaXNwbGF5U2xlZXBEaXNhYmxlciAtPiBTbGVlcERpc2FibGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhMzQyMzJkYThl
OTlhMWQ2YTgzZGI1OTljZjllNjA3M2NlYjY0NmZiLi41ODY5OWZiZDYyZjJhNDcxODE1NjRmOTMy
OTAzNTcwNmRkOTAxZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTU0MjEsNiArNTQyMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBsCiAgICAgbV9t
ZWRpYVNlc3Npb24tPmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZWQobV9p
c1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KTsKICAgICBtX21lZGlhU2Vzc2lvbi0+Y2FuUHJvZHVj
ZUF1ZGlvQ2hhbmdlZCgpOwogICAgIHVwZGF0ZU1lZGlhU3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5j
aHJvbm91c2x5KTsKKyAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogfQogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQpAQCAtNjM0NiwyNiArNjM0
Nyw0MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFwcGx5TWVkaWFGcmFnbWVudFVSSSgpCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2xlZXBEaXNhYmxpbmcoKQogewotICAgIGJv
b2wgc2hvdWxkRGlzYWJsZVNsZWVwID0gdGhpcy0+c2hvdWxkRGlzYWJsZVNsZWVwKCk7Ci0gICAg
aWYgKCFzaG91bGREaXNhYmxlU2xlZXAgJiYgbV9zbGVlcERpc2FibGVyKQorICAgIFNsZWVwVHlw
ZSBzaG91bGREaXNhYmxlU2xlZXAgPSB0aGlzLT5zaG91bGREaXNhYmxlU2xlZXAoKTsKKyAgICBp
ZiAoc2hvdWxkRGlzYWJsZVNsZWVwID09IFNsZWVwVHlwZTo6Tm9uZSAmJiBtX3NsZWVwRGlzYWJs
ZXIpCiAgICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IG51bGxwdHI7Ci0gICAgZWxzZSBpZiAoc2hv
dWxkRGlzYWJsZVNsZWVwICYmICFtX3NsZWVwRGlzYWJsZXIpCi0gICAgICAgIG1fc2xlZXBEaXNh
YmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmU6IEhUTUxNZWRp
YUVsZW1lbnQgcGxheWJhY2siKTsKKyAgICBlbHNlIGlmIChzaG91bGREaXNhYmxlU2xlZXAgIT0g
U2xlZXBUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IHNob3VsZERpc2FibGVTbGVl
cCA9PSBTbGVlcFR5cGU6OkRpc3BsYXkgPyBTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5IDog
U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtOworICAgICAgICBpZiAoIW1fc2xlZXBEaXNhYmxl
ciB8fCBtX3NsZWVwRGlzYWJsZXItPnR5cGUoKSAhPSB0eXBlKQorICAgICAgICAgICAgbV9zbGVl
cERpc2FibGVyID0gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViQ29yZTogSFRN
TE1lZGlhRWxlbWVudCBwbGF5YmFjayIsIHR5cGUpOworICAgIH0KIAogICAgIGlmIChtX3BsYXll
cikKLSAgICAgICAgbV9wbGF5ZXItPnNldFNob3VsZERpc2FibGVTbGVlcChzaG91bGREaXNhYmxl
U2xlZXApOworICAgICAgICBtX3BsYXllci0+c2V0U2hvdWxkRGlzYWJsZVNsZWVwKHNob3VsZERp
c2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6OkRpc3BsYXkpOwogfQogCi1ib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0CitIVE1MTWVkaWFFbGVtZW50OjpTbGVl
cFR5cGUgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3QKIHsKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBTbGVlcFR5
cGU6Ok5vbmU7CiAjZW5kaWYKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fcGxheWVyLT5wYXVzZWQo
KSB8fCBsb29wKCkpCisgICAgICAgIHJldHVybiBTbGVlcFR5cGU6Ok5vbmU7CisKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIC8vIElmIHRoZSBtZWRpYSBpcyBwbGF5
aW5nIHJlbW90ZWx5LCB3ZSBjYW4ndCBrbm93IGRlZmluaXRpdmVseSB3aGV0aGVyIGl0IGhhcyBh
dWRpbyBvciB2aWRlbyB0cmFja3MuCisgICAgaWYgKG1faXNQbGF5aW5nVG9XaXJlbGVzc1Rhcmdl
dCkKKyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVtOworI2VuZGlmCisKKyAgICBpZiAo
IWhhc1ZpZGVvKCkgfHwgIWhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVybiBTbGVlcFR5cGU6Ok5v
bmU7CiAKICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVtOwogCi0gICAgcmV0dXJuIG1fcGxheWVy
ICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlkZW8oKSAmJiBoYXNBdWRpbygpICYmICFs
b29wKCk7CisgICAgcmV0dXJuIFNsZWVwVHlwZTo6RGlzcGxheTsKIH0KIAogU3RyaW5nIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MDI5ZWNjMzg2ZjA1NzVjMDc2OTY1Y2E2NjhkMWQz
MmMzMjg1YmRkLi5kYjAzZDU5ZGJjZjFkYzEzODEyODg3NGI4YzNjNDI1NTFmMjQyNjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNjc5LDcgKzY3OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBkb3VibGUgbWVkaWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBj
b25zdCBmaW5hbDsKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1lZGlhUGxheWVyRnVsbHNjcmVl
bk1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmdWxsc2NyZWVuTW9kZSgpOyB9Ci0gICAgYm9v
bCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNo
b3VsZERpc2FibGVTbGVlcCgpOyB9CisgICAgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgpID09IFNsZWVw
VHlwZTo6RGlzcGxheTsgfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFjayYpIGZpbmFsOwpAQCAtNzkxLDcgKzc5MSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNM
aXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1l
ZGlhUGxheWVyRW51bXM6OkxpdmVTdHJlYW07IH0KIAogICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNh
YmxpbmcoKTsKLSAgICBib29sIHNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgU2xlZXBUeXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlzcGxheSwKKyAgICAg
ICAgU3lzdGVtLAorICAgIH07CisgICAgU2xlZXBUeXBlIHNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICB2b2lkIGRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRleCAxZWMyODdmZjkxMTNmN2VmZDI3MTI0
YzVhYzYxMWIzZGQwZmJhOGU5Li5iMjQzZTc3ZDk0MzM2MTBjYzllOTVjYjViOWVmMzkwNTlmNzc0
ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcApAQCAtMjks
MTMgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
Ci1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNv
bnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERp
c2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNhYmxlcihyZWFz
b24pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVl
cERpc2FibGVyKHJlYXNvbiwgdHlwZSkpOwogfQogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkK
IAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKikKK1NsZWVwRGlzYWJs
ZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0
eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERp
c2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKaW5kZXgg
M2JmYWI5NWE3MjRmYzAzYTY3YWU5NjIyZWJjM2M2YzY2NzAzYjNkZS4uOTcxN2U5YTIwMWI2ZWVk
NDBjZGE2YjZlOGJmNDdmZjFlYmU2ZTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVw
RGlzYWJsZXIuaApAQCAtMjksMTEgKzI5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
bGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIFN5c3RlbSwKKyAgICAgICAgRGlzcGxheSwKKyAgICB9OworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TbGVlcERpc2FibGVyKCk7CiAKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogcHJvdGVjdGVkOgotICAgIFdFQkNP
UkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciopOworICAgIFdFQkNPUkVfRVhQT1JU
IFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUpOworICAgIFR5cGUgbV90eXBlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNh
YmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NsZWVwRGlzYWJs
ZXJDb2NvYS5jcHAKaW5kZXggYTFiNTIwMDFlY2Y0MDNmYmQxNjBkNDBhOTBlNTBhMmNlYWI3ZDE5
MS4uZTg5ZWVkODI3MWYyZDdjYzI5N2Y4OTliODkxM2U1N2E2OTViMmE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCkBA
IC0zMywyMiArMzMsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9w
dHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNv
bikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUo
Y29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNhYmxlckNvY29hKHJlYXNvbikpOworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJD
b2NvYShyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2Fi
bGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uKQotICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24p
Ci0gICAgLCBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3NlcnRpb24oMCkKK1NsZWVwRGlzYWJsZXJD
b2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQor
ICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24sIHR5cGUpCisgICAgLCBtX3NsZWVwQXNzZXJ0aW9u
KDApCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZWFzb25DRiA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIElPUE1Bc3NlcnRpb25DcmVhdGVXaXRoRGVzY3JpcHRp
b24oa0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwLCByZWFzb25D
Ri5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgJm1fZGlzYWJs
ZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisKKyAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBl
OworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVHlwZTo6RGlzcGxheToKKyAgICAgICAg
YXNzZXJ0aW9uVHlwZSA9IGtJT1BNQXNzZXJ0aW9uVHlwZVByZXZlbnRVc2VySWRsZURpc3BsYXlT
bGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpTeXN0ZW06CisgICAgICAgIGFz
c2VydGlvblR5cGUgPSBrSU9QTUFzc2VydGlvblR5cGVQcmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVl
cDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBudWxscHRyOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdpdGhEZXNjcmlwdGlvbihhc3NlcnRpb25U
eXBlLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0
ciwgJm1fc2xlZXBBc3NlcnRpb24pOwogfQogCiBTbGVlcERpc2FibGVyQ29jb2E6On5TbGVlcERp
c2FibGVyQ29jb2EoKQogewotICAgIElPUE1Bc3NlcnRpb25SZWxlYXNlKG1fZGlzYWJsZURpc3Bs
YXlTbGVlcEFzc2VydGlvbik7CisgICAgSU9QTUFzc2VydGlvblJlbGVhc2UobV9zbGVlcEFzc2Vy
dGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NsZWVwRGlzYWJsZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmgKaW5kZXggOWIwYjc0ZWI4YzVkMDQwMzhiMDAyNmY3N2MxNmJiM2E0
MTlkN2M0OS4uMTk2ODQwMTIyNWMxNmU3MjBlMjAwMzc3NDRmZjUzYWUyN2Q3Zjc4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgK
QEAgLTMzLDExICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNsZWVwRGlz
YWJsZXJDb2NvYSA6IHB1YmxpYyBTbGVlcERpc2FibGVyIHsKIHB1YmxpYzoKLSAgICBTbGVlcERp
c2FibGVyQ29jb2EoY29uc3QgY2hhciopOworICAgIFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBj
aGFyKiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBEaXNhYmxlckNvY29hKCk7CiAKIHByaXZh
dGU6Ci0gICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0aW9uOworICAgIHVp
bnQzMl90IG1fc2xlZXBBc3NlcnRpb247CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCmlu
ZGV4IDYyNTc5MTc0NjYzMzkyZmQyMjZiMzJlZTY0OTc1ZTQ0YjM2ZTEwYTIuLmVhMjQ3ZWRhMjA5
YzI2MWYwZmYyMGVhMTE5ZGU5YzdhN2FiNmI5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCkBA
IC0zNjIsNyArMzYyLDcgQEAgLSAodm9pZCl1cGRhdGVQb3dlckFzc2VydGlvbnMKICAgICAKICAg
ICBpZiAocmF0ZSAmJiAhX2lzRW5kaW5nRnVsbHNjcmVlbikgewogICAgICAgICBpZiAoIV9kaXNw
bGF5U2xlZXBEaXNhYmxlcikKLSAgICAgICAgICAgIF9kaXNwbGF5U2xlZXBEaXNhYmxlciA9IFNs
ZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmUgLSBGdWxsc2NyZWVuIHZpZGVv
Iik7CisgICAgICAgICAgICBfZGlzcGxheVNsZWVwRGlzYWJsZXIgPSBTbGVlcERpc2FibGVyOjpj
cmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlIC0gRnVsbHNjcmVlbiB2aWRlbyIsIFNsZWVwRGlzYWJs
ZXI6OlR5cGU6OkRpc3BsYXkpOwogICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIF9kaXNwbGF5
U2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvSU9QTUxpYlNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NvY29hL0lPUE1MaWJTUEkuaAppbmRleCBlMWNlM2FkZjA5MDdiOGI2YjIwYzIwMmI3NjdiZjZk
OTM3Y2VjZjk2Li41ZjcwYjIzNzEyMDdhZTYzYTk2ZTAwZjhiNTE3ZGJhMTk4ODk3NzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvSU9QTUxpYlNQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9JT1BNTGliU1BJLmgKQEAgLTQx
LDYgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBJT1BNQXNzZXJ0aW9uSUQ7CiBXVEZfRVhURVJO
X0NfQkVHSU4KIAogY29uc3QgQ0ZTdHJpbmdSZWYga0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVz
ZXJJZGxlRGlzcGxheVNsZWVwID0gQ0ZTVFIoIlByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcCIp
OworY29uc3QgQ0ZTdHJpbmdSZWYga0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJZGxlU3lz
dGVtU2xlZXAgPSBDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKTsKIAogV1RGX0VY
VEVSTl9DX0VORAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMzRiYWMyMDE4M2ZjMjBkMzBhYWU4NWIyOGE4MjgwMzE1YjZiZGFlNS4uOWQyYWNm
Mzg3NGU2OWQ3YzkwMDBhNjBhYzI1YWNkMmQ0NWNlOGZmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI0
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVl
cHMgd2hpbGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrU2xlZXBBc3Nl
cnRpb25Mb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDpmb3JG
cmFtZTpdKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVs
ZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJh
bWU6ZGVjaXNpb25MaXN0ZW5lcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRl
S2V5RG93bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpoYXNBc3NlcnRpb25UeXBlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA1LTI0ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBDcmVhdGUgdW5pcXVlIG5l
dHdvcmsgc3RvcmFnZSBzZXNzaW9uIGZvciBlYWNoIERSVC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOTI0ZjdmOGU2ZjNkYzc5NjVmMDExMzU1NTUyNzVlOThiN2VmOWM3Yi4uMTQ2YTQ4YzMz
MjdmZGI5NDAzNzMwZjQzMzZkMzk1OWRlNzYzODg1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU4Myw2ICs1ODMsOSBAQAogCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNj
cmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q3OEUxMUExREI3RUEzNjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJQ0Q3OEUxMUUxREI3RUUyQTAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENENzhFMTFCMURCN0VBMzYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUuaHRtbCAqLzsg
fTsKIAkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlFMjkyRDFD
OTBDMUJBMDAwQkI4MDAgLyogYXVkaW8tb25seS5odG1sICovOyB9OworCQlDREEzMTU5ODFFRDUz
NjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2
MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLzsgfTsKKwkJQ0RBMzE1OUEx
RUQ1NDhGMTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTk5
MUVENTQwQTUwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLzsg
fTsKKwkJQ0RBMzE1OUQxRUQ1NjQzRjAwOUY2MEQzIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTlDMUVENTY0
M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQjQxMTVBMUUwQjAwREIw
MEVBRDM1MiAvKiB2aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCNDExNTkxRTA5REE4RTAwRUFE
MzUyIC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbCAqLzsgfTsKIAkJQ0RCRkNDNDUxQTlG
RjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCRkNDNDMxQTlGRjQ0ODAwQTdC
NjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tICovOyB9OwogCQlDREJGQ0M0NjFB
OUZGNDlFMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJGQ0M0MjFB
OUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLzsgfTsK
QEAgLTY5Nyw4ICs3MDAsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
OwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlGNDdEMzBFRTFF
RDI4RTdEMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCi0JCQkJRjQ3RDMwRUMxRUQyODYzMTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQlDREEzMTU5QTFFRDU0OEYxMDA5RjYwRDMgLyogTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzlCMTA0
M0UxRUNGOTg0ODAwMDUyMEZBIC8qIGF1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1
bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2
RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlDOUI0QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE0ODksNiArMTQ5MSw5IEBACiAJCUNEODlEMDM4
MUM0RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOUUyOTJEMUM5MEMxQkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXVkaW8tb25seS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1l
ZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
UGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMzE1OTkxRUQ1NDBBNTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTMxNTlDMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKIAkJQ0RCNDExNTkxRTA5REE4RTAwRUFEMzUyIC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVk
aW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ2aWRlby13aXRoLW11dGVkLWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MjFBOUZGNDQ4
MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQzMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2Ny
ZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU5Miw2ICsxNTk3LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAor
CQkJCUNEQTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKIAkJCQk2MzQ5MTBFMDFFOUQzRkYzMDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAv
KiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0Yx
RDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKQEAg
LTE4ODYsNiArMTg5Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGNEZGQUEwMUVEM0QwREUwMEY3MTExRiAvKiBJbWFnZUlPLmZyYW1ld29yayAqLywKKwkJ
CQlDREEzMTU5QzFFRDU2NDNGMDA5RjYwRDMgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTYz
NDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovLAogCQkJ
CTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAog
CQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliICovLApAQCAt
MjQzNCw2ICsyNDQxLDcgQEAKIAkJCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93
bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFE
IC8qIFdLV2ViVmlld1NlbGVjdGlvblRlc3RzLm1tICovLAogCQkJCTc2NDMyMkQ1MUI2MUNDQTQw
MDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovLAorCQkJCUNEQTMx
NTk2MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi8s
CiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0y
NDcxLDYgKzI0NzksNyBAQAogCQkJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3Jp
cHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcw
NSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLAogCQkJCUE1
RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1s
ICovLAorCQkJCUNEQTMxNTk5MUVENTQwQTUwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24uaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5ODEsNiArMjk5MCw3IEBACiAJCQkJN0NDRTdFQjIxQTQx
MUE1MTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAv
KiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBC
Rjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwQjcxRDBBNjRCODAwRkVCQ0YzIC8qIE1lbnVUeXBlc0Zvck1vdXNl
RXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODk0MURENTk5QzkwMEIwMDMyOCAv
KiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9u
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTEwYTZlNjk1NzIzYTVmMjIwY2JkMWNiNjE5YzY2
ZWM5YmQ3Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKKworICAgICAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCdrZXlkb3duJywgbmV4dHN0ZXApOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0
VGVzdCgpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J3ZpZGVvJyk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywg
b25wbGF5aW5nKTsKKyAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywg
b25wYXVzZSk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcsIG9uY3VycmVudHBsYXliYWNrdGFy
Z2V0aXN3aXJlbGVzc2NoYW5nZWQpOworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2Nh
bGxiYWNrOmxvYWRlZCc7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbnBsYXlpbmco
ZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAg
ICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwbGF5aW5nJzsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9ucGF1c2UoZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpw
YXVzZWQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25jdXJyZW50cGxheWJhY2t0
YXJnZXRpc3dpcmVsZXNzY2hhbmdlZChldmVudCkgeworICAgICAgICAgICAgdmFyIHZpZGVvID0g
ZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdmlkZW8ud2Via2l0
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyA/ICdjYWxsYmFjazpyZW1vdGUtc3RhcnQn
IDogJ2NhbGxiYWNrOnJlbW90ZS1lbmQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
bmV4dHN0ZXAoKSB7CisgICAgICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCd2aWRlbycpOworICAgICAgICAgICAgaWYgKCF2aWRlby53ZWJraXRDdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1dpcmVsZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnBhdXNlZCkK
KyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB2aWRlby53ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSgnU2xlZXB5IFRWJywgJ0RldmljZUF2YWlsYWJsZScpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCF2aWRlby5wYXVz
ZWQpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLndlYmtpdFNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcigpOworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKCdTbGVlcHkgVFYnLCAnRGV2aWNlVW5hdmFpbGFibGUnKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VGVzdCk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjJj
MWI2MTg0Y2EzNTVlMTMyMGE0MTc4ZDE5YTY1YTBjNDc3YmYzCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9u
Lm1tCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBv
cnQuaCIKKyNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHMuaD4KKyNpbXBvcnQgPElPS2l0
L3B3cl9tZ3QvSU9QTUxpYi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TGVn
YWN5Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29sIGRpZEZpbmlz
aExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworc3Rh
dGljIGJvb2wgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEJlZ2luUmVt
b3RlUGxheWJhY2sgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpZEVuZFJlbW90ZVBsYXliYWNrID0g
ZmFsc2U7CisKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERlbGVn
YXRlIDogTlNPYmplY3QgPFdlYkZyYW1lTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERlbGVnYXRlCistICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0OihKU0Nv
bnRleHQgKiljb250ZXh0IGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgV2ViQ29y
ZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29udGV4dC5KU0dsb2JhbENvbnRl
eHRSZWYpOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlv
blBvbGljeURlbGVnYXRlIDogTlNPYmplY3Q8V2ViUG9saWN5RGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Qb2xpY3lEZWxlZ2F0ZQor
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOihOU0RpY3Rpb25hcnkgKilhY3Rpb25JbmZvcm1hdGlvbiByZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGRlY2lzaW9uTGlzdGVu
ZXI6KGlkPFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI+KWxpc3RlbmVyCit7CisgICAgTlNVUkwq
IFVSTCA9IHJlcXVlc3QuVVJMOworICAgIGlmIChbVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6
QCJjYWxsYmFjayJdKSB7CisgICAgICAgIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1
YWxUb1N0cmluZzpAImxvYWRlZCJdKQorICAgICAgICAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7
CisgICAgICAgIGVsc2UgaWYgKFtVUkwucmVzb3VyY2VTcGVjaWZpZXIgaXNFcXVhbFRvU3RyaW5n
OkAicGxheWluZyJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOworICAg
ICAgICAgICAgZGlkU3RvcFBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChbVVJM
LnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmluZzpAInBhdXNlZCJdKSB7CisgICAgICAg
ICAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpZFN0b3BQbGF5aW5n
ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1
YWxUb1N0cmluZzpAInJlbW90ZS1zdGFydCJdKSB7CisgICAgICAgICAgICBkaWRCZWdpblJlbW90
ZVBsYXliYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gZmFs
c2U7CisgICAgICAgIH0gZWxzZSBpZiAoW1VSTC5yZXNvdXJjZVNwZWNpZmllciBpc0VxdWFsVG9T
dHJpbmc6QCJyZW1vdGUtZW5kIl0pIHsKKyAgICAgICAgICAgIGRpZEJlZ2luUmVtb3RlUGxheWJh
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIFtsaXN0ZW5lciBpZ25vcmVdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgW2xpc3RlbmVyIHVzZV07Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworc3RhdGljIHZvaWQgc2ltdWxhdGVLZXlEb3duKE5TV2luZG93ICp3aW5kb3cp
Cit7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5RG93bgorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAg
ICBtb2RpZmllckZsYWdzOjAKKyAgICAgICAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUo
KQorICAgICAgICB3aW5kb3dOdW1iZXI6d2luZG93LndpbmRvd051bWJlcgorICAgICAgICBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVy
czpAIiAiCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpAIiAiCisgICAgICAg
IGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOjB4MzFdOworCisgICAgW3dpbmRvdyBzZW5k
RXZlbnQ6ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
RXZlbnRUeXBlS2V5VXAKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAg
ICAgbW9kaWZpZXJGbGFnczowCisgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1l
KCkKKyAgICAgICAgd2luZG93TnVtYmVyOndpbmRvdy53aW5kb3dOdW1iZXIKKyAgICAgICAgY29u
dGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3Rl
cnM6QCIgIgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6QCIgIgorICAgICAg
ICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZToweDMxXTsKKworICAgIFt3aW5kb3cgc2Vu
ZEV2ZW50OmV2ZW50XTsKK30KKworc3RhdGljIGJvb2wgaGFzQXNzZXJ0aW9uVHlwZShDRlN0cmlu
Z1JlZiB0eXBlKQoreworICAgIGludDMyX3QgcGlkID0gZ2V0cGlkKCk7CisgICAgYXV0byBjZlBp
ZCA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
U0ludDMyVHlwZSwgJnBpZCkpOworICAgIENGRGljdGlvbmFyeVJlZiBiYXJlQXNzZXJ0aW9uc0J5
UElEID0gbnVsbHB0cjsKKworICAgIElPUE1Db3B5QXNzZXJ0aW9uc0J5UHJvY2VzcygmYmFyZUFz
c2VydGlvbnNCeVBJRCk7CisgICAgaWYgKCFiYXJlQXNzZXJ0aW9uc0J5UElEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFzc2VydGlvbnNCeVBJRCA9IGFkb3B0Q0YoYmFyZUFz
c2VydGlvbnNCeVBJRCk7CisKKyAgICBDRkFycmF5UmVmIGFzc2VydGlvbnMgPSAoQ0ZBcnJheVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShhc3NlcnRpb25zQnlQSUQuZ2V0KCksIGNmUGlkLmdldCgp
KTsKKyAgICBpZiAoIWFzc2VydGlvbnMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXNzZXJ0aW9ucyk7IGkg
PCBjb3VudDsgKytpKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBhc3NlcnRpb24gPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXNzZXJ0aW9ucywgaSk7CisgICAg
ICAgIENGU3RyaW5nUmVmIGFzc2VydGlvblR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoYXNzZXJ0aW9uLCBrSU9QTUFzc2VydGlvblR5cGVLZXkpOworICAgICAgICBpZiAo
Q0ZFcXVhbCh0eXBlLCBhc3NlcnRpb25UeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1RFU1QoV2ViS2l0MSwgTWVkaWFQbGF5YmFj
a1NsZWVwQXNzZXJ0aW9uKQoreworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBkaWRC
ZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBkaWRTdG9wUGxheWluZyA9IGZhbHNlOworICAgIGRp
ZEJlZ2luUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsKKyAgICBkaWRFbmRSZW1vdGVQbGF5YmFjayA9
IGZhbHNlOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBhdXRvIGZy
YW1lTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbkxv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0g
YWRvcHROUyhbW01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisKKyAgICAgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU1dpbmRv
d1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
OllFU10pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5QW5kT3JkZXJGcm9udDpuaWxdOworCisg
ICAgICAgIHdlYlZpZXcuZ2V0KCkucG9saWN5RGVsZWdhdGUgPSBwb2xpY3lEZWxlZ2F0ZS5nZXQo
KTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5mcmFtZUxvYWREZWxlZ2F0ZSA9IGZyYW1lTG9hZERl
bGVnYXRlLmdldCgpOworICAgICAgICBXZWJGcmFtZSAqbWFpbkZyYW1lID0gd2ViVmlldy5nZXQo
KS5tYWluRnJhbWU7CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAiTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgICAgIFttYWluRnJh
bWUgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hM
b2FkKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOworCisgICAgICAgIEVYUEVDVF9G
QUxTRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNlcklkbGVEaXNwbGF5U2xlZXAi
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVu
dFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93bih3aW5k
b3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlz
cGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0Fzc2VydGlvblR5cGUoQ0ZT
VFIoIlByZXZlbnRVc2VySWRsZVN5c3RlbVNsZWVwIikpKTsKKworICAgICAgICBzaW11bGF0ZUtl
eURvd24od2luZG93LmdldCgpKTsKKyAgICAgICAgVXRpbDo6cnVuKCZkaWRCZWdpblJlbW90ZVBs
YXliYWNrKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigi
UHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFz
QXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisg
ICAgICAgIHNpbXVsYXRlS2V5RG93bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4o
JmRpZFN0b3BQbGF5aW5nKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlw
ZShDRlNUUigiUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwIikpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKGhhc0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZVN5c3RlbVNsZWVw
IikpKTsKKyAgICB9Cit9CisKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311136</attachid>
            <date>2017-05-24 11:11:59 -0700</date>
            <delta_ts>2017-05-25 14:05:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172541-20170524111159.patch</filename>
            <type>text/plain</type>
            <size>29374</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjZmNmYjA2MzUwY2I1
OTE4ZTQ5ZGI4N2ZiMGM0ODIyMjQ5NjZhYi4uYzE0YzAyZWVlZDQ4ZjM3YzE0NzE5Yjg4OGY2ZTc2
NzY3MmRjMjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA1LTI0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVlcHMgd2hp
bGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdDogVGVzdHMvbWFj
L01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQorCisgICAgICAgIEtlZXAgdGhlIHN5c3Rl
bSBmcm9tIHNsZWVwaW5nIChidXQgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXApIHdoaWxlIHBs
YXlpbmcgbWVkaWEgdG8gYSB3aXJlbGVzcyB0YXJnZXQuCisKKyAgICAgICAgR2l2ZSB0aGUgU2xl
ZXBEaXNhYmxlciBhIFR5cGUsIGVpdGhlciBTeXN0ZW0gb3IgRGlzcGxheSwgd2hpY2ggaW5kaWNh
dGVzIHdoYXQga2luZCBvZiBzbGVlcCB0byBkaXNhYmxlLgorICAgICAgICBVcGRhdGUgSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGEgdmlkZW8gd2hpY2ggaXMgcGxheWluZyBsb2NhbGx5LAorICAgICAgICBvbmUgdGhhdCBpcyBw
bGF5aW5nIGJ1dCBub3QgdmlzaWJsZSwgYW5kIG9uZSB0aGF0IGlzIHBsYXlpbmcgcmVtb3RlbHku
CisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dp
cmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVTbGVlcERpc2FibGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
aG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6
OlNsZWVwRGlzYWJsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NsZWVwRGlzYWJsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNsZWVwRGlzYWJsZXI6OnR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGVlcERp
c2FibGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29hOjpT
bGVlcERpc2FibGVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6U2xlZXBEaXNhYmxlckNvY29h
Ojp+U2xlZXBEaXNhYmxlckNvY29hKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TbGVlcERp
c2FibGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1
cGRhdGVQb3dlckFzc2VydGlvbnNdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvSU9Q
TUxpYlNQSS5oOgorCiAyMDE3LTA1LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBEaXNwbGF5U2xlZXBEaXNhYmxlciAtPiBTbGVlcERpc2FibGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhMzQyMzJkYThl
OTlhMWQ2YTgzZGI1OTljZjllNjA3M2NlYjY0NmZiLi41ODY5OWZiZDYyZjJhNDcxODE1NjRmOTMy
OTAzNTcwNmRkOTAxZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTU0MjEsNiArNTQyMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBsCiAgICAgbV9t
ZWRpYVNlc3Npb24tPmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZWQobV9p
c1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KTsKICAgICBtX21lZGlhU2Vzc2lvbi0+Y2FuUHJvZHVj
ZUF1ZGlvQ2hhbmdlZCgpOwogICAgIHVwZGF0ZU1lZGlhU3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5j
aHJvbm91c2x5KTsKKyAgICB1cGRhdGVTbGVlcERpc2FibGluZygpOwogfQogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQpAQCAtNjM0NiwyNiArNjM0
Nyw0MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFwcGx5TWVkaWFGcmFnbWVudFVSSSgpCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2xlZXBEaXNhYmxpbmcoKQogewotICAgIGJv
b2wgc2hvdWxkRGlzYWJsZVNsZWVwID0gdGhpcy0+c2hvdWxkRGlzYWJsZVNsZWVwKCk7Ci0gICAg
aWYgKCFzaG91bGREaXNhYmxlU2xlZXAgJiYgbV9zbGVlcERpc2FibGVyKQorICAgIFNsZWVwVHlw
ZSBzaG91bGREaXNhYmxlU2xlZXAgPSB0aGlzLT5zaG91bGREaXNhYmxlU2xlZXAoKTsKKyAgICBp
ZiAoc2hvdWxkRGlzYWJsZVNsZWVwID09IFNsZWVwVHlwZTo6Tm9uZSAmJiBtX3NsZWVwRGlzYWJs
ZXIpCiAgICAgICAgIG1fc2xlZXBEaXNhYmxlciA9IG51bGxwdHI7Ci0gICAgZWxzZSBpZiAoc2hv
dWxkRGlzYWJsZVNsZWVwICYmICFtX3NsZWVwRGlzYWJsZXIpCi0gICAgICAgIG1fc2xlZXBEaXNh
YmxlciA9IFNsZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmU6IEhUTUxNZWRp
YUVsZW1lbnQgcGxheWJhY2siKTsKKyAgICBlbHNlIGlmIChzaG91bGREaXNhYmxlU2xlZXAgIT0g
U2xlZXBUeXBlOjpOb25lKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IHNob3VsZERpc2FibGVTbGVl
cCA9PSBTbGVlcFR5cGU6OkRpc3BsYXkgPyBTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5IDog
U2xlZXBEaXNhYmxlcjo6VHlwZTo6U3lzdGVtOworICAgICAgICBpZiAoIW1fc2xlZXBEaXNhYmxl
ciB8fCBtX3NsZWVwRGlzYWJsZXItPnR5cGUoKSAhPSB0eXBlKQorICAgICAgICAgICAgbV9zbGVl
cERpc2FibGVyID0gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViQ29yZTogSFRN
TE1lZGlhRWxlbWVudCBwbGF5YmFjayIsIHR5cGUpOworICAgIH0KIAogICAgIGlmIChtX3BsYXll
cikKLSAgICAgICAgbV9wbGF5ZXItPnNldFNob3VsZERpc2FibGVTbGVlcChzaG91bGREaXNhYmxl
U2xlZXApOworICAgICAgICBtX3BsYXllci0+c2V0U2hvdWxkRGlzYWJsZVNsZWVwKHNob3VsZERp
c2FibGVTbGVlcCA9PSBTbGVlcFR5cGU6OkRpc3BsYXkpOwogfQogCi1ib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0CitIVE1MTWVkaWFFbGVtZW50OjpTbGVl
cFR5cGUgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3QKIHsKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBTbGVlcFR5
cGU6Ok5vbmU7CiAjZW5kaWYKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1fcGxheWVyLT5wYXVzZWQo
KSB8fCBsb29wKCkpCisgICAgICAgIHJldHVybiBTbGVlcFR5cGU6Ok5vbmU7CisKKyNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIC8vIElmIHRoZSBtZWRpYSBpcyBwbGF5
aW5nIHJlbW90ZWx5LCB3ZSBjYW4ndCBrbm93IGRlZmluaXRpdmVseSB3aGV0aGVyIGl0IGhhcyBh
dWRpbyBvciB2aWRlbyB0cmFja3MuCisgICAgaWYgKG1faXNQbGF5aW5nVG9XaXJlbGVzc1Rhcmdl
dCkKKyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVtOworI2VuZGlmCisKKyAgICBpZiAo
IWhhc1ZpZGVvKCkgfHwgIWhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVybiBTbGVlcFR5cGU6Ok5v
bmU7CiAKICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIFNsZWVwVHlwZTo6U3lzdGVtOwogCi0gICAgcmV0dXJuIG1fcGxheWVy
ICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlkZW8oKSAmJiBoYXNBdWRpbygpICYmICFs
b29wKCk7CisgICAgcmV0dXJuIFNsZWVwVHlwZTo6RGlzcGxheTsKIH0KIAogU3RyaW5nIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MDI5ZWNjMzg2ZjA1NzVjMDc2OTY1Y2E2NjhkMWQz
MmMzMjg1YmRkLi5kYjAzZDU5ZGJjZjFkYzEzODEyODg3NGI4YzNjNDI1NTFmMjQyNjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNjc5LDcgKzY3OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBkb3VibGUgbWVkaWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBj
b25zdCBmaW5hbDsKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1lZGlhUGxheWVyRnVsbHNjcmVl
bk1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmdWxsc2NyZWVuTW9kZSgpOyB9Ci0gICAgYm9v
bCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNo
b3VsZERpc2FibGVTbGVlcCgpOyB9CisgICAgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNob3VsZERpc2FibGVTbGVlcCgpID09IFNsZWVw
VHlwZTo6RGlzcGxheTsgfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFjayYpIGZpbmFsOwpAQCAtNzkxLDcgKzc5MSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNM
aXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbW92aWVMb2FkVHlwZSgpID09IE1l
ZGlhUGxheWVyRW51bXM6OkxpdmVTdHJlYW07IH0KIAogICAgIHZvaWQgdXBkYXRlU2xlZXBEaXNh
YmxpbmcoKTsKLSAgICBib29sIHNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgU2xlZXBUeXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgRGlzcGxheSwKKyAgICAg
ICAgU3lzdGVtLAorICAgIH07CisgICAgU2xlZXBUeXBlIHNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICB2b2lkIGRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2xlZXBEaXNhYmxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcAppbmRleCAxZWMyODdmZjkxMTNmN2VmZDI3MTI0
YzVhYzYxMWIzZGQwZmJhOGU5Li5iMjQzZTc3ZDk0MzM2MTBjYzllOTVjYjViOWVmMzkwNTlmNzc0
ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmNwcApAQCAtMjks
MTMgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
Ci1zdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNv
bnN0IGNoYXIqIHJlYXNvbikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERp
c2FibGVyOjpjcmVhdGUoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNhYmxlcihyZWFz
b24pKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNsZWVwRGlzYWJsZXI+KG5ldyBTbGVl
cERpc2FibGVyKHJlYXNvbiwgdHlwZSkpOwogfQogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkK
IAotU2xlZXBEaXNhYmxlcjo6U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKikKK1NsZWVwRGlzYWJs
ZXI6OlNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0
eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERp
c2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TbGVlcERpc2FibGVyLmgKaW5kZXgg
M2JmYWI5NWE3MjRmYzAzYTY3YWU5NjIyZWJjM2M2YzY2NzAzYjNkZS4uOTcxN2U5YTIwMWI2ZWVk
NDBjZGE2YjZlOGJmNDdmZjFlYmU2ZTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2xlZXBEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NsZWVw
RGlzYWJsZXIuaApAQCAtMjksMTEgKzI5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2xlZXBEaXNhYmxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
bGVlcERpc2FibGVyPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgIFN5c3RlbSwKKyAgICAgICAgRGlzcGxheSwKKyAgICB9OworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gY3JlYXRlKGNvbnN0IGNoYXIqLCBUeXBlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TbGVlcERpc2FibGVyKCk7CiAKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogcHJvdGVjdGVkOgotICAgIFdFQkNP
UkVfRVhQT1JUIFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciopOworICAgIFdFQkNPUkVfRVhQT1JU
IFNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciosIFR5cGUpOworICAgIFR5cGUgbV90eXBlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNh
YmxlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NsZWVwRGlzYWJs
ZXJDb2NvYS5jcHAKaW5kZXggYTFiNTIwMDFlY2Y0MDNmYmQxNjBkNDBhOTBlNTBhMmNlYWI3ZDE5
MS4uZTg5ZWVkODI3MWYyZDdjYzI5N2Y4OTliODkxM2U1N2E2OTViMmE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCkBA
IC0zMywyMiArMzMsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6OnVuaXF1ZV9w
dHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNv
bikKK3N0ZDo6dW5pcXVlX3B0cjxTbGVlcERpc2FibGVyPiBTbGVlcERpc2FibGVyOjpjcmVhdGUo
Y29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxTbGVlcERpc2FibGVyPihuZXcgU2xlZXBEaXNhYmxlckNvY29hKHJlYXNvbikpOworICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4obmV3IFNsZWVwRGlzYWJsZXJD
b2NvYShyZWFzb24sIHR5cGUpKTsKIH0KIAotU2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2Fi
bGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uKQotICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24p
Ci0gICAgLCBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3NlcnRpb24oMCkKK1NsZWVwRGlzYWJsZXJD
b2NvYTo6U2xlZXBEaXNhYmxlckNvY29hKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eXBlKQor
ICAgIDogU2xlZXBEaXNhYmxlcihyZWFzb24sIHR5cGUpCisgICAgLCBtX3NsZWVwQXNzZXJ0aW9u
KDApCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZWFzb25DRiA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIElPUE1Bc3NlcnRpb25DcmVhdGVXaXRoRGVzY3JpcHRp
b24oa0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJZGxlRGlzcGxheVNsZWVwLCByZWFzb25D
Ri5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgJm1fZGlzYWJs
ZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CisKKyAgICBDRlN0cmluZ1JlZiBhc3NlcnRpb25UeXBl
OworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVHlwZTo6RGlzcGxheToKKyAgICAgICAg
YXNzZXJ0aW9uVHlwZSA9IGtJT1BNQXNzZXJ0aW9uVHlwZVByZXZlbnRVc2VySWRsZURpc3BsYXlT
bGVlcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpTeXN0ZW06CisgICAgICAgIGFz
c2VydGlvblR5cGUgPSBrSU9QTUFzc2VydGlvblR5cGVQcmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVl
cDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGFzc2VydGlvblR5cGUgPSBudWxscHRyOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgSU9QTUFzc2VydGlvbkNyZWF0ZVdpdGhEZXNjcmlwdGlvbihhc3NlcnRpb25U
eXBlLCByZWFzb25DRi5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbnVsbHB0
ciwgJm1fc2xlZXBBc3NlcnRpb24pOwogfQogCiBTbGVlcERpc2FibGVyQ29jb2E6On5TbGVlcERp
c2FibGVyQ29jb2EoKQogewotICAgIElPUE1Bc3NlcnRpb25SZWxlYXNlKG1fZGlzYWJsZURpc3Bs
YXlTbGVlcEFzc2VydGlvbik7CisgICAgSU9QTUFzc2VydGlvblJlbGVhc2UobV9zbGVlcEFzc2Vy
dGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NsZWVwRGlzYWJsZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xl
ZXBEaXNhYmxlckNvY29hLmgKaW5kZXggOWIwYjc0ZWI4YzVkMDQwMzhiMDAyNmY3N2MxNmJiM2E0
MTlkN2M0OS4uMTk2ODQwMTIyNWMxNmU3MjBlMjAwMzc3NDRmZjUzYWUyN2Q3Zjc4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmgK
QEAgLTMzLDExICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNsZWVwRGlz
YWJsZXJDb2NvYSA6IHB1YmxpYyBTbGVlcERpc2FibGVyIHsKIHB1YmxpYzoKLSAgICBTbGVlcERp
c2FibGVyQ29jb2EoY29uc3QgY2hhciopOworICAgIFNsZWVwRGlzYWJsZXJDb2NvYShjb25zdCBj
aGFyKiwgVHlwZSk7CiAgICAgdmlydHVhbCB+U2xlZXBEaXNhYmxlckNvY29hKCk7CiAKIHByaXZh
dGU6Ci0gICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0aW9uOworICAgIHVp
bnQzMl90IG1fc2xlZXBBc3NlcnRpb247CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCmlu
ZGV4IDYyNTc5MTc0NjYzMzkyZmQyMjZiMzJlZTY0OTc1ZTQ0YjM2ZTEwYTIuLmVhMjQ3ZWRhMjA5
YzI2MWYwZmYyMGVhMTE5ZGU5YzdhN2FiNmI5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCkBA
IC0zNjIsNyArMzYyLDcgQEAgLSAodm9pZCl1cGRhdGVQb3dlckFzc2VydGlvbnMKICAgICAKICAg
ICBpZiAocmF0ZSAmJiAhX2lzRW5kaW5nRnVsbHNjcmVlbikgewogICAgICAgICBpZiAoIV9kaXNw
bGF5U2xlZXBEaXNhYmxlcikKLSAgICAgICAgICAgIF9kaXNwbGF5U2xlZXBEaXNhYmxlciA9IFNs
ZWVwRGlzYWJsZXI6OmNyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmUgLSBGdWxsc2NyZWVuIHZpZGVv
Iik7CisgICAgICAgICAgICBfZGlzcGxheVNsZWVwRGlzYWJsZXIgPSBTbGVlcERpc2FibGVyOjpj
cmVhdGUoImNvbS5hcHBsZS5XZWJDb3JlIC0gRnVsbHNjcmVlbiB2aWRlbyIsIFNsZWVwRGlzYWJs
ZXI6OlR5cGU6OkRpc3BsYXkpOwogICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIF9kaXNwbGF5
U2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvSU9QTUxpYlNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NvY29hL0lPUE1MaWJTUEkuaAppbmRleCBlMWNlM2FkZjA5MDdiOGI2YjIwYzIwMmI3NjdiZjZk
OTM3Y2VjZjk2Li41ZjcwYjIzNzEyMDdhZTYzYTk2ZTAwZjhiNTE3ZGJhMTk4ODk3NzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvSU9QTUxpYlNQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9JT1BNTGliU1BJLmgKQEAgLTQx
LDYgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBJT1BNQXNzZXJ0aW9uSUQ7CiBXVEZfRVhURVJO
X0NfQkVHSU4KIAogY29uc3QgQ0ZTdHJpbmdSZWYga0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVz
ZXJJZGxlRGlzcGxheVNsZWVwID0gQ0ZTVFIoIlByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcCIp
OworY29uc3QgQ0ZTdHJpbmdSZWYga0lPUE1Bc3NlcnRpb25UeXBlUHJldmVudFVzZXJJZGxlU3lz
dGVtU2xlZXAgPSBDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKTsKIAogV1RGX0VY
VEVSTl9DX0VORAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMzRiYWMyMDE4M2ZjMjBkMzBhYWU4NWIyOGE4MjgwMzE1YjZiZGFlNS4uOWQyYWNm
Mzg3NGU2OWQ3YzkwMDBhNjBhYzI1YWNkMmQ0NWNlOGZmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI0
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN5c3RlbSBzbGVl
cHMgd2hpbGUgcGxheWluZyB0byB3aXJlbGVzcyB0YXJnZXQsIGVuZGluZyBzdHJlYW0uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrU2xlZXBBc3Nl
cnRpb25Mb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dDpmb3JG
cmFtZTpdKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVs
ZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJh
bWU6ZGVjaXNpb25MaXN0ZW5lcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRl
S2V5RG93bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpoYXNBc3NlcnRpb25UeXBlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA1LTI0ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBDcmVhdGUgdW5pcXVlIG5l
dHdvcmsgc3RvcmFnZSBzZXNzaW9uIGZvciBlYWNoIERSVC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOTI0ZjdmOGU2ZjNkYzc5NjVmMDExMzU1NTUyNzVlOThiN2VmOWM3Yi4uMTQ2YTQ4YzMz
MjdmZGI5NDAzNzMwZjQzMzZkMzk1OWRlNzYzODg1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU4Myw2ICs1ODMsOSBAQAogCQlDRDc4RTExRDFEQjdFQTY2MDAxNEEyREUgLyogRnVsbHNj
cmVlbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q3OEUxMUExREI3RUEzNjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJQ0Q3OEUxMUUxREI3RUUyQTAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENENzhFMTFCMURCN0VBMzYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUuaHRtbCAqLzsg
fTsKIAkJQ0Q5RTI5MkUxQzkwQzMzRjAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlFMjkyRDFD
OTBDMUJBMDAwQkI4MDAgLyogYXVkaW8tb25seS5odG1sICovOyB9OworCQlDREEzMTU5ODFFRDUz
NjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2
MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLzsgfTsKKwkJQ0RBMzE1OUEx
RUQ1NDhGMTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTk5
MUVENTQwQTUwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCAqLzsg
fTsKKwkJQ0RBMzE1OUQxRUQ1NjQzRjAwOUY2MEQzIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTMxNTlDMUVENTY0
M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQjQxMTVBMUUwQjAwREIw
MEVBRDM1MiAvKiB2aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCNDExNTkxRTA5REE4RTAwRUFE
MzUyIC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbCAqLzsgfTsKIAkJQ0RCRkNDNDUxQTlG
RjQ1MzAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCRkNDNDMxQTlGRjQ0ODAwQTdC
NjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tICovOyB9OwogCQlDREJGQ0M0NjFB
OUZGNDlFMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJGQ0M0MjFB
OUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLzsgfTsK
QEAgLTY5Nyw4ICs3MDAsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
OwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlGNDdEMzBFRTFF
RDI4RTdEMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCi0JCQkJRjQ3RDMwRUMxRUQyODYzMTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQlDREEzMTU5QTFFRDU0OEYxMDA5RjYwRDMgLyogTWVkaWFQbGF5
YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzlCMTA0
M0UxRUNGOTg0ODAwMDUyMEZBIC8qIGF1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1
bWVudC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2
RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlDOUI0QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE0ODksNiArMTQ5MSw5IEBACiAJCUNEODlEMDM4
MUM0RURCMkEwMDA0MEEwNCAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOUUyOTJEMUM5MEMxQkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXVkaW8tb25seS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBMzE1OTYxRUQ1MzY1MTAwOUY2MEQzIC8qIE1l
ZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
UGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBMzE1OTkxRUQ1NDBBNTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTMxNTlDMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKIAkJQ0RCNDExNTkxRTA5REE4RTAwRUFEMzUyIC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVk
aW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ2aWRlby13aXRoLW11dGVkLWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MjFBOUZGNDQ4
MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQzMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2Ny
ZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU5Miw2ICsxNTk3LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAor
CQkJCUNEQTMxNTlEMUVENTY0M0YwMDlGNjBEMyAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKIAkJCQk2MzQ5MTBFMDFFOUQzRkYzMDA4ODAzMDkgLyogQ29yZUxvY2F0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNCMUQ4NzdDMDUwMEVERTcyQSAv
KiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0Yx
RDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKQEAg
LTE4ODYsNiArMTg5Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGNEZGQUEwMUVEM0QwREUwMEY3MTExRiAvKiBJbWFnZUlPLmZyYW1ld29yayAqLywKKwkJ
CQlDREEzMTU5QzFFRDU2NDNGMDA5RjYwRDMgLyogSU9LaXQuZnJhbWV3b3JrICovLAogCQkJCTYz
NDkxMERGMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovLAogCQkJ
CTdBMDEwQkNBMUQ4NzdDMDUwMEVERTcyQSAvKiBDb3JlR3JhcGhpY3MuZnJhbWV3b3JrICovLAog
CQkJCTdDODNFMDMzMUQwQTVGMjcwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliICovLApAQCAt
MjQzNCw2ICsyNDQxLDcgQEAKIAkJCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93
bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8sCiAJCQkJRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFE
IC8qIFdLV2ViVmlld1NlbGVjdGlvblRlc3RzLm1tICovLAogCQkJCTc2NDMyMkQ1MUI2MUNDQTQw
MDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovLAorCQkJCUNEQTMx
NTk2MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gKi8s
CiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0y
NDcxLDYgKzI0NzksNyBAQAogCQkJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3Jp
cHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovLAogCQkJCUNFMTRGMUEyMTgxODczQjAwMDFDMjcw
NSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sICovLAogCQkJCUE1
RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1s
ICovLAorCQkJCUNEQTMxNTk5MUVENTQwQTUwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24uaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5ODEsNiArMjk5MCw3IEBACiAJCQkJN0NDRTdFQjIxQTQx
MUE1MTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAv
KiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBC
Rjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwQjcxRDBBNjRCODAwRkVCQ0YzIC8qIE1lbnVUeXBlc0Zvck1vdXNl
RXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODk0MURENTk5QzkwMEIwMDMyOCAv
KiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9u
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTEwYTZlNjk1NzIzYTVmMjIwY2JkMWNiNjE5YzY2
ZWM5YmQ3Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVlKTsKKworICAgICAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCdrZXlkb3duJywgbmV4dHN0ZXApOworCisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0
VGVzdCgpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J3ZpZGVvJyk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywg
b25wbGF5aW5nKTsKKyAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywg
b25wYXVzZSk7CisgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcsIG9uY3VycmVudHBsYXliYWNrdGFy
Z2V0aXN3aXJlbGVzc2NoYW5nZWQpOworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2Nh
bGxiYWNrOmxvYWRlZCc7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbnBsYXlpbmco
ZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAg
ICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwbGF5aW5nJzsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9ucGF1c2UoZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpw
YXVzZWQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25jdXJyZW50cGxheWJhY2t0
YXJnZXRpc3dpcmVsZXNzY2hhbmdlZChldmVudCkgeworICAgICAgICAgICAgdmFyIHZpZGVvID0g
ZXZlbnQudGFyZ2V0OworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdmlkZW8ud2Via2l0
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyA/ICdjYWxsYmFjazpyZW1vdGUtc3RhcnQn
IDogJ2NhbGxiYWNrOnJlbW90ZS1lbmQnOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
bmV4dHN0ZXAoKSB7CisgICAgICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCd2aWRlbycpOworICAgICAgICAgICAgaWYgKCF2aWRlby53ZWJraXRDdXJyZW50UGxheWJh
Y2tUYXJnZXRJc1dpcmVsZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnBhdXNlZCkK
KyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICB2aWRlby53ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJTdGF0ZSgnU2xlZXB5IFRWJywgJ0RldmljZUF2YWlsYWJsZScpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCF2aWRlby5wYXVz
ZWQpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLndlYmtpdFNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcigpOworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKCdTbGVlcHkgVFYnLCAnRGV2aWNlVW5hdmFpbGFibGUnKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIHN0YXJ0VGVzdCk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGI0
ZTZjOWE2MjU3ZGZkOGNiOWM5ZDk5M2VmNTcwODRiYmQ4MTE0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9u
Lm1tCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBv
cnQuaCIKKyNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHMuaD4KKyNpbXBvcnQgPElPS2l0
L3B3cl9tZ3QvSU9QTUxpYi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TGVn
YWN5Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvbWFjL0FwcEtp
dENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaD4KKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9h
ZCA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkQmVnaW5QbGF5aW5nID0gZmFsc2U7CitzdGF0aWMg
Ym9vbCBkaWRTdG9wUGxheWluZyA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkQmVnaW5SZW1vdGVQ
bGF5YmFjayA9IGZhbHNlOworc3RhdGljIGJvb2wgZGlkRW5kUmVtb3RlUGxheWJhY2sgPSBmYWxz
ZTsKKworQGludGVyZmFjZSBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Mb2FkRGVsZWdhdGUg
OiBOU09iamVjdCA8V2ViRnJhbWVMb2FkRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb25Mb2FkRGVsZWdhdGUKKy0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBXZWJDb3JlVGVz
dFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdChjb250ZXh0LkpTR2xvYmFsQ29udGV4dFJl
Zik7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9s
aWN5RGVsZWdhdGUgOiBOU09iamVjdDxXZWJQb2xpY3lEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvblBvbGljeURlbGVnYXRlCistICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KE5TRGljdGlvbmFyeSAqKWFjdGlvbkluZm9ybWF0aW9uIHJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZGVjaXNpb25MaXN0ZW5lcjoo
aWQ8V2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcj4pbGlzdGVuZXIKK3sKKyAgICBOU1VSTCogVVJM
ID0gcmVxdWVzdC5VUkw7CisgICAgaWYgKFtVUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImNh
bGxiYWNrIl0pIHsKKyAgICAgICAgaWYgKFtVUkwucmVzb3VyY2VTcGVjaWZpZXIgaXNFcXVhbFRv
U3RyaW5nOkAibG9hZGVkIl0pCisgICAgICAgICAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKKyAg
ICAgICAgZWxzZSBpZiAoW1VSTC5yZXNvdXJjZVNwZWNpZmllciBpc0VxdWFsVG9TdHJpbmc6QCJw
bGF5aW5nIl0pIHsKKyAgICAgICAgICAgIGRpZEJlZ2luUGxheWluZyA9IHRydWU7CisgICAgICAg
ICAgICBkaWRTdG9wUGxheWluZyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKFtVUkwucmVz
b3VyY2VTcGVjaWZpZXIgaXNFcXVhbFRvU3RyaW5nOkAicGF1c2VkIl0pIHsKKyAgICAgICAgICAg
IGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgICAgICAgICAgZGlkU3RvcFBsYXlpbmcgPSB0
cnVlOworICAgICAgICB9IGVsc2UgaWYgKFtVUkwucmVzb3VyY2VTcGVjaWZpZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmVtb3RlLXN0YXJ0Il0pIHsKKyAgICAgICAgICAgIGRpZEJlZ2luUmVtb3RlUGxh
eWJhY2sgPSB0cnVlOworICAgICAgICAgICAgZGlkRW5kUmVtb3RlUGxheWJhY2sgPSBmYWxzZTsK
KyAgICAgICAgfSBlbHNlIGlmIChbVVJMLnJlc291cmNlU3BlY2lmaWVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJlbW90ZS1lbmQiXSkgeworICAgICAgICAgICAgZGlkQmVnaW5SZW1vdGVQbGF5YmFjayA9
IGZhbHNlOworICAgICAgICAgICAgZGlkRW5kUmVtb3RlUGxheWJhY2sgPSB0cnVlOworICAgICAg
ICB9CisKKyAgICAgICAgW2xpc3RlbmVyIGlnbm9yZV07CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBbbGlzdGVuZXIgdXNlXTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgdm9pZCBzaW11bGF0ZUtleURvd24oTlNXaW5kb3cgKndpbmRvdykKK3sK
KyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5
cGVLZXlEb3duCisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6MAorICAgICAgICB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpCisg
ICAgICAgIHdpbmRvd051bWJlcjp3aW5kb3cud2luZG93TnVtYmVyCisgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOkAi
ICIKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOkAiICIKKyAgICAgICAgaXNB
UmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6MHgzMV07CisKKyAgICBbd2luZG93IHNlbmRFdmVu
dDpldmVudF07CisKKyAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVu
dFR5cGVLZXlVcAorICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBt
b2RpZmllckZsYWdzOjAKKyAgICAgICAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKQor
ICAgICAgICB3aW5kb3dOdW1iZXI6d2luZG93LndpbmRvd051bWJlcgorICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczpA
IiAiCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpAIiAiCisgICAgICAgIGlz
QVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOjB4MzFdOworCisgICAgW3dpbmRvdyBzZW5kRXZl
bnQ6ZXZlbnRdOworfQorCitzdGF0aWMgYm9vbCBoYXNBc3NlcnRpb25UeXBlKENGU3RyaW5nUmVm
IHR5cGUpCit7CisgICAgaW50MzJfdCBwaWQgPSBnZXRwaWQoKTsKKyAgICBhdXRvIGNmUGlkID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
MzJUeXBlLCAmcGlkKSk7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGJhcmVBc3NlcnRpb25zQnlQSUQg
PSBudWxscHRyOworCisgICAgSU9QTUNvcHlBc3NlcnRpb25zQnlQcm9jZXNzKCZiYXJlQXNzZXJ0
aW9uc0J5UElEKTsKKyAgICBpZiAoIWJhcmVBc3NlcnRpb25zQnlQSUQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gYXNzZXJ0aW9uc0J5UElEID0gYWRvcHRDRihiYXJlQXNzZXJ0
aW9uc0J5UElEKTsKKworICAgIENGQXJyYXlSZWYgYXNzZXJ0aW9ucyA9IChDRkFycmF5UmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGFzc2VydGlvbnNCeVBJRC5nZXQoKSwgY2ZQaWQuZ2V0KCkpOwor
ICAgIGlmICghYXNzZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChD
RkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhc3NlcnRpb25zKTsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGFzc2VydGlvbiA9IChDRkRpY3Rp
b25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhc3NlcnRpb25zLCBpKTsKKyAgICAgICAg
Q0ZTdHJpbmdSZWYgYXNzZXJ0aW9uVHlwZSA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShhc3NlcnRpb24sIGtJT1BNQXNzZXJ0aW9uVHlwZUtleSk7CisgICAgICAgIGlmIChDRkVx
dWFsKHR5cGUsIGFzc2VydGlvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworVEVTVChXZWJLaXQxLCBNZWRpYVBsYXliYWNrU2xl
ZXBBc3NlcnRpb24pCit7CisgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOworICAgIGRpZEJlZ2lu
UGxheWluZyA9IGZhbHNlOworICAgIGRpZFN0b3BQbGF5aW5nID0gZmFsc2U7CisgICAgZGlkQmVn
aW5SZW1vdGVQbGF5YmFjayA9IGZhbHNlOworICAgIGRpZEVuZFJlbW90ZVBsYXliYWNrID0gZmFs
c2U7CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAs
IDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgICAgIGF1dG8gZnJhbWVM
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uTG9hZERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gcG9saWN5RGVsZWdhdGUgPSBhZG9w
dE5TKFtbTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9uUG9saWN5RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKworICAgICAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TV2luZG93U3R5
bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XSk7CisgICAgICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0
KCldOworICAgICAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250Om5pbF07CisKKyAgICAg
ICAgd2ViVmlldy5nZXQoKS5wb2xpY3lEZWxlZ2F0ZSA9IHBvbGljeURlbGVnYXRlLmdldCgpOwor
ICAgICAgICB3ZWJWaWV3LmdldCgpLmZyYW1lTG9hZERlbGVnYXRlID0gZnJhbWVMb2FkRGVsZWdh
dGUuZ2V0KCk7CisgICAgICAgIFdlYkZyYW1lICptYWluRnJhbWUgPSB3ZWJWaWV3LmdldCgpLm1h
aW5GcmFtZTsKKworICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJN
ZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICAgICAgW21haW5GcmFtZSBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQp
OworICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGhhc0Fzc2VydGlvblR5cGUoQ0ZTVFIoIlByZXZlbnRVc2VySWRsZURpc3BsYXlTbGVlcCIpKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNl
cklkbGVTeXN0ZW1TbGVlcCIpKSk7CisKKyAgICAgICAgc2ltdWxhdGVLZXlEb3duKHdpbmRvdy5n
ZXQoKSk7CisgICAgICAgIFV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNlcklkbGVEaXNwbGF5
U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigi
UHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkpOworCisgICAgICAgIHNpbXVsYXRlS2V5RG93
bih3aW5kb3cuZ2V0KCkpOworICAgICAgICBVdGlsOjpydW4oJmRpZEJlZ2luUmVtb3RlUGxheWJh
Y2spOworCisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBlKENGU1RSKCJQcmV2
ZW50VXNlcklkbGVEaXNwbGF5U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShoYXNBc3Nl
cnRpb25UeXBlKENGU1RSKCJQcmV2ZW50VXNlcklkbGVTeXN0ZW1TbGVlcCIpKSk7CisKKyAgICAg
ICAgc2ltdWxhdGVLZXlEb3duKHdpbmRvdy5nZXQoKSk7CisgICAgICAgIFV0aWw6OnJ1bigmZGlk
U3RvcFBsYXlpbmcpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShoYXNBc3NlcnRpb25UeXBlKENG
U1RSKCJQcmV2ZW50VXNlcklkbGVEaXNwbGF5U2xlZXAiKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0UoaGFzQXNzZXJ0aW9uVHlwZShDRlNUUigiUHJldmVudFVzZXJJZGxlU3lzdGVtU2xlZXAiKSkp
OworICAgIH0KK30KKworfQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>