<?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>106860</bug_id>
          
          <creation_ts>2013-01-14 20:00:39 -0800</creation_ts>
          <short_desc>Split SelectorChecker&apos;s fast-checking logic into its own class.</short_desc>
          <delta_ts>2013-02-21 21:17:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806920</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-14 20:00:39 -0800</bug_when>
    <thetext>Split SelectorChecker&apos;s fast-checking logic into its own class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806921</commentid>
    <comment_count>1</comment_count>
      <attachid>182687</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-14 20:00:55 -0800</bug_when>
    <thetext>Created attachment 182687
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810182</commentid>
    <comment_count>2</comment_count>
      <attachid>183362</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-17 20:55:45 -0800</bug_when>
    <thetext>Created attachment 183362
Things work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810838</commentid>
    <comment_count>3</comment_count>
      <attachid>183507</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-18 10:58:19 -0800</bug_when>
    <thetext>Created attachment 183507
Rebased, ready for EWS bubbles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811036</commentid>
    <comment_count>4</comment_count>
      <attachid>183507</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-18 14:18:13 -0800</bug_when>
    <thetext>Comment on attachment 183507
Rebased, ready for EWS bubbles.

Bubbles say &quot;yay&quot;. Antti, Eric -- wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811076</commentid>
    <comment_count>5</comment_count>
      <attachid>183507</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 15:00:20 -0800</bug_when>
    <thetext>Comment on attachment 183507
Rebased, ready for EWS bubbles.

Attachment 183507 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15942697</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811286</commentid>
    <comment_count>6</comment_count>
      <attachid>183599</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-18 21:07:08 -0800</bug_when>
    <thetext>Created attachment 183599
Awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811385</commentid>
    <comment_count>7</comment_count>
      <attachid>183599</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-19 04:58:37 -0800</bug_when>
    <thetext>Comment on attachment 183599
Awesome.

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

Looks pretty good. Please hold this until kling gets his complicated CSSSelector changes in though.

&gt; Source/WebCore/css/FastPathSelectorMatcher.h:39
&gt; +    FastPathSelectorMatcher(CSSSelector*, Element*);

I think the naming should be consistent with SelectorChecker. I&apos;d also prefer prefix style naming for subsystems. This one could be SelectorCheckerFastPath. What do you think?

&gt; Source/WebCore/css/FastPathSelectorMatcher.h:45
&gt; +    static bool canUseFastPath(const CSSSelector*);

FastPath is redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811414</commentid>
    <comment_count>8</comment_count>
      <attachid>183599</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-19 08:26:40 -0800</bug_when>
    <thetext>Comment on attachment 183599
Awesome.

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

&gt;&gt; Source/WebCore/css/FastPathSelectorMatcher.h:39
&gt;&gt; +    FastPathSelectorMatcher(CSSSelector*, Element*);
&gt; 
&gt; I think the naming should be consistent with SelectorChecker. I&apos;d also prefer prefix style naming for subsystems. This one could be SelectorCheckerFastPath. What do you think?

For what it’s worth, I agree with both of Antti’s suggestions here and I think SelectorCheckerFastPath is a good name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811416</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-19 08:33:59 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 183599 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183599&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/FastPathSelectorMatcher.h:39
&gt; &gt;&gt; +    FastPathSelectorMatcher(CSSSelector*, Element*);
&gt; &gt; 
&gt; &gt; I think the naming should be consistent with SelectorChecker. I&apos;d also prefer prefix style naming for subsystems. This one could be SelectorCheckerFastPath. What do you think?
&gt; 
&gt; For what it’s worth, I agree with both of Antti’s suggestions here and I think SelectorCheckerFastPath is a good name.

SelectorCheckerFastPath it is! Man, I totally wanted to punk Kling and land this before him :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834872</commentid>
    <comment_count>10</comment_count>
      <attachid>188737</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-16 15:58:19 -0800</bug_when>
    <thetext>Created attachment 188737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838162</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-20 22:53:46 -0800</bug_when>
    <thetext>Are you just waiting for love here dglazkov?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838307</commentid>
    <comment_count>12</comment_count>
      <attachid>188737</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-21 03:52:18 -0800</bug_when>
    <thetext>Comment on attachment 188737
Patch

r=me, looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839190</commentid>
    <comment_count>13</comment_count>
      <attachid>189671</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-21 20:55:13 -0800</bug_when>
    <thetext>Created attachment 189671
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839201</commentid>
    <comment_count>14</comment_count>
      <attachid>189671</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 21:17:20 -0800</bug_when>
    <thetext>Comment on attachment 189671
Patch for landing

Clearing flags on attachment: 189671

Committed r143686: &lt;http://trac.webkit.org/changeset/143686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839202</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 21:17:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182687</attachid>
            <date>2013-01-14 20:00:55 -0800</date>
            <delta_ts>2013-01-17 20:55:43 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-106860-20130114195756.patch</filename>
            <type>text/plain</type>
            <size>19096</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2MjMzYjA3NjBiODI4
NDBiZGVjMDM5YjY0NWI0Y2UzZjdkMzFkZi4uOTZlNDc3ZDZjNGM5MDE3NTRmYjlkNWM5YzA4NWI3
Nzc5MmUxMjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTE0ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFk
ZFJ1bGUpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmZhc3RDaGVja1JpZ2h0bW9z
dFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpm
YXN0Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6aXNGYXN0Q2hlY2thYmxlUmlnaHRtb3N0U2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzRmFz
dENoZWNrYWJsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNo
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6Y29tbW9uUHNldWRvQ2xhc3NT
ZWxlY3Rvck1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXI6OmlzRnJhbWVGb2N1c2VkKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6Cisg
ICAgICAgIChTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoRmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6dGFnTWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6YXR0cmlidXRlTmFtZU1h
dGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNoZWNr
RXhhY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXI6OmZhc3RDaGVja1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpydWxl
TWF0Y2hlcyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZSk6CisKIDIwMTMtMDEtMTMgIExldmkg
V2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLiBSb2xsaW5nIG91dCByMTM5NTM3LiBJdCBicm9rZSBwbGF0Zm9ybXMgd2l0aG91dCBz
dWItcGl4ZWwgbGF5b3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGQ4NDAwNGQ5Y2NjMTQ4
NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIuLmZiNTFlMDc4OGQwMjdiN2Y1MWVmM2Y1ZDExMzM2
ZTcwY2FlZWI5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHNlbGVj
dG9yLT50YWcoKSAhPSBzdGFyQXRvbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChT
ZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpCisg
ICAgaWYgKEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0
b3Ioc2VsZWN0b3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gc2VsZWN0b3It
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpDbGFzczsKIH0KQEAgLTExMyw3ICsxMTMsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEo
U3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlv
biwgQQogICAgICwgbV9zZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCiAgICAgLCBtX3Bvc2l0
aW9uKHBvc2l0aW9uKQogICAgICwgbV9zcGVjaWZpY2l0eShzZWxlY3RvcigpLT5zcGVjaWZpY2l0
eSgpKQotICAgICwgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoKGFkZFJ1bGVGbGFncyAmIFJ1
bGVDYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvcikgJiYgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVj
a2FibGVTZWxlY3RvcihzZWxlY3RvcigpKSkKKyAgICAsIG1faGFzRmFzdENoZWNrYWJsZVNlbGVj
dG9yKChhZGRSdWxlRmxhZ3MgJiBSdWxlQ2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpICYmIEZhc3RQ
YXRoU2VsZWN0b3JNYXRjaGVyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcigpKSkK
ICAgICAsIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3IoISFzZWxlY3RvcigpLT50YWdIaXN0b3J5KCkp
CiAgICAgLCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNo
KGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IoKSkpCiAgICAg
LCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcihXZWJDb3JlOjpjb250YWluc1Vu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3Ioc2VsZWN0b3IoKSkpCkBAIC0yMTgsNyArMjE4LDcgQEAg
dm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJ
bmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgot
ICAgIGlmIChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxl
Y3RvcikpIHsKKyAgICBpZiAoRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9uUHNldWRv
Q2xhc3NTZWxlY3RvcihzZWxlY3RvcikpIHsKICAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+cHNl
dWRvVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCmluZGV4IDJiMjZjNjgwNWJiNzNiZjQ5M2Y0Mjk1N2FkNGJlYzQyNTcw
ODEwZDQuLjlmZTI0MDViMjJlN2MxMmI3YjQzMDk4N2E3MmEwNmE3ZjJhZmRjMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02OSw5ICs2OSwxMSBAQCBTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVudCogZG9jdW1lbnQpCiBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2hlcyhDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVtZW50LCBi
b29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKSBjb25zdAogewogICAgIGlmIChpc0Zhc3RDaGVj
a2FibGVTZWxlY3RvciAmJiAhZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpIHsKLSAgICAgICAgaWYg
KCFmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3RvcihzZWwsIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaERp
c2FibGVkKSkKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2hvbGUgdGhpbmcgc2hvdWxkIGJlIGEg
RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZnVuY3Rpb24uCisgICAgICAgIEZhc3RQYXRoU2VsZWN0
b3JNYXRjaGVyIG1hdGNoZXI7CisgICAgICAgIGlmICghbWF0Y2hlci5mYXN0Q2hlY2tSaWdodG1v
c3RTZWxlY3RvcihzZWwsIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaERpc2FibGVkKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGZhc3RDaGVjayhzZWwsIGVsZW1lbnQp
OworICAgICAgICByZXR1cm4gbWF0Y2hlci5mYXN0Q2hlY2soc2VsLCBlbGVtZW50KTsKICAgICB9
CiAKICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBAIC04Niw3
ICs4OCw3IEBAIGlubGluZSBib29sIGZhc3RDaGVja1NpbmdsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqCiAgICAgQXRvbWljU3RyaW5nSW1wbCog
dmFsdWUgPSBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCk7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlID0gaW5pdEF0dHJpYnV0ZU5hbWUgPyBzZWxlY3Rvci0+YXR0cmlidXRlKCkg
OiBhbnlRTmFtZSgpOwogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChjaGVja1ZhbHVlKGVsZW1lbnQsIHZhbHVlLCBh
dHRyaWJ1dGUpICYmIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rv
cikpIHsKKyAgICAgICAgaWYgKGNoZWNrVmFsdWUoZWxlbWVudCwgdmFsdWUsIGF0dHJpYnV0ZSkg
JiYgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OnRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3Ip
KSB7CiAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6
OkRlc2NlbmRhbnQpCiAgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsK
ICAgICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKQEAgLTEyOCw3
ICsxMzAsNyBAQCBpbmxpbmUgYm9vbCBjaGVja0lEVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVu
dCwgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUsIGNvbnN0CiAKIGlubGluZSBib29sIGNoZWNrRXhh
Y3RBdHRyaWJ1dGVWYWx1ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBBdG9taWNTdHJpbmdJbXBs
KiB2YWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICByZXR1
cm4gU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNoZWNr
RXhhY3RBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiBpbmxp
bmUgYm9vbCBjaGVja1RhZ1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpCkBAIC0xMzgsMTEgKzE0MCwxMSBAQCBpbmxpbmUgYm9vbCBj
aGVja1RhZ1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKiwgY29uc3QgUXVh
bGlmaWVkTmFtZQogCiB9CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNr
UmlnaHRtb3N0U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Citp
bmxpbmUgYm9vbCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2Vs
ZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkgY29u
c3QKIHsKICAgICBBU1NFUlQoaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKTsKIAot
ICAgIGlmICghU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSkK
KyAgICBpZiAoIXRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewogICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6Ok5vbmU6CkBAIC0xNjIsNyArMTY0LDcgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2so
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAorYm9vbCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6ZmFzdENoZWNrKGNvbnN0IENTU1NlbGVj
dG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQsIFZpc2l0ZWRN
YXRjaEVuYWJsZWQpKTsKIApAQCAtMjI0LDEwICsyMjYsMTAgQEAgc3RhdGljIGlubGluZSBib29s
IGlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvcikKIHsKICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKHNlbGVjdG9yLT5yZWxh
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0Zhc3RDaGVja2Fi
bGVNYXRjaChzZWxlY3RvcikgfHwgU2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNz
U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgIHJldHVybiBpc0Zhc3RDaGVja2FibGVNYXRjaChzZWxl
Y3RvcikgfHwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxl
Y3RvcihzZWxlY3Rvcik7CiB9CiAKLWJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2Fi
bGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitib29sIEZhc3RQYXRoU2Vs
ZWN0b3JNYXRjaGVyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IpCiB7CiAgICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihz
ZWxlY3RvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyNiw3ICs1MjgsNyBAQCBzdGF0
aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9y
OjpNYXRjaCBtYXRjaCwgY29ucwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudC0+
YXR0cmlidXRlQ291bnQoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmli
dXRlSXRlbSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAKLSAgICAgICAgaWYgKCFTZWxl
Y3RvckNoZWNrZXI6OmF0dHJpYnV0ZU5hbWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHNlbGVjdG9y
QXR0cikpCisgICAgICAgIGlmICghRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmF0dHJpYnV0ZU5h
bWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHNlbGVjdG9yQXR0cikpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0s
IG1hdGNoLCBzZWxlY3RvclZhbHVlLCBjYXNlU2Vuc2l0aXZlKSkKQEAgLTU0NCw3ICs1NDYsOCBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFNpYgogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBBU1NF
UlQoc2VsZWN0b3IpOwogCi0gICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoZWxl
bWVudCwgc2VsZWN0b3IpKQorICAgIC8vIEZJWE1FOiBNQVlCRSBUSElTIE9ORSBJU04nVCBhIGZ1
bmN0aW9uIG9mIGZwc20gZWl0aGVyISEhCisgICAgaWYgKCFGYXN0UGF0aFNlbGVjdG9yTWF0Y2hl
cjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpCkBAIC03
OTQsNyArNzk3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9Gb2N1czoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFz
cyhlbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6
bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0hvdmVyOgogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUs
IHRoZW4gaG92ZXIgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAg
ICAgLy8gaHJlZiBhbmQgKjpob3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiBUaGlzIGlz
IGltcG9ydGFudCBmb3Igc2l0ZXMgbGlrZSB3c2ouY29tLgpAQCAtMTA2NSw3ICsxMDY4LDcgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoRG9jdW1lbnQq
IGRvY3VtZW50LCBDU1NTZWxlY3RvcioKICAgICB9CiB9CiAKLWJvb2wgU2VsZWN0b3JDaGVja2Vy
Ojpjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1h
dGNoVHlwZSkgY29uc3QKK2Jvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNvbW1vblBzZXVk
b0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0
ZWRNYXRjaFR5cGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxl
Y3RvcihzZWxlY3RvcikpOwogICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewpA
QCAtMTA3Myw3ICsxMDc2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNvbW1vblBzZXVkb0Ns
YXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGMKICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgogICAgICAgICByZXR1cm4gZWxlbWVudC0+aXNMaW5r
KCk7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZDoKLSAgICAgICAgcmV0dXJu
IGVsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlzaXRlZE1hdGNoRW5h
YmxlZDsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5
cGUgPT0gU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hFbmFibGVkOwogICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0ZvY3VzOgogICAgICAgICByZXR1cm4gbWF0Y2hlc0ZvY3VzUHNldWRv
Q2xhc3MoZWxlbWVudCk7CiAgICAgZGVmYXVsdDoKQEAgLTExMjcsNyArMTEzMCw3IEBAIHVuc2ln
bmVkIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3IpCiAgICAgcmV0dXJuIGxpbmtNYXRjaFR5cGU7CiB9CiAKLWJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjppc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQorYm9v
bCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6aXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICByZXR1cm4gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBl
bGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0
aXZlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMmE5N2ZjOGM2
MmNjMmFhYzQ1NjM2NzZiMDAxNjI4ZmM0NmU0MzExNS4uZTViN2JhMmMyODU0ZmFmMmJmZjEwY2Q0
Y2JjOGY0NWE5YTk5N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAt
ODIsMzcgKzgyLDQzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3k+CiAgICAgYm9vbCBjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5n
Q29udGV4dCYsIGNvbnN0IFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSYpIGNvbnN0OwogCi0gICAg
c3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsK
LSAgICBib29sIGZhc3RDaGVjayhjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKSBj
b25zdDsKLQogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0
UGFyc2luZzsgfQogCiAgICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAg
ICAgdm9pZCBzZXRNb2RlKE1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9CiAKLSAgICBzdGF0
aWMgYm9vbCB0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopOwot
ICAgIHN0YXRpYyBib29sIGF0dHJpYnV0ZU5hbWVNYXRjaGVzKGNvbnN0IEF0dHJpYnV0ZSosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNz
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBib29sIG1hdGNoZXNGb2N1c1BzZXVk
b0NsYXNzKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tS
aWdodG1vc3RBdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0
b3IqKTsKLSAgICBzdGF0aWMgYm9vbCBjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQq
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwqIHZhbHVlKTsKLQogICAgIGVudW0gTGlua01hdGNoTWFzayB7IE1hdGNoTGlu
ayA9IDEsIE1hdGNoVmlzaXRlZCA9IDIsIE1hdGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNp
dGVkIH07CiAgICAgc3RhdGljIHVuc2lnbmVkIGRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3Qg
Q1NTU2VsZWN0b3IqKTsKIAogcHJpdmF0ZToKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRv
Q2xhc3MoRG9jdW1lbnQqLCBDU1NTZWxlY3RvciopIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGlz
RnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqKTsKLQotICAgIGJvb2wgZmFzdENoZWNrUmlnaHRt
b3N0U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50KiwgVmlzaXRlZE1h
dGNoVHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hl
cyhjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBWaXNpdGVkTWF0Y2hUeXBlKSBj
b25zdDsKIAogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAgIGJvb2wgbV9kb2N1bWVudElz
SFRNTDsKICAgICBNb2RlIG1fbW9kZTsKIH07CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rv
cikKK2NsYXNzIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Ym9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOworICAgIGJv
b2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNvbnN0Owor
CisgICAgc3RhdGljIGJvb2wgdGFnTWF0Y2hlcyhjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKKyAgICBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVOYW1lTWF0Y2hlcyhjb25zdCBBdHRy
aWJ1dGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgc3RhdGljIGJvb2wgaXNDb21tb25Q
c2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CisgICAgc3RhdGljIGJvb2wg
bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCopOworICAgIHN0YXRpYyBib29s
IGZhc3RDaGVja1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IEVsZW1lbnQqLCBjb25z
dCBDU1NTZWxlY3RvciopOworICAgIHN0YXRpYyBib29sIGNoZWNrRXhhY3RBdHRyaWJ1dGUoY29u
c3QgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpOworCisgICAgLy8gRklYTUU6IFRoaXMgdXNl
ZCB0byBiZSBwcml2YXRlISEhCisgICAgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqLCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0
ZWRNYXRjaFR5cGUpIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgY29tbW9uUHNldWRvQ2xh
c3NTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKiwgU2Vs
ZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBlKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBp
c0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7Cit9OworCitpbmxpbmUgYm9vbCBGYXN0UGF0
aFNlbGVjdG9yTWF0Y2hlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjMsMTQgKzEy
OSwxNCBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NT
ZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZQogICAgICAgICB8fCBwc2V1ZG9UeXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czsKIH0KIAotaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAoraW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6Om1hdGNoZXNGb2N1c1BzZXVk
b0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
cmV0dXJuIGVsZW1lbnQtPmZvY3VzZWQoKSAmJiBpc0ZyYW1lRm9jdXNlZChlbGVtZW50KTsKIH0K
IAotaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK2lubGluZSBib29sIEZhc3RQ
YXRoU2VsZWN0b3JNYXRjaGVyOjp0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAoIXNlbGVjdG9yLT5oYXNUYWco
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDEsMTQgKzE0NywxNCBAQCBpbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0bwogICAgIHJldHVybiBuYW1lc3BhY2VVUkkgPT0gc3RhckF0b20gfHwgbmFt
ZXNwYWNlVVJJID09IGVsZW1lbnQtPm5hbWVzcGFjZVVSSSgpOwogfQogCi1pbmxpbmUgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZU5hbWVNYXRjaGVzKGNvbnN0IEF0dHJpYnV0ZSogYXR0
cmlidXRlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUpCitpbmxp
bmUgYm9vbCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoY29u
c3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0
cmlidXRlTmFtZSkKIHsKICAgICBpZiAoc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgp
ICE9IGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLnByZWZpeCgpID09IHN0YXJBdG9tIHx8IHNlbGVj
dG9yQXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFjZVVS
SSgpOwogfQogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1
dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JB
dHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSkKK2lubGluZSBib29s
IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5oYXNB
dHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjEs
NyArMTY3LDcgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmli
dXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFEKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0cmli
dXRlU2VsZWN0b3IoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yKQoraW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmZhc3RDaGVja1Jp
Z2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENT
U1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OkV4YWN0IHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpTZXQp
CiAgICAgICAgIHJldHVybiBjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIHNlbGVjdG9yLT5h
dHRyaWJ1dGUoKSwgc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAppbmRleCA4MTQxYmY5YzdlNDIxOTdlMTM0ZDQwNTVmNGYzNjJlZGY3M2Nj
MDg2Li45ZTM1ODZmNTEzYTdjY2ZkZmMxZjQ1ZDJjMjA3MmEwOGEwZDFlZWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02NzgsNyArNjc4LDggQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1
bGVJbmRleCwgaW4KIAogICAgIGlmIChtX2VsZW1lbnQtPmlzTGluaygpKQogICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKLSAgICBpZiAobV9zZWxlY3Rv
ckNoZWNrZXIubWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KSkKKyAgICAvLyBGSVhN
RTogVGhpcyB0ZWxscyBtZSB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIG9uIGZhc3Rw
YXRoYW1hamlneSEhCisgICAgaWYgKEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjptYXRjaGVzRm9j
dXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QocnVsZXMtPmZvY3VzUHNldWRvQ2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QocnVsZXMtPnVuaXZlcnNhbFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4LCBvcHRpb25zKTsKQEAgLTIyNTEsMTEgKzIyNTIsMTIgQEAgaW5saW5lIGJvb2wgU3R5bGVS
ZXNvbHZlcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250
YWluZXIKICAgICAgICAgaWYgKHJ1bGVEYXRhLmhhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdI
VE1MQmFzZWRPblJ1bGVIYXNoKCkgJiYgbV9lbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpIHsKICAg
ICAgICAgICAgIGlmICghcnVsZURhdGEuaGFzTXVsdGlwYXJ0U2VsZWN0b3IoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICghU2VsZWN0b3JDaGVja2Vy
Ojp0YWdNYXRjaGVzKG1fZWxlbWVudCwgcnVsZURhdGEuc2VsZWN0b3IoKSkpCisgICAgICAgIH0g
ZWxzZSBpZiAoIUZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjp0YWdNYXRjaGVzKG1fZWxlbWVudCwg
cnVsZURhdGEuc2VsZWN0b3IoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICghU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3Rv
cihtX2VsZW1lbnQsIHJ1bGVEYXRhLnNlbGVjdG9yKCkpKQorICAgICAgICBpZiAoIUZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyOjpmYXN0Q2hlY2tSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3RvcihtX2Vs
ZW1lbnQsIHJ1bGVEYXRhLnNlbGVjdG9yKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuZmFzdENoZWNrKHJ1bGVEYXRhLnNlbGVj
dG9yKCksIG1fZWxlbWVudCk7CisgICAgICAgIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyIG1hdGNo
ZXI7CisgICAgICAgIHJldHVybiBtYXRjaGVyLmZhc3RDaGVjayhydWxlRGF0YS5zZWxlY3Rvcigp
LCBtX2VsZW1lbnQpOwogICAgIH0KIAogICAgIC8vIFNsb3cgcGF0aC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA1ODc4MmZiNGMyMjZlMDdiYTNlY2NjOGFmMGI4NDBjNTdk
ZmJhYzYzLi5lMTAyYzZkN2QwOGZmZDUxYTMxMmJiMTIwYmUwNzQ1ZjY2M2Y1MTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2VsZWN0
b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlz
dCkKIAogICAgIG1fc2VsZWN0b3JzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VsZWN0b3JDb3Vu
dCk7CiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3Qo
KTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkK
LSAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2VkQXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3Rv
ciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsK
KyAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2VkQXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3Rv
ciwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVj
dG9yKSkpOwogfQogCiBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3QgU2VsZWN0
b3JDaGVja2VyJiBzZWxlY3RvckNoZWNrZXIsIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183362</attachid>
            <date>2013-01-17 20:55:45 -0800</date>
            <delta_ts>2013-01-18 10:58:17 -0800</delta_ts>
            <desc>Things work.</desc>
            <filename>bug-106860-20130117205245.patch</filename>
            <type>text/plain</type>
            <size>50179</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2MjMzYjA3NjBiODI4
NDBiZGVjMDM5YjY0NWI0Y2UzZjdkMzFkZi4uNDFjOTJjM2NjYWU3MTlmNDE5M2Y4OWY2ZDFhZmE4
ZGJjYjM0ZWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAxLTE3ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGNzcy9DU1NBbGxJbk9uZS5jcHA6CisgICAgICAgICogY3NzL0Zhc3RQYXRoU2VsZWN0
b3JNYXRjaGVyLmNwcDogQWRkZWQuCisgICAgICAgIChIVE1MTmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTmFtZXM6OmNoZWNrQ2xhc3NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZXM6OmNoZWNrSURWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OmNoZWNr
RXhhY3RBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OmNoZWNr
VGFnVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGYXN0UGF0
aFNlbGVjdG9yTWF0Y2hlcjo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6Om1hdGNoZXNSaWdodG1vc3RTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6bWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc0Zhc3RDaGVja2FibGVSZWxhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjppc0Zhc3RDaGVja2FibGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjppc0Zhc3RDaGVj
a2FibGVSaWdodG1vc3RTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcjo6Y2FuVXNlRmFzdFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhT
ZWxlY3Rvck1hdGNoZXI6OmNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKToKKyAgICAg
ICAgKiBjc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjptYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL1J1bGVTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxl
SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hl
Y2tlcjo6bWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0V4YWN0QXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoU2VsZWN0b3JDaGVja2VyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpt
YXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMpOgorICAgICAg
ICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0
YUxpc3Q6OmluaXRpYWxpemUpOgorCiAyMDEzLTAxLTEzICBMZXZpIFdlaW50cmF1YiAgPGxldml3
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4gUm9sbGluZyBv
dXQgcjEzOTUzNy4gSXQgYnJva2UgcGxhdGZvcm1zIHdpdGhvdXQgc3ViLXBpeGVsIGxheW91dC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJjZTYyMTFjMjY1MjgzOWM0OGI1MDE2OGIzNjUyMTBh
NmE1NjFmYS4uMGI4N2ZiZmM4Y2JiY2MyZTNhNTlmNTk1YTgxYjE0MzBkYTliYzMxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTEwNjMsNiArMTA2Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTVmFsdWUuY3BwCiAgICAgY3NzL0NTU1ZhbHVlTGlzdC5jcHAKICAgICBjc3Mv
Q1NTVmFsdWVQb29sLmNwcAorICAgIGNzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAKICAg
ICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKICAgICBjc3MvRm9udFZhbHVlLmNwcAogICAgIGNz
cy9MZW5ndGhGdW5jdGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBm
YWJmMzUzNTM5MDQ0YWZlYjcwNDAxZjI2YWMxODEzMTNjY2Q2NzVmLi5lOWFiYTc4ZDM5MWY4YzUw
MjdkYTFkYTJjZWI0MWY4MzZiNDQ3ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTI2MTEsNiArMjYxMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVW
YWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZlYXR1cmVWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZh
bHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IGVkZGZhNzIyMTdjMGFmYmU5OTVlZTk0NjI4YmIzMjBkMjk1NmMzZTAuLmMwYjI4YzQ1ZWU4
MWUzYmRhODMzYmEzN2ZiMDZlMTZmN2Y2YWUwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjkzLDYgKzI5
Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NW
YWx1ZUxpc3QuY3BwIFwKICAgICBjc3MvQ1NTVmFsdWVQb29sLmNwcCBcCisgICAgY3NzL0Zhc3RQ
YXRoU2VsZWN0b3JNYXRjaGVyLmNwcCBcCiAgICAgY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIFwK
ICAgICBjc3MvRm9udFZhbHVlLmNwcCBcCiAgICAgY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGRhMjkyYzFiZWU4M2FmODAxNzY1MDY3N2Y0ODFlZmJkMjhjMmI4
YjkuLjYwNDQ2NDliMDU1YjE0MTc1NjQ1YmY1YWRjYjc2M2UxMWFmMDkwNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTE1MjQsNiArMTUyNCw4IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ZhcmlhYmxl
VmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NvdW50ZXIuaCcsCiAgICAgICAgICAgICAnY3Nz
L0Rhc2hib2FyZFJlZ2lvbi5oJywKKyAgICAgICAgICAgICdjc3MvRmFzdFBhdGhTZWxlY3Rvck1h
dGNoZXIuY3BwJywKKyAgICAgICAgICAgICdjc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCcs
CiAgICAgICAgICAgICAnY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwJywKICAgICAgICAgICAgICdj
c3MvRm9udEZlYXR1cmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggN2YxMTQxNDgyMzFjZTFhNmI1NWIzZjE4OTM0OTFjZDYxMjg5Y2MzMy4uZDAxYTQ2MzNi
OGY5ZGU0YTEzMTVjYWViNDk0ZGEyMTNlN2I1NzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTExNiw2ICsxMTE2LDggQEAK
IAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1
NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFFMUIxRDMwRkY1OTg2OTAwNTc2
QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNw
cCAqLzsgfTsKIAkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0UwRkY1
OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovOyB9OworCQk0MUUxRTU3MDE2QTVERjE4
MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUU1NkUxNkE1REYxODAwNDgzQkQyIC8q
IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCAqLzsgfTsKKwkJNDFFMUU1NzExNkE1REYxODAw
NDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxRTU2RjE2QTVERjE4MDA0ODNCRDIgLyogRmFz
dFBhdGhTZWxlY3Rvck1hdGNoZXIuaCAqLzsgfTsKIAkJNDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFD
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdF
QUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovOyB9OwogCQk0MUYwNjE4RTBGNUYwNjk4
MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVz
c2FnZS5oICovOyB9OwpAQCAtMTI4OCw4ICsxMjkwLDggQEAKIAkJNDk0ODRGQzExMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkIzMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFk
aWVudC5jcHAgKi87IH07CiAJCTQ5NDg0RkMyMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFk
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0
ODRGQjQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggKi87IH07CiAJCTQ5NDg0
RkM0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkI2MTAyQ0YyM0MwMDE4N0REMyAv
KiBDYW52YXNQYXR0ZXJuLmNwcCAqLzsgfTsKLQkJNDk0ODRGQzUxMDJDRjIzQzAwMTg3REQzIC8q
IENhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NDg0RkI3MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggKi87IH07
CiAJCTQ5NDg0RkM0MTAyQ0YyM0MwMDE4OEREMyAvKiBDYW52YXNQcm94eS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCNjEwMkNGMjNDMDAx
ODhERDMgLyogQ2FudmFzUHJveHkuY3BwICovOyB9OworCQk0OTQ4NEZDNTEwMkNGMjNDMDAxODdE
RDMgLyogQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDk0ODRGQjcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaCAq
LzsgfTsKIAkJNDk0ODRGQzUxMDJDRjIzQzAwMTg4REQzIC8qIENhbnZhc1Byb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCNzEwMkNGMjND
MDAxODhERDMgLyogQ2FudmFzUHJveHkuaCAqLzsgfTsKIAkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCQzEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLzsgfTsKIAkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0ODRGQkQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwpAQCAtMTg1OSw4ICsxODYxLDggQEAKIAkJNjVE
RjMyMzkwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMyMzMwOUQxREU2NTAwMEJF
MzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3BwICovOyB9OwogCQk2NURGMzIzQTA5RDFERTY1MDAw
QkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3Jh
ZGllbnQuaCAqLzsgfTsKIAkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0
dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NURGMzIzNTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmNwcCAqLzsgfTsKLQkJ
NjVERjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMyMzYwOUQxREU2NTAwMEJF
MzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovOyB9OwogCQk2NURGMzIzQjA5RDFERTY1MDAxQkUz
MjUgLyogSlNDYW52YXNQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NURGMzIzNTA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQcm94eS5j
cHAgKi87IH07CisJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REYzMjM2
MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCAqLzsgfTsKIAkJNjVERjMyM0Mw
OUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REYzMjM2MDlEMURFNjUwMDFCRTMyNSAvKiBKU0Nh
bnZhc1Byb3h5LmggKi87IH07CiAJCTY1REYzMjYxMDlEMUUxOTkwMDBCRTMyNSAvKiBVc2VyQWdl
bnRTdHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hl
ZXRzRGF0YS5jcHAgKi87IH07CiAJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdy
YXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
RTBFOTQzMTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM3Nyw2ICs4Mzc5LDggQEAKIAkJ
NDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFD
RTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNC
IC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2Vy
LmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFMUU1NkUxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JN
YXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUU1
NkYxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
MDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNvbGVNZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NTc3LDEwICs4NTgxLDEwIEBACiAJCTQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNHcmFkaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
YW52YXNHcmFkaWVudC5oOyBwYXRoID0gY2FudmFzL0NhbnZhc0dyYWRpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNH
cmFkaWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ2FudmFzR3JhZGllbnQuaWRsOyBw
YXRoID0gY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDk0ODRGQjYxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FudmFzUGF0dGVybi5jcHA7IHBhdGgg
PSBjYW52YXMvQ2FudmFzUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ5NDg0RkI3MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZhc1BhdHRlcm4uaDsgcGF0aCA9IGNhbnZhcy9DYW52
YXNQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5NDg0RkI4MTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBD
YW52YXNQYXR0ZXJuLmlkbDsgcGF0aCA9IGNhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0ODRGQjYxMDJDRjIzQzAwMTg4REQzIC8qIENhbnZh
c1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZhc1By
b3h5LmNwcDsgcGF0aCA9IGNhbnZhcy9DYW52YXNQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5NDg0RkI3MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZhc1BhdHRlcm4uaDsgcGF0aCA9
IGNhbnZhcy9DYW52YXNQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
NDg0RkI3MTAyQ0YyM0MwMDE4OEREMyAvKiBDYW52YXNQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDYW52YXNQcm94eS5oOyBwYXRoID0gY2FudmFzL0NhbnZhc1Byb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NDg0RkI4MTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNQYXR0ZXJuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDYW52YXNQYXR0
ZXJuLmlkbDsgcGF0aCA9IGNhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDk0ODRGQjgxMDJDRjIzQzAwMTg4REQzIC8qIENhbnZhc1Byb3h5Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDYW52YXNQcm94eS5pZGw7IHBhdGggPSBjYW52YXMv
Q2FudmFzUHJveHkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ4NEZCQzEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA7
IHBhdGggPSBjYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDk0ODRGQkQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaDsgcGF0aCA9IGNhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxOTUsOCArOTE5OSw4IEBACiAJ
CTY1REYzMjMzMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc0dyYWRpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzQwOUQxREU2NTAwMEJFMzI1IC8qIEpT
Q2FudmFzR3JhZGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2Fu
dmFzR3JhZGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzUwOUQx
REU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REYzMjM1MDlEMURFNjUwMDFCRTMyNSAvKiBK
U0NhbnZhc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NhbnZhc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVERjMyMzYw
OUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1REYzMjM2MDlEMURFNjUwMDFCRTMyNSAvKiBKU0NhbnZhc1Byb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1Byb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RTBFOTQzMTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XcmFwcGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBC
bG9ja0V4Y2VwdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMjE2MjEsNiArMjE2MjUs
OCBAQAogCQkJCUU0OUJEOUY5MTMxRkQyRUQwMDNDNTZGMCAvKiBDU1NWYWx1ZVBvb2wuaCAqLywK
IAkJCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEgLyogQ1NTVmFyaWFibGVWYWx1ZS5oICovLAog
CQkJCUE4MEU2Q0UxMEExOTg5Q0EwMDdGQjhDNSAvKiBEYXNoYm9hcmRSZWdpb24uaCAqLywKKwkJ
CQk0MUUxRTU2RTE2QTVERjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3Bw
ICovLAorCQkJCTQxRTFFNTZGMTZBNURGMTgwMDQ4M0JEMiAvKiBGYXN0UGF0aFNlbGVjdG9yTWF0
Y2hlci5oICovLAogCQkJCTRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZh
bHVlLmNwcCAqLywKIAkJCQk0QTZFOUZDMjEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVW
YWx1ZS5oICovLAogCQkJCUE4MEU2Q0M3MEExOTg5Q0EwMDdGQjhDNSAvKiBGb250VmFsdWUuY3Bw
ICovLApAQCAtMjYxMDYsNiArMjYxMTIsNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTFFNTcx
MTZBNURGMTgwMDQ4M0JEMiAvKiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTIzOCw2ICsyOTI0NSw3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5
IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAw
MDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCRjg5MDQ1MTY5RTlG
MUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFF
MUU1NzAxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggYjA2YTY4ZDkxMTE4
NDVjYjIxNjA0OGJmY2NiYmFkNDE4Nzc5ZmE4Yy4uMDFkNjg3YjVlNDdhZDZkYTE3Yjc4ZjE3OTc0
YWU3MDk3OTI0OWZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC02Nyw2ICs2
Nyw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWUuY3BwIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5j
cHAiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmNwcCIKKyNpbmNsdWRlICJGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuY3BwIgogI2luY2x1ZGUgIlJ1
bGVTZXQuY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MjYzM2Ix
NTU5MjQyMjJmZjgyOTYzZDQ5N2VhOTliNDRlMTVkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjI4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBj
YXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtz
ICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJp
Z2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmFzdFBhdGhTZWxlY3Rv
ck1hdGNoZXIuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlN0eWxlZEVs
ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVs
ZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpLCBib29sIGlu
aXRBdHRyaWJ1dGVOYW1lPgoraW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3IoY29u
c3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudComIGVsZW1lbnQsIGNvbnN0
IENTU1NlbGVjdG9yKiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgdG9w
Q2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQoreworICAgIEF0b21pY1N0cmluZ0ltcGwq
IHZhbHVlID0gc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZSA9IGluaXRBdHRyaWJ1dGVOYW1lID8gc2VsZWN0b3ItPmF0dHJpYnV0ZSgp
IDogYW55UU5hbWUoKTsKKyAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoY2hlY2tWYWx1ZShlbGVtZW50LCB2YWx1ZSwg
YXR0cmlidXRlKSAmJiBTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0
b3IpKSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0
b3I6OkRlc2NlbmRhbnQpCisgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0g
MDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNo
aWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7
CisgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gc2VsZWN0b3I7CisgICAg
ICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50ID0gZWxlbWVudDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBD
U1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3ItPnRh
Z0hpc3RvcnkoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IGlmICh0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKKyAgICAgICAgICAgIC8vIENoaWxkIG9yIHN1
YnNlbGVjdG9yIGNoZWNrIGZhaWxlZC4KKyAgICAgICAgICAgIC8vIElmIHRoZSBtYXRjaCBlbGVt
ZW50IGlzIG51bGwsIHRvcENoaWxkT3JTdWJzZWxlY3RvciB3YXMgYWxzbyB0aGUgdmVyeSB0b3Bt
b3N0IHNlbGVjdG9yIGFuZCBoYWQgdG8gbWF0Y2gKKyAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBlbGVtZW50IHdlIHdlcmUgY2hlY2tpbmcuCisgICAgICAgICAgICBpZiAoIXRvcENoaWxkT3JT
dWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgbWF0Y2hlcyBkb3duIHRoZSBhbmNlc3Rv
ciBjaGFpbi4KKyAgICAgICAgICAgIC8vIFJld2luZCB0byB0aGUgdG9wbW9zdCBjaGlsZCBvciBz
dWJzZWxlY3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0Y2hlZCwgY29udGludWUgY2hlY2tpbmcg
YW5jZXN0b3JzLgorICAgICAgICAgICAgc2VsZWN0b3IgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3I7
CisgICAgICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50
LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAw
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBjaGVja0NsYXNzVmFsdWUoY29uc3QgRWxlbWVudCog
ZWxlbWVudCwgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQor
eworICAgIHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygpICYmIHN0YXRpY19jYXN0PGNvbnN0IFN0
eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKHZhbHVlKTsKK30K
KworaW5saW5lIGJvb2wgY2hlY2tJRFZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21p
Y1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJikKK3sKKyAgICByZXR1cm4g
ZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwo
KSA9PSB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQoreworICAgIHJldHVybiBGYXN0UGF0aFNlbGVjdG9y
TWF0Y2hlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCB2YWx1
ZSk7Cit9CisKK2lubGluZSBib29sIGNoZWNrVGFnVmFsdWUoY29uc3QgRWxlbWVudCosIEF0b21p
Y1N0cmluZ0ltcGwqLCBjb25zdCBRdWFsaWZpZWROYW1lJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfQorCitGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6RmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXIoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50KiBlbGVtZW50KQorICAgIDogbV9zZWxl
Y3RvcihzZWxlY3RvcikKKyAgICAsIG1fZWxlbWVudChlbGVtZW50KQoreworfQorCitib29sIEZh
c3RQYXRoU2VsZWN0b3JNYXRjaGVyOjptYXRjaGVzUmlnaHRtb3N0U2VsZWN0b3IoU2VsZWN0b3JD
aGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKG1fc2VsZWN0b3IpKTsKKworICAgIGlmICgh
U2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKG1fZWxlbWVudCwgbV9zZWxlY3RvcikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKG1fc2VsZWN0b3ItPm1fbWF0Y2gpIHsKKyAg
ICBjYXNlIENTU1NlbGVjdG9yOjpOb25lOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpDbGFzczoKKyAgICAgICAgcmV0dXJuIGNoZWNrQ2xhc3NWYWx1ZShtX2Vs
ZW1lbnQsIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFtZSgpKTsKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgcmV0dXJuIGNoZWNrSURWYWx1ZShtX2VsZW1lbnQs
IG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFtZSgpKTsKKyAgICBjYXNlIENTU1Nl
bGVjdG9yOjpFeGFjdDoKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6CisgICAgICAgIHJldHVy
biBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUobV9lbGVtZW50LCBtX3NlbGVjdG9yLT52YWx1ZSgp
LmltcGwoKSwgbV9zZWxlY3Rvci0+YXR0cmlidXRlKCkpOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzOgorICAgICAgICByZXR1cm4gY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1h
dGNoZXModmlzaXRlZE1hdGNoVHlwZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGYXN0UGF0
aFNlbGVjdG9yTWF0Y2hlcjo6bWF0Y2hlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZhc3RDaGVj
a1JpZ2h0bW9zdFNlbGVjdG9yKFZpc2l0ZWRNYXRjaEVuYWJsZWQpKTsKKworICAgIGNvbnN0IENT
U1NlbGVjdG9yKiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQq
IHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCA9IDA7CisKKyAgICBjb25zdCBFbGVt
ZW50KiBlbGVtZW50ID0gbV9lbGVtZW50OworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciA9IG1fc2VsZWN0b3I7CisKKyAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2Vs
ZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJT
ZWxlY3RvcikKKyAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gbV9zZWxlY3RvcjsKKwor
ICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3Ip
CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisKKyAgICBzZWxl
Y3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisKKyAgICAvLyBXZSBrbm93IHRoaXMgY29t
cG91bmQgc2VsZWN0b3IgaGFzIGRlc2NlbmRhbnQsIGNoaWxkIGFuZCBzdWJzZWxlY3RvciBjb21i
aW5hdG9ycyBvbmx5IGFuZCBhbGwgY29tcG9uZW50cyBhcmUgc2ltcGxlLgorICAgIHdoaWxlIChz
ZWxlY3RvcikgeworICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7CisgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5n
bGVTZWxlY3RvcjxjaGVja0NsYXNzVmFsdWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9w
Q2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xl
U2VsZWN0b3I8Y2hlY2tJRFZhbHVlLCBmYWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxk
T3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6Tm9uZToKKyAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2Vs
ZWN0b3I8Y2hlY2tUYWdWYWx1ZSwgZmFsc2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9y
U3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlNldDoKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CisgICAg
ICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9yPGNoZWNrRXhhY3RBdHRyaWJ1dGVW
YWx1ZSwgdHJ1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9w
Q2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oQ1NTU2Vs
ZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uKQoreworICAgIHJldHVybiByZWxhdGlvbiA9PSBDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudCB8fCByZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6Q2hpbGQgfHwg
cmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNGYXN0Q2hlY2thYmxlTWF0Y2goY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQor
eworICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KSB7CisgICAg
ICAgIC8vIFN0eWxlIGF0dHJpYnV0ZSBpcyBnZW5lcmF0ZWQgbGF6aWx5IGJ1dCB0aGUgZmFzdCBw
YXRoIGRvZXNuJ3QgdHJpZ2dlciBpdC4KKyAgICAgICAgLy8gRGlzYWxsb3cgdGhlbSBoZXJlIHJh
dGhlciB0aGFuIG1ha2luZyB0aGUgZmFzdCBwYXRoIG1vcmUgYnJhbmNoeS4KKyAgICAgICAgcmV0
dXJuIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSAhPSBzdHlsZUF0dHI7CisgICAgfQorICAgIGlmIChz
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QpCisgICAgICAgIHJldHVybiBz
ZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0gc3R5bGVBdHRyICYmICFodG1sQXR0cmlidXRlSGFzQ2Fz
ZUluc2Vuc2l0aXZlVmFsdWUoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gc2Vs
ZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5vbmUgfHwgc2VsZWN0b3ItPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OklkIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpD
bGFzczsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBpZiAoIWlzRmFzdENo
ZWNrYWJsZVJlbGF0aW9uKHNlbGVjdG9yLT5yZWxhdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBpc0Zhc3RDaGVja2FibGVNYXRjaChzZWxlY3RvcikgfHwgRmFzdFBh
dGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3Rvcik7
Cit9CisKK2Jvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNhblVzZUZhc3RQYXRoKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0
bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAo
c2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBz
ZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVs
YXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZU1hdGNoKHNlbGVjdG9yKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRmFzdFBh
dGhTZWxlY3Rvck1hdGNoZXI6OmNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVj
dG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAorewor
ICAgIEFTU0VSVChpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IobV9zZWxlY3RvcikpOworICAg
IHN3aXRjaCAobV9zZWxlY3Rvci0+cHNldWRvVHlwZSgpKSB7CisgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTGluazoKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgorICAg
ICAgICByZXR1cm4gbV9lbGVtZW50LT5pc0xpbmsoKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9WaXNpdGVkOgorICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5pc0xpbmsoKSAmJiB2aXNp
dGVkTWF0Y2hUeXBlID09IFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZDsKKyAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKKyAgICAgICAgcmV0dXJuIFNlbGVjdG9y
Q2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9y
TWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWEzMjBlOGE2OGIxZGVhOWMzMzJjZDA3MjFmN2NiYzEwMzY0MTBiNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hl
ci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNC0yMDA1IEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5
YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgRmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXJfaAorI2RlZmluZSBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcl9oCisKKyNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBG
YXN0UGF0aFNlbGVjdG9yTWF0Y2hlcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKTsKKworICAgIGJv
b2wgbWF0Y2hlcygpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlc1JpZ2h0bW9zdFNlbGVjdG9yKFNl
bGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSkgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVz
UmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGNh
blVzZUZhc3RQYXRoKGNvbnN0IENTU1NlbGVjdG9yKik7CisgICAgc3RhdGljIGJvb2wgaXNDb21t
b25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CisgICAgc3RhdGljIGJv
b2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSk7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhT
ZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OworCisgICAgQ1NTU2VsZWN0
b3IqIG1fc2VsZWN0b3I7CisgICAgRWxlbWVudCogbV9lbGVtZW50OworfTsKKworaW5saW5lIGJv
b2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6Om1hdGNoZXNSaWdodG1vc3RBdHRyaWJ1dGVTZWxl
Y3RvcigpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6OkV4YWN0IHx8IG1fc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkKKyAg
ICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRyaWJ1dGUobV9lbGVtZW50LCBtX3NlbGVjdG9yLT5h
dHRyaWJ1dGUoKSwgbV9zZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAgIEFTU0VSVCghbV9z
ZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
aW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NT
ZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgaWYgKHNlbGVjdG9y
LT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBzZWxlY3Rvci0+
cHNldWRvVHlwZSgpOworICAgIHJldHVybiBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9MaW5rCisgICAgICAgIHx8IHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxp
bmsKKyAgICAgICAgfHwgcHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZAor
ICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czsKK30KKwor
aW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUo
Y29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRy
aWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSkKK3sKKyAgICBpZiAoIWVs
ZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYg
KFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoYXR0cmlidXRlLCBzZWxlY3Rv
ckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9
PSB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGQ4NDAwNGQ5
Y2NjMTQ4NDNlNGI0MGE2YmQ2MmFjNzJhOGRmYjIyZWIuLjNiMDliNDc0MDNhM2UzYmFkNTk4ZDhi
NDgwZWYwNWUwNDE5ZWM2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0
b3JNYXRjaGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02Miw3ICs2Myw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVI
YXNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChzZWxlY3Rvci0+dGFnKCkgIT0gc3RhckF0b20pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoU2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0
b3IpKQorICAgIGlmIChGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6aXNDb21tb25Qc2V1ZG9DbGFz
c1NlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIHNl
bGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CiB9CkBAIC0xMTMsNyArMTE0LDcgQEAgUnVsZURhdGE6OlJ1
bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQg
cG9zaXRpb24sIEEKICAgICAsIG1fc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQogICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3Bl
Y2lmaWNpdHkoKSkKLSAgICAsIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yKChhZGRSdWxlRmxh
Z3MgJiBSdWxlQ2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpICYmIFNlbGVjdG9yQ2hlY2tlcjo6aXNG
YXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IoKSkpCisgICAgLCBtX2hhc0Zhc3RDaGVja2Fi
bGVTZWxlY3RvcigoYWRkUnVsZUZsYWdzICYgUnVsZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yKSAm
JiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6Y2FuVXNlRmFzdFBhdGgoc2VsZWN0b3IoKSkpCiAg
ICAgLCBtX2hhc011bHRpcGFydFNlbGVjdG9yKCEhc2VsZWN0b3IoKS0+dGFnSGlzdG9yeSgpKQog
ICAgICwgbV9oYXNSaWdodG1vc3RTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChp
c1NlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKHNlbGVjdG9yKCkpKQogICAgICwg
bV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2ViQ29yZTo6Y29udGFpbnNVbmNv
bW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHNlbGVjdG9yKCkpKQpAQCAtMjE4LDcgKzIxOSw3IEBAIHZv
aWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5k
ZXgsIEFkZFJ1bGVGbGFncyBhZGRSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAg
ICBpZiAoU2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0
b3IpKSB7CisgICAgaWYgKEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjppc0NvbW1vblBzZXVkb0Ns
YXNzU2VsZWN0b3Ioc2VsZWN0b3IpKSB7CiAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVk
b1R5cGUoKSkgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcAppbmRleCAyYjI2YzY4MDViYjczYmY0OTNmNDI5NTdhZDRiZWM0MjU3MDgx
MGQ0Li5hMWM2NGFjZjBlNjI5NTUyODNkMDA5NGU5MjJiN2VkY2Y5YWJhN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIgogI2luY2x1
ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVTZWxlY3Rpb24uaCIKQEAgLTU3LDggKzU4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgYm9vbCBodG1sQXR0cmlidXRlSGFz
Q2FzZUluc2Vuc2l0aXZlVmFsdWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cik7Ci0KIFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1f
c3RyaWN0UGFyc2luZyghZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKQogICAgICwgbV9kb2N1bWVu
dElzSFRNTChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKQEAgLTY5LDUzICs2OCwxNyBAQCBT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVudCogZG9jdW1lbnQpCiBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlcyhDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlbGVt
ZW50LCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKSBjb25zdAogewogICAgIGlmIChpc0Zh
c3RDaGVja2FibGVTZWxlY3RvciAmJiAhZWxlbWVudC0+aXNTVkdFbGVtZW50KCkpIHsKLSAgICAg
ICAgaWYgKCFmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3RvcihzZWwsIGVsZW1lbnQsIFZpc2l0ZWRN
YXRjaERpc2FibGVkKSkKKyAgICAgICAgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZmFzdFBhdGhT
ZWxlY3Rvck1hdGNoZXIoc2VsLCBlbGVtZW50KTsKKyAgICAgICAgaWYgKCFmYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlci5tYXRjaGVzUmlnaHRtb3N0U2VsZWN0b3IoVmlzaXRlZE1hdGNoRGlzYWJsZWQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gZmFzdENoZWNrKHNl
bCwgZWxlbWVudCk7CisgICAgICAgIHJldHVybiBmYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5tYXRj
aGVzKCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdob2xlIHRoaW5nIHNob3VsZCBiZSBhIEZh
c3RQYXRoU2VsZWN0b3JNYXRjaGVyIGZ1bmN0aW9uLgogICAgIH0KIAogICAgIFBzZXVkb0lkIGln
bm9yZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICByZXR1cm4gbWF0Y2goU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQoc2VsLCBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRj
aERpc2FibGVkKSwgaWdub3JlRHluYW1pY1BzZXVkbykgPT0gU2VsZWN0b3JNYXRjaGVzOwogfQog
Ci1uYW1lc3BhY2UgewotCi10ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQq
LCBBdG9taWNTdHJpbmdJbXBsKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpLCBib29sIGluaXRBdHRy
aWJ1dGVOYW1lPgotaW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudComIGVsZW1lbnQsIGNvbnN0IENTU1Nl
bGVjdG9yKiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQotewotICAgIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVl
ID0gc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpOwotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZSA9IGluaXRBdHRyaWJ1dGVOYW1lID8gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpIDogYW55
UU5hbWUoKTsKLSAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkgewotICAgICAgICBpZiAoY2hlY2tWYWx1ZShlbGVtZW50LCB2YWx1ZSwgYXR0cmli
dXRlKSAmJiBTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpKSB7
Ci0gICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRl
c2NlbmRhbnQpCi0gICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8
IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7Ci0gICAg
ICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gc2VsZWN0b3I7Ci0gICAgICAgICAg
ICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50ID0gZWxlbWVudDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxl
Y3Rvcjo6U3ViU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3Rv
cnkoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0
b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKLSAgICAgICAgICAgIC8vIENoaWxkIG9yIHN1YnNlbGVj
dG9yIGNoZWNrIGZhaWxlZC4KLSAgICAgICAgICAgIC8vIElmIHRoZSBtYXRjaCBlbGVtZW50IGlz
IG51bGwsIHRvcENoaWxkT3JTdWJzZWxlY3RvciB3YXMgYWxzbyB0aGUgdmVyeSB0b3Btb3N0IHNl
bGVjdG9yIGFuZCBoYWQgdG8gbWF0Y2gKLSAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBlbGVt
ZW50IHdlIHdlcmUgY2hlY2tpbmcuCi0gICAgICAgICAgICBpZiAoIXRvcENoaWxkT3JTdWJzZWxl
Y3Rvck1hdGNoRWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgbWF0Y2hlcyBkb3duIHRoZSBhbmNlc3RvciBjaGFp
bi4KLSAgICAgICAgICAgIC8vIFJld2luZCB0byB0aGUgdG9wbW9zdCBjaGlsZCBvciBzdWJzZWxl
Y3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0Y2hlZCwgY29udGludWUgY2hlY2tpbmcgYW5jZXN0
b3JzLgotICAgICAgICAgICAgc2VsZWN0b3IgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3I7Ci0gICAg
ICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJl
bnRFbGVtZW50KCk7Ci0gICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBpbmxpbmUgYm9vbCBjaGVja0NsYXNzVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVu
dCwgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQogewogICAg
IHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygpICYmIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlZEVs
ZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKHZhbHVlKTsKQEAgLTEyOCw3
ICs5MSw3IEBAIGlubGluZSBib29sIGNoZWNrSURWYWx1ZShjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSwgY29uc3QKIAogaW5saW5lIGJvb2wgY2hlY2tFeGFj
dEF0dHJpYnV0ZVZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwq
IHZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVy
biBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6Y2hlY2tF
eGFjdEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7CiB9CiAKIGlubGlu
ZSBib29sIGNoZWNrVGFnVmFsdWUoY29uc3QgRWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqLCBj
b25zdCBRdWFsaWZpZWROYW1lJikKQEAgLTEzNiwxMTAgKzk5LDYgQEAgaW5saW5lIGJvb2wgY2hl
Y2tUYWdWYWx1ZShjb25zdCBFbGVtZW50KiwgQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfQotCi1pbmxpbmUgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVk
TWF0Y2hUeXBlKSBjb25zdAotewotICAgIEFTU0VSVChpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihz
ZWxlY3RvcikpOwotCi0gICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoZWxlbWVu
dCwgc2VsZWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3dpdGNoIChzZWxlY3Rv
ci0+bV9tYXRjaCkgewotICAgIGNhc2UgQ1NTU2VsZWN0b3I6Ok5vbmU6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgotICAgICAgICByZXR1cm4gY2hl
Y2tDbGFzc1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgYW55UU5hbWUo
KSk7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgIHJldHVybiBjaGVja0lEVmFs
dWUoZWxlbWVudCwgc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFtZSgpKTsKLSAgICBj
YXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6Ci0gICAg
ICAgIHJldHVybiBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgc2VsZWN0b3ItPnZh
bHVlKCkuaW1wbCgpLCBzZWxlY3Rvci0+YXR0cmlidXRlKCkpOwotICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzOgotICAgICAgICByZXR1cm4gY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rv
ck1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IsIHZpc2l0ZWRNYXRjaFR5cGUpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2soY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VS
VChmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCwgVmlzaXRlZE1h
dGNoRW5hYmxlZCkpOwotCi0gICAgY29uc3QgQ1NTU2VsZWN0b3IqIHRvcENoaWxkT3JTdWJzZWxl
Y3RvciA9IDA7Ci0gICAgY29uc3QgRWxlbWVudCogdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hF
bGVtZW50ID0gMDsKLSAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6
OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rv
cikKLSAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gc2VsZWN0b3I7Ci0KLSAgICBpZiAo
c2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQotICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotCi0gICAgc2VsZWN0b3IgPSBz
ZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotCi0gICAgLy8gV2Uga25vdyB0aGlzIGNvbXBvdW5kIHNl
bGVjdG9yIGhhcyBkZXNjZW5kYW50LCBjaGlsZCBhbmQgc3Vic2VsZWN0b3IgY29tYmluYXRvcnMg
b25seSBhbmQgYWxsIGNvbXBvbmVudHMgYXJlIHNpbXBsZS4KLSAgICB3aGlsZSAoc2VsZWN0b3Ip
IHsKLSAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewotICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpDbGFzczoKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0
b3I8Y2hlY2tDbGFzc1ZhbHVlLCBmYWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JT
dWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9y
PGNoZWNrSURWYWx1ZSwgZmFsc2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2Vs
ZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6Ok5vbmU6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9yPGNo
ZWNrVGFnVmFsdWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVj
dG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpTZXQ6Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAg
aWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUsIHRy
dWU+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JT
dWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
c3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1NlbGVjdG9yOjpS
ZWxhdGlvbiByZWxhdGlvbikKLXsKLSAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6
OkRlc2NlbmRhbnQgfHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHJlbGF0aW9u
ID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlz
RmFzdENoZWNrYWJsZU1hdGNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBp
ZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkgewotICAgICAgICAvLyBT
dHlsZSBhdHRyaWJ1dGUgaXMgZ2VuZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3QgcGF0aCBkb2Vz
bid0IHRyaWdnZXIgaXQuCi0gICAgICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSByYXRoZXIgdGhh
biBtYWtpbmcgdGhlIGZhc3QgcGF0aCBtb3JlIGJyYW5jaHkuCi0gICAgICAgIHJldHVybiBzZWxl
Y3Rvci0+YXR0cmlidXRlKCkgIT0gc3R5bGVBdHRyOwotICAgIH0KLSAgICBpZiAoc2VsZWN0b3It
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkV4YWN0KQotICAgICAgICByZXR1cm4gc2VsZWN0b3It
PmF0dHJpYnV0ZSgpICE9IHN0eWxlQXR0ciAmJiAhaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNp
dGl2ZVZhbHVlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSk7Ci0gICAgcmV0dXJuIHNlbGVjdG9yLT5t
X21hdGNoID09IENTU1NlbGVjdG9yOjpOb25lIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgaWYgKCFpc0Zhc3RDaGVja2FibGVS
ZWxhdGlvbihzZWxlY3Rvci0+cmVsYXRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gaXNGYXN0Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVjdG9yQ2hlY2tl
cjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKTsKLX0KLQotYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3RvcikKLXsKLSAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNl
bGVjdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2VsZWN0b3IgPSBzZWxl
Y3Rvci0+dGFnSGlzdG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlz
dG9yeSgpKSB7Ci0gICAgICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3It
PnJlbGF0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlz
RmFzdENoZWNrYWJsZU1hdGNoKHNlbGVjdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxl
Y3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDQgZGlmZmVyZW50IHZhbHVl
czoKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMg
dGhlIGVsZW1lbnQgZQpAQCAtNzk0LDcgKzY1Myw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2li
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRm9jdXM6Ci0gICAgICAgICAgICByZXR1cm4gbWF0
Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gU2VsZWN0
b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KTsKICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBx
dWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5v
CiAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmhvdmVyIHNob3VsZCBub3QgbWF0Y2ggYW55dGhp
bmcuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBzaXRlcyBsaWtlIHdzai5jb20uCkBAIC0xMDY1LDIz
ICs5MjQsNiBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFz
cyhEb2N1bWVudCogZG9jdW1lbnQsIENTU1NlbGVjdG9yKgogICAgIH0KIH0KIAotYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlw
ZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAotewotICAgIEFTU0VSVChpc0NvbW1vblBzZXVkb0Ns
YXNzU2VsZWN0b3Ioc2VsZWN0b3IpKTsKLSAgICBzd2l0Y2ggKHNlbGVjdG9yLT5wc2V1ZG9UeXBl
KCkpIHsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgotICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FueUxpbms6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5pc0xpbmsoKTsK
LSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgotICAgICAgICByZXR1cm4gZWxl
bWVudC0+aXNMaW5rKCkgJiYgdmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0Y2hFbmFibGVk
OwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzOgotICAgICAgICByZXR1cm4gbWF0
Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCiB1bnNpZ25l
ZCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQogewogICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBNYXRjaEFsbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAyYTk3ZmM4YzYyY2MyYWFjNDU2
MzY3NmIwMDE2MjhmYzQ2ZTQzMTE1Li5mYmU0NWFlZjI4NzY1YjgzOWU1ZjE5OGZkNGRiMTMxNGJm
YzFiM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC04Miw5ICs4Miw2
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaWJsaW5nVHJhdmVyc2FsU3RyYXRl
Z3k+CiAgICAgYm9vbCBjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIGNv
bnN0IFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSYpIGNvbnN0OwogCi0gICAgc3RhdGljIGJvb2wg
aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBib29sIGZh
c3RDaGVjayhjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKLQogICAg
IGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQog
CiAgICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CkBAIC05MiwxMCArODks
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCB0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQq
LCBjb25zdCBDU1NTZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIGF0dHJpYnV0ZU5hbWVNYXRj
aGVzKGNvbnN0IEF0dHJpYnV0ZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAg
ICBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKLSAg
ICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBF
bGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBzdGF0aWMgYm9vbCBjaGVja0V4YWN0
QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0
dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsKKyAgICBzdGF0aWMg
Ym9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7CiAKICAgICBlbnVt
IExpbmtNYXRjaE1hc2sgeyBNYXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBNYXRjaEFs
bCA9IE1hdGNoTGluayB8IE1hdGNoVmlzaXRlZCB9OwogICAgIHN0YXRpYyB1bnNpZ25lZCBkZXRl
cm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1NlbGVjdG9yKik7CkBAIC0xMDQsMjYgKzk4LDE0
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKERvY3VtZW50
KiwgQ1NTU2VsZWN0b3IqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBpc0ZyYW1lRm9jdXNlZChj
b25zdCBFbGVtZW50Kik7CiAKLSAgICBib29sIGZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCosIFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0
OwotICAgIGJvb2wgY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVu
dCosIGNvbnN0IENTU1NlbGVjdG9yKiwgVmlzaXRlZE1hdGNoVHlwZSkgY29uc3Q7Ci0KICAgICBi
b29sIG1fc3RyaWN0UGFyc2luZzsKICAgICBib29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgTW9k
ZSBtX21vZGU7CiB9OwogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNl
dWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgaWYg
KHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBz
ZWxlY3Rvci0+cHNldWRvVHlwZSgpOwotICAgIHJldHVybiBwc2V1ZG9UeXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9MaW5rCi0gICAgICAgIHx8IHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0FueUxpbmsKLSAgICAgICAgfHwgcHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZAotICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1
czsKLX0KK2Jvb2wgaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2ZVZhbHVlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHIpOwogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNo
ZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitpbmxpbmUg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQ
c2V1ZG9TdGF0ZShjb25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZvY3VzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDgsMjcgKzEzMCw2IEBAIGlu
bGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMoY29uc3QgQXR0
cmlidXRlKiBhdHRyaWJ1dGUsIGNvCiAgICAgcmV0dXJuIHNlbGVjdG9yQXR0cmlidXRlTmFtZS5w
cmVmaXgoKSA9PSBzdGFyQXRvbSB8fCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJ
KCkgPT0gYXR0cmlidXRlLT5uYW1lc3BhY2VVUkkoKTsKIH0KIAotaW5saW5lIGJvb2wgU2VsZWN0
b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCogdmFsdWUpCi17Ci0gICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0aG91
dFVwZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQt
PmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lTWF0Y2hlcyhhdHRy
aWJ1dGUsIHNlbGVjdG9yQXR0cmlidXRlTmFtZSkgJiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZh
bHVlKCkuaW1wbCgpID09IHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFz
dENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGlmIChzZWxlY3Rvci0+bV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QgfHwgc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6OlNldCkKLSAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRyaWJ1dGUoZWxlbWVudCwgc2Vs
ZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOwotICAgIEFTU0VS
VCghc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggODE0
MWJmOWM3ZTQyMTk3ZTEzNGQ0MDU1ZjRmMzYyZWRmNzNjYzA4Ni4uMzgxMTU4OTc2ZGE0NThiYjdj
MDNjYjZlMDg1YTJlM2E2NmYwOTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5o
IgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgiCiAjaW5jbHVkZSAiRm9udEZl
YXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CkBAIC02NzgsNyArNjc5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlcyhSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4KIAogICAgIGlmICht
X2VsZW1lbnQtPmlzTGluaygpKQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
cnVsZXMtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4LCBvcHRpb25zKTsKLSAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIubWF0Y2hlc0ZvY3VzUHNl
dWRvQ2xhc3MobV9lbGVtZW50KSkKKyAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9j
dXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QocnVsZXMtPmZvY3VzUHNldWRvQ2xhc3NSdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QocnVsZXMtPnVuaXZlcnNhbFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4LCBvcHRpb25zKTsKQEAgLTIyNTMsOSArMjI1NCwxMSBAQCBpbmxpbmUgYm9vbCBTdHlsZVJl
c29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRh
aW5lcgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCFT
ZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMobV9lbGVtZW50LCBydWxlRGF0YS5zZWxlY3Rvcigp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFTZWxlY3RvckNoZWNr
ZXI6OmZhc3RDaGVja1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKG1fZWxlbWVudCwgcnVsZURh
dGEuc2VsZWN0b3IoKSkpCisKKyAgICAgICAgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZmFzdFBh
dGhTZWxlY3Rvck1hdGNoZXIocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50KTsKKyAgICAg
ICAgaWYgKCFmYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5tYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRl
U2VsZWN0b3IoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG1f
c2VsZWN0b3JDaGVja2VyLmZhc3RDaGVjayhydWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQp
OworICAgICAgICByZXR1cm4gZmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIubWF0Y2hlcygpOwogICAg
IH0KIAogICAgIC8vIFNsb3cgcGF0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCA1ODc4MmZiNGMyMjZlMDdiYTNlY2NjOGFmMGI4NDBjNTdkZmJhYzYzLi40M2FlZTA2N2E3
NjBlYTlkODAwNTk2MTRlNTRlM2I5Y2MzYTY5ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC00NSw3ICs0Niw3IEBAIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZShjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKIAogICAgIG1fc2VsZWN0b3JzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2VsZWN0b3JDb3VudCk7CiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2Vs
ZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKLSAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2Vk
QXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVj
a2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsKKyAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2Vk
QXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNh
blVzZUZhc3RQYXRoKHNlbGVjdG9yKSkpOwogfQogCiBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1h
dGNoZXMoY29uc3QgU2VsZWN0b3JDaGVja2VyJiBzZWxlY3RvckNoZWNrZXIsIEVsZW1lbnQqIHRh
cmdldEVsZW1lbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183507</attachid>
            <date>2013-01-18 10:58:19 -0800</date>
            <delta_ts>2013-01-18 21:07:02 -0800</delta_ts>
            <desc>Rebased, ready for EWS bubbles.</desc>
            <filename>bug-106860-20130118105519.patch</filename>
            <type>text/plain</type>
            <size>42004</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3ODhjZTk0ODU3MjRk
NGEzYjM2MzBiOGJmZmFmNGQzNDQyNmQ5NS4uZjY1ZjRhMDg2NGZmYjU3M2ZlM2JkMDliYTU1ODZl
ODVhZGViYjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAxLTE3ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBmdW5jdGlv
bmFsIGNoYW5nZXMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogQWRkZWQgbmV3IGNsYXNzIHRvIGJ1aWxkIHN5c3RlbXMuCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9uZS5j
cHA6IERpdHRvLgorICAgICAgICAqIGNzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHA6IEFk
ZGVkLgorICAgICAgICAqIGNzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NlbGVjdG9yTWF0
Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKTogQ2hhbmdlZCB0byB1c2UgbmV3IGNsYXNzLgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjphZGRSdWxlKTogRGl0dG8uCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6IE1vZGUgdGhlIGNvZGUgb3V0IGhlcmUgdG8gbmV3IGNsYXNzLgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU2VsZWN0
b3JDaGVja2VyLmg6IE1vdmVkIHRoZSBjb2RlIG91dCBvZiBoZXJlIHRvIG5ldyBjbGFzcy4KKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6IENoYW5nZWQgdG8gdXNlIG5ldyBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKTogRGl0dG8uCisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZSk6IERpdHRvLgorCiAyMDEzLTAxLTE4ICBUZXJyeSBBbmRl
cnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNjcm9sbCBnZXN0dXJl
cyBzaG91bGQgbm90IGNyZWF0ZSB3aGVlbCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MTlmYzcyYTA0OGY0YTU4ZjcwNjQwYzZhOTljZWFiOGJkMTQzYjdmNS4uNzFiYzNkNDZkODk2Y2Fh
NzBmYTczZTJkYjUwZDFkZTkyY2I3ZWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNjcs
NiArMTA2Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTVmFsdWUuY3BwCiAg
ICAgY3NzL0NTU1ZhbHVlTGlzdC5jcHAKICAgICBjc3MvQ1NTVmFsdWVQb29sLmNwcAorICAgIGNz
cy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5j
cHAKICAgICBjc3MvRm9udFZhbHVlLmNwcAogICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZGNkZjAzOGYyODAxMzhiZWQ1M2QwNzA1
Mjc0ZjNhOTk0ZjM2MDcxLi42NjczMjIxMGYyZGVlNzU2Mzc4ZjM2YjEzNWNlMWIxNGQ1YWJhMjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2MTcsNiArMjYxNyw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNl
bGVjdG9yTWF0Y2hlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9y
TWF0Y2hlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250VmFsdWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGEwZDYwNjFmMmIzNDJlNzgxYjg5
NjI3Mjk5ODBhYzRmNjY2NTg1OTUuLjg2NmJkYTlmNGZjMjk1OGZlZjc2Y2UwY2M5YThlNjk3NDQy
NGYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjk1LDYgKzI5NSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGNzcy9DU1NWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwIFwKICAgICBjc3Mv
Q1NTVmFsdWVQb29sLmNwcCBcCisgICAgY3NzL0Zhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCBc
CiAgICAgY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIFwKICAgICBjc3MvRm9udFZhbHVlLmNwcCBc
CiAgICAgY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNlYzI3
MmQxNjJmODY2ZWRiOWExOTA3YTAwNjdjNTE0NjA2OGM5ODcuLjcxYTQxYjdiNjU2N2VhNGUzOTBj
OGVmOWY1ZjA4NDEzZjlhYWZjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE1MjUsNiArMTUyNSw4
IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCcsCiAgICAgICAgICAgICAn
Y3NzL0NvdW50ZXIuaCcsCiAgICAgICAgICAgICAnY3NzL0Rhc2hib2FyZFJlZ2lvbi5oJywKKyAg
ICAgICAgICAgICdjc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3BwJywKKyAgICAgICAgICAg
ICdjc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCcsCiAgICAgICAgICAgICAnY3NzL0ZvbnRG
ZWF0dXJlVmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvRm9udEZlYXR1cmVWYWx1ZS5oJywK
ICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4ODc5NGJhYThjOWQ1MGY2
Y2VmMWIxZmMxY2EwNTcyNjNmYzlhZS4uMzIxM2NjM2VjMWM1OTU2ZDk2YmNlYmY2ZjM0Zjc3MDdj
MWIzNTc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTExNiw2ICsxMTE2LDggQEAKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2
QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCAqLzsgfTsKIAkJNDFFMUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBG
RjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDQwRkY1
OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdv
cmtlci5oICovOyB9OworCQk0MUUxRTU3MDE2QTVERjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxl
Y3Rvck1hdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUU1NkUxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVy
LmNwcCAqLzsgfTsKKwkJNDFFMUU1NzExNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0
b3JNYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUUxRTU2RjE2QTVERjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCAq
LzsgfTsKIAkJNDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
ICovOyB9OwogCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3Vy
Y2UuY3BwICovOyB9OwogCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3Nh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2
MThDMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovOyB9OwpAQCAtODQwOSw2
ICs4NDExLDggQEAKIAkJNDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXIuY3Bw
OyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5oOyBwYXRoID0gd29ya2Vy
cy9TaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0Yw
RkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gU2hhcmVkV29ya2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUU1NkUxNkE1REYxODAwNDgzQkQyIC8qIEZh
c3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFFMUU1NkYxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRj
aGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RQYXRoU2VsZWN0b3JN
YXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MTcyMEY1RjAwQUMw
MEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNvbGVNZXNzYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc1Miw2ICsyMTc1Niw4IEBACiAJCQkJRTQ5QkQ5
RjkxMzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oICovLAogCQkJCUNBRTlGOTBFMTQ2
NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDRTEwQTE5
ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJlZ2lvbi5oICovLAorCQkJCTQxRTFFNTZFMTZBNURG
MTgwMDQ4M0JEMiAvKiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAgKi8sCisJCQkJNDFFMUU1
NkYxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggKi8sCiAJCQkJ
NEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovLAogCQkJ
CTRBNkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmggKi8sCiAJCQkJ
QTgwRTZDQzcwQTE5ODlDQTAwN0ZCOEM1IC8qIEZvbnRWYWx1ZS5jcHAgKi8sCkBAIC0yNjI1MSw2
ICsyNjI1Nyw3IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9s
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0OUMzOUQxNjc4NDk0NzAwN0ZGQjVEIC8qIENTU0hv
c3RSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUUxRTU3MTE2QTVERjE4MDA0ODNCRDIgLyog
RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjkzOTksNiArMjk0
MDYsNyBAQAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjQ5QzM5QTE2Nzg0OTMyMDA3RkZCNUQgLyogQ1NTSG9z
dFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFMUU1NzAxNkE1REYxODAwNDgzQkQyIC8q
IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBbGxJbk9uZS5jcHAKaW5kZXggODY0NmRmNjY4MTMwMDI3ZDVlMTUzZTg3N2MyZDUxOWUzNzBl
ZGVmYi4uYTg5MDMwN2Q2ZmRmYjdkOWM3NWRlZDQ0ODAyOWI3OGQ5NGU5ZTUzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiQ1NTVmFs
dWUuY3BwIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5jcHAiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQ
b29sLmNwcCIKKyNpbmNsdWRlICJGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAiCiAjaW5jbHVk
ZSAiUnVsZUZlYXR1cmUuY3BwIgogI2luY2x1ZGUgIlJ1bGVTZXQuY3BwIgogI2luY2x1ZGUgIlNl
bGVjdG9yRmlsdGVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0
aFNlbGVjdG9yTWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRmFzdFBhdGhTZWxlY3Rv
ck1hdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MjYzM2IxNTU5MjQyMjJmZjgyOTYzZDQ5N2VhOTli
NDRlMTVkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRmFzdFBhdGhT
ZWxlY3Rvck1hdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQt
MjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDov
L3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9y
YSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCIKKworI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCituYW1lc3BhY2UgeworCit0
ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBs
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpLCBib29sIGluaXRBdHRyaWJ1dGVOYW1lPgoraW5saW5l
IGJvb2wgZmFzdENoZWNrU2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3Rv
ciwgY29uc3QgRWxlbWVudComIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiYgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hF
bGVtZW50KQoreworICAgIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlID0gc2VsZWN0b3ItPnZhbHVl
KCkuaW1wbCgpOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSA9IGluaXRBdHRy
aWJ1dGVOYW1lID8gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpIDogYW55UU5hbWUoKTsKKyAgICBmb3Ig
KDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAg
ICBpZiAoY2hlY2tWYWx1ZShlbGVtZW50LCB2YWx1ZSwgYXR0cmlidXRlKSAmJiBTZWxlY3RvckNo
ZWNrZXI6OnRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpKSB7CisgICAgICAgICAgICBpZiAo
c2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpCisgICAgICAg
ICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KCF0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0
b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlv
bigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgdG9wQ2hp
bGRPclN1YnNlbGVjdG9yID0gc2VsZWN0b3I7CisgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1
YnNlbGVjdG9yTWF0Y2hFbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3Ip
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAg
ICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0b3BDaGlsZE9yU3Vic2VsZWN0
b3IpIHsKKyAgICAgICAgICAgIC8vIENoaWxkIG9yIHN1YnNlbGVjdG9yIGNoZWNrIGZhaWxlZC4K
KyAgICAgICAgICAgIC8vIElmIHRoZSBtYXRjaCBlbGVtZW50IGlzIG51bGwsIHRvcENoaWxkT3JT
dWJzZWxlY3RvciB3YXMgYWxzbyB0aGUgdmVyeSB0b3Btb3N0IHNlbGVjdG9yIGFuZCBoYWQgdG8g
bWF0Y2gKKyAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdlIHdlcmUgY2hlY2tp
bmcuCisgICAgICAgICAgICBpZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBUaGVyZSBtYXkg
YmUgb3RoZXIgbWF0Y2hlcyBkb3duIHRoZSBhbmNlc3RvciBjaGFpbi4KKyAgICAgICAgICAgIC8v
IFJld2luZCB0byB0aGUgdG9wbW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVsZW1l
bnQgaXQgbWF0Y2hlZCwgY29udGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgorICAgICAgICAgICAg
c2VsZWN0b3IgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3I7CisgICAgICAgICAgICBlbGVtZW50ID0g
dG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAg
ICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9v
bCBjaGVja0NsYXNzVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWljU3RyaW5nSW1w
bCogdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQoreworICAgIHJldHVybiBlbGVtZW50LT5o
YXNDbGFzcygpICYmIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+
Y2xhc3NOYW1lcygpLmNvbnRhaW5zKHZhbHVlKTsKK30KKworaW5saW5lIGJvb2wgY2hlY2tJRFZh
bHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25z
dCBRdWFsaWZpZWROYW1lJikKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVt
ZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwoKSA9PSB2YWx1ZTsKK30KKworaW5saW5l
IGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0
b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQoreworICAgIHJldHVybiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6Y2hlY2tFeGFjdEF0dHJp
YnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGNo
ZWNrVGFnVmFsdWUoY29uc3QgRWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBRdWFs
aWZpZWROYW1lJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCitGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcjo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
LCBFbGVtZW50KiBlbGVtZW50KQorICAgIDogbV9zZWxlY3RvcihzZWxlY3RvcikKKyAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQoreworfQorCitib29sIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpt
YXRjaGVzUmlnaHRtb3N0U2VsZWN0b3IoU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBl
IHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzRmFzdENoZWNrYWJsZVNl
bGVjdG9yKG1fc2VsZWN0b3IpKTsKKworICAgIGlmICghU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRj
aGVzKG1fZWxlbWVudCwgbV9zZWxlY3RvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBz
d2l0Y2ggKG1fc2VsZWN0b3ItPm1fbWF0Y2gpIHsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpOb25l
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpDbGFzczoKKyAg
ICAgICAgcmV0dXJuIGNoZWNrQ2xhc3NWYWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0b3ItPnZhbHVl
KCkuaW1wbCgpLCBhbnlRTmFtZSgpKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAg
ICAgcmV0dXJuIGNoZWNrSURWYWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1w
bCgpLCBhbnlRTmFtZSgpKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpTZXQ6CisgICAgICAgIHJldHVybiBjaGVja0V4YWN0QXR0cmlidXRlVmFs
dWUobV9lbGVtZW50LCBtX3NlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9zZWxlY3Rvci0+YXR0
cmlidXRlKCkpOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOgorICAgICAgICBy
ZXR1cm4gY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXModmlzaXRlZE1hdGNoVHlwZSk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6bWF0Y2hl
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKFZpc2l0
ZWRNYXRjaEVuYWJsZWQpKTsKKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BDaGlsZE9yU3Vi
c2VsZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1h
dGNoRWxlbWVudCA9IDA7CisKKyAgICBjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gbV9lbGVtZW50
OworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3I7CisKKyAgICBp
ZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9y
LT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgdG9wQ2hp
bGRPclN1YnNlbGVjdG9yID0gbV9zZWxlY3RvcjsKKworICAgIGlmIChzZWxlY3Rvci0+cmVsYXRp
b24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCk7CisKKyAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0
b3J5KCk7CisKKyAgICAvLyBXZSBrbm93IHRoaXMgY29tcG91bmQgc2VsZWN0b3IgaGFzIGRlc2Nl
bmRhbnQsIGNoaWxkIGFuZCBzdWJzZWxlY3RvciBjb21iaW5hdG9ycyBvbmx5IGFuZCBhbGwgY29t
cG9uZW50cyBhcmUgc2ltcGxlLgorICAgIHdoaWxlIChzZWxlY3RvcikgeworICAgICAgICBzd2l0
Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNz
OgorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0NsYXNzVmFs
dWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BD
aGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoK
KyAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tJRFZhbHVlLCBm
YWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Tm9uZToKKyAg
ICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tUYWdWYWx1ZSwgZmFs
c2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JT
dWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNldDoKKyAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVja1Np
bmdsZVNlbGVjdG9yPGNoZWNrRXhhY3RBdHRyaWJ1dGVWYWx1ZSwgdHJ1ZT4oc2VsZWN0b3IsIGVs
ZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hF
bGVtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9u
KQoreworICAgIHJldHVybiByZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCB8fCBy
ZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6Q2hpbGQgfHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6
OlN1YlNlbGVjdG9yOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlTWF0
Y2goY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQoreworICAgIGlmIChzZWxlY3Rvci0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KSB7CisgICAgICAgIC8vIFN0eWxlIGF0dHJpYnV0ZSBp
cyBnZW5lcmF0ZWQgbGF6aWx5IGJ1dCB0aGUgZmFzdCBwYXRoIGRvZXNuJ3QgdHJpZ2dlciBpdC4K
KyAgICAgICAgLy8gRGlzYWxsb3cgdGhlbSBoZXJlIHJhdGhlciB0aGFuIG1ha2luZyB0aGUgZmFz
dCBwYXRoIG1vcmUgYnJhbmNoeS4KKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KSAhPSBzdHlsZUF0dHI7CisgICAgfQorICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6RXhhY3QpCisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0g
c3R5bGVBdHRyICYmICFodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0aXZlVmFsdWUoc2VsZWN0
b3ItPmF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6Ok5vbmUgfHwgc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkIHx8IHNl
bGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzczsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3RvcikKK3sKKyAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKHNlbGVjdG9y
LT5yZWxhdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0Zhc3RD
aGVja2FibGVNYXRjaChzZWxlY3RvcikgfHwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3Rvcik7Cit9CisKK2Jvb2wgRmFzdFBhdGhTZWxl
Y3Rvck1hdGNoZXI6OmNhblVzZUZhc3RQYXRoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikK
K3sKKyAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFn
SGlzdG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7
CisgICAgICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9u
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWlzRmFzdENoZWNr
YWJsZU1hdGNoKHNlbGVjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNvbW1v
blBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNo
VHlwZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChpc0NvbW1vblBzZXVk
b0NsYXNzU2VsZWN0b3IobV9zZWxlY3RvcikpOworICAgIHN3aXRjaCAobV9zZWxlY3Rvci0+cHNl
dWRvVHlwZSgpKSB7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgorICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5p
c0xpbmsoKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgorICAgICAgICBy
ZXR1cm4gbV9lbGVtZW50LT5pc0xpbmsoKSAmJiB2aXNpdGVkTWF0Y2hUeXBlID09IFNlbGVjdG9y
Q2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZDsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9Gb2N1czoKKyAgICAgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNl
dWRvQ2xhc3MobV9lbGVtZW50KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0Zhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEzMjBlOGE2OGIx
ZGVhOWMzMzJjZDA3MjFmN2NiYzEwMzY0MTBiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xm
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtp
dEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXJfaAorI2RlZmluZSBGYXN0UGF0aFNl
bGVjdG9yTWF0Y2hlcl9oCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIlNl
bGVjdG9yQ2hlY2tlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcihD
U1NTZWxlY3RvciosIEVsZW1lbnQqKTsKKworICAgIGJvb2wgbWF0Y2hlcygpIGNvbnN0OworICAg
IGJvb2wgbWF0Y2hlc1JpZ2h0bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1h
dGNoVHlwZSkgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0
b3IoKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGNhblVzZUZhc3RQYXRoKGNvbnN0IENTU1Nl
bGVjdG9yKik7CisgICAgc3RhdGljIGJvb2wgaXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKik7CisgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShj
b25zdCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBj
b21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRN
YXRjaFR5cGUpIGNvbnN0OworCisgICAgQ1NTU2VsZWN0b3IqIG1fc2VsZWN0b3I7CisgICAgRWxl
bWVudCogbV9lbGVtZW50OworfTsKKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNo
ZXI6Om1hdGNoZXNSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0Cit7CisgICAgaWYg
KG1fc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkV4YWN0IHx8IG1fc2VsZWN0b3It
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkKKyAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RB
dHRyaWJ1dGUobV9lbGVtZW50LCBtX3NlbGVjdG9yLT5hdHRyaWJ1dGUoKSwgbV9zZWxlY3Rvci0+
dmFsdWUoKS5pbXBsKCkpOworICAgIEFTU0VSVCghbV9zZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxl
Y3RvcigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxl
Y3Rvck1hdGNoZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IpCit7CisgICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBzZWxlY3Rvci0+cHNldWRvVHlwZSgpOworICAgIHJldHVy
biBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rCisgICAgICAgIHx8IHBzZXVk
b1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxpbmsKKyAgICAgICAgfHwgcHNldWRvVHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZAorICAgICAgICB8fCBwc2V1ZG9UeXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czsKK30KKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxl
Y3Rvck1hdGNoZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmdJbXBsKiB2YWx1ZSkKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRo
b3V0VXBkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBzaXplID0g
ZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVu
dC0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmli
dXRlTmFtZU1hdGNoZXMoYXR0cmlidXRlLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFs
dWUgfHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGM2NzcxNTFlN2NkODMzNDk2ZmZlNDQyZTAyYTk0YmJh
MmJjMGQ3NmIuLjQ4ZGJhNDFmYjUwNDdkNjdiOGU3MjUxZWE4NDNjNGMyZmQ0Nzc4MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NGb250U2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9y
TGlzdC5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChzZWxlY3Rvci0+dGFnKCkgIT0gc3Rh
ckF0b20pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjpp
c0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKQorICAgIGlmIChGYXN0UGF0aFNl
bGVjdG9yTWF0Y2hlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIHNlbGVjdG9yLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CiB9
CkBAIC0xMjMsNyArMTI0LDcgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24sIEEKICAgICA6IG1fcnVs
ZShydWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCiAgICAgLCBtX3Bv
c2l0aW9uKHBvc2l0aW9uKQotICAgICwgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoKGFkZFJ1
bGVGbGFncyAmIFJ1bGVDYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvcikgJiYgU2VsZWN0b3JDaGVja2Vy
Ojppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcigpKSkKKyAgICAsIG1faGFzRmFzdENo
ZWNrYWJsZVNlbGVjdG9yKChhZGRSdWxlRmxhZ3MgJiBSdWxlQ2FuVXNlRmFzdENoZWNrU2VsZWN0
b3IpICYmIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpjYW5Vc2VGYXN0UGF0aChzZWxlY3Rvcigp
KSkKICAgICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKSkKICAgICAs
IG1faGFzTXVsdGlwYXJ0U2VsZWN0b3IoISFzZWxlY3RvcigpLT50YWdIaXN0b3J5KCkpCiAgICAg
LCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGlzU2Vs
ZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IoKSkpCkBAIC0yMzIsNyAr
MjMzLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQg
c2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgotICAgIGlmIChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxl
Y3RvcihzZWxlY3RvcikpIHsKKyAgICBpZiAoRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpIHsKICAgICAgICAgc3dpdGNoIChzZWxl
Y3Rvci0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xp
bms6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDJlODc0ZjRmY2Q5MzAwMDljOTc4Y2M2YTll
NDNmZWIyNTFiODQ2OWYuLmNlNTUyMTBiZWMxMjVhZGMzODhmNDBmY2U2NzkyYjE0MTY4NzBjZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVy
LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtNTcsOCArNTgsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBib29sIGh0bWxB
dHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXRpdmVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
KTsKLQogU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogbV9zdHJpY3RQYXJzaW5nKCFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpCiAgICAg
LCBtX2RvY3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQpAQCAtNjksNTMg
KzY4LDE3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1
bWVudCkKIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lbnQqIGVsZW1lbnQsIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQo
KSkgewotICAgICAgICBpZiAoIWZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKHNlbCwgZWxlbWVu
dCwgVmlzaXRlZE1hdGNoRGlzYWJsZWQpKQorICAgICAgICBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hl
ciBmYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcihzZWwsIGVsZW1lbnQpOworICAgICAgICBpZiAoIWZh
c3RQYXRoU2VsZWN0b3JNYXRjaGVyLm1hdGNoZXNSaWdodG1vc3RTZWxlY3RvcihWaXNpdGVkTWF0
Y2hEaXNhYmxlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBm
YXN0Q2hlY2soc2VsLCBlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGZhc3RQYXRoU2VsZWN0b3JN
YXRjaGVyLm1hdGNoZXMoKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2hvbGUgdGhpbmcgc2hv
dWxkIGJlIGEgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZnVuY3Rpb24uCiAgICAgfQogCiAgICAg
UHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIHJldHVybiBtYXRj
aChTZWxlY3RvckNoZWNraW5nQ29udGV4dChzZWwsIGVsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6
VmlzaXRlZE1hdGNoRGlzYWJsZWQpLCBpZ25vcmVEeW5hbWljUHNldWRvKSA9PSBTZWxlY3Rvck1h
dGNoZXM7CiB9CiAKLW5hbWVzcGFjZSB7Ci0KLXRlbXBsYXRlIDxib29sIGNoZWNrVmFsdWUoY29u
c3QgRWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBRdWFsaWZpZWROYW1lJiksIGJv
b2wgaW5pdEF0dHJpYnV0ZU5hbWU+Ci1pbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwg
Y29uc3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQq
JiB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCi17Ci0gICAgQXRvbWljU3RyaW5n
SW1wbCogdmFsdWUgPSBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlID0gaW5pdEF0dHJpYnV0ZU5hbWUgPyBzZWxlY3Rvci0+YXR0cmli
dXRlKCkgOiBhbnlRTmFtZSgpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChjaGVja1ZhbHVlKGVsZW1lbnQsIHZh
bHVlLCBhdHRyaWJ1dGUpICYmIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBz
ZWxlY3RvcikpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudCkKLSAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0
b3IgPSAwOwotICAgICAgICAgICAgZWxzZSBpZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvcikgewot
ICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6Q2hpbGQgfHwgc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVj
dG9yKTsKLSAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSBzZWxlY3RvcjsK
LSAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQgPSBlbGVt
ZW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigp
ICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHRvcENoaWxkT3JTdWJzZWxlY3RvcikgewotICAgICAgICAgICAgLy8gQ2hpbGQg
b3Igc3Vic2VsZWN0b3IgY2hlY2sgZmFpbGVkLgotICAgICAgICAgICAgLy8gSWYgdGhlIG1hdGNo
IGVsZW1lbnQgaXMgbnVsbCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yIHdhcyBhbHNvIHRoZSB2ZXJ5
IHRvcG1vc3Qgc2VsZWN0b3IgYW5kIGhhZCB0byBtYXRjaAotICAgICAgICAgICAgLy8gdGhlIG9y
aWdpbmFsIGVsZW1lbnQgd2Ugd2VyZSBjaGVja2luZy4KLSAgICAgICAgICAgIGlmICghdG9wQ2hp
bGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBtYXRjaGVzIGRvd24gdGhlIGFu
Y2VzdG9yIGNoYWluLgotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHRoZSB0b3Btb3N0IGNoaWxk
IG9yIHN1YnNlbGVjdG9yIGFuZCB0aGUgZWxlbWVudCBpdCBtYXRjaGVkLCBjb250aW51ZSBjaGVj
a2luZyBhbmNlc3RvcnMuCi0gICAgICAgICAgICBzZWxlY3RvciA9IHRvcENoaWxkT3JTdWJzZWxl
Y3RvcjsKLSAgICAgICAgICAgIGVsZW1lbnQgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3Rv
ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBib29sIGNoZWNrQ2xhc3NWYWx1ZShjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpCiB7CiAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgc3RhdGljX2Nhc3Q8Y29u
c3QgU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29udGFpbnModmFsdWUp
OwpAQCAtMTI4LDcgKzkxLDcgQEAgaW5saW5lIGJvb2wgY2hlY2tJRFZhbHVlKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdAogCiBpbmxpbmUgYm9v
bCBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWlj
U3RyaW5nSW1wbCogdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7
Ci0gICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShlbGVtZW50
LCBhdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIEZhc3RQYXRoU2VsZWN0b3JNYXRj
aGVyOjpjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsK
IH0KIAogaW5saW5lIGJvb2wgY2hlY2tUYWdWYWx1ZShjb25zdCBFbGVtZW50KiwgQXRvbWljU3Ry
aW5nSW1wbCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKQpAQCAtMTM2LDExMCArOTksNiBAQCBpbmxp
bmUgYm9vbCBjaGVja1RhZ1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKiwg
Y29uc3QgUXVhbGlmaWVkTmFtZQogICAgIHJldHVybiB0cnVlOwogfQogCi19Ci0KLWlubGluZSBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWaXNpdGVkTWF0Y2hU
eXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzRmFzdENoZWNrYWJs
ZVNlbGVjdG9yKHNlbGVjdG9yKSk7Ci0KLSAgICBpZiAoIVNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0
Y2hlcyhlbGVtZW50LCBzZWxlY3RvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzd2l0
Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6Tm9uZToKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2xhc3M6Ci0gICAgICAg
IHJldHVybiBjaGVja0NsYXNzVmFsdWUoZWxlbWVudCwgc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgp
LCBhbnlRTmFtZSgpKTsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKLSAgICAgICAgcmV0dXJu
IGNoZWNrSURWYWx1ZShlbGVtZW50LCBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCksIGFueVFOYW1l
KCkpOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlNldDoKLSAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRyaWJ1dGVWYWx1ZShlbGVtZW50LCBz
ZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCksIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSk7Ci0gICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M6Ci0gICAgICAgIHJldHVybiBjb21tb25Qc2V1ZG9D
bGFzc1NlbGVjdG9yTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvciwgdmlzaXRlZE1hdGNoVHlwZSk7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVjayhjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50
LCBWaXNpdGVkTWF0Y2hFbmFibGVkKSk7Ci0KLSAgICBjb25zdCBDU1NTZWxlY3RvciogdG9wQ2hp
bGRPclN1YnNlbGVjdG9yID0gMDsKLSAgICBjb25zdCBFbGVtZW50KiB0b3BDaGlsZE9yU3Vic2Vs
ZWN0b3JNYXRjaEVsZW1lbnQgPSAwOwotICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBD
U1NTZWxlY3Rvcjo6Q2hpbGQgfHwgc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6
OlN1YlNlbGVjdG9yKQotICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSBzZWxlY3RvcjsK
LQotICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0
b3IpCi0gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0KLSAgICBz
ZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0KLSAgICAvLyBXZSBrbm93IHRoaXMg
Y29tcG91bmQgc2VsZWN0b3IgaGFzIGRlc2NlbmRhbnQsIGNoaWxkIGFuZCBzdWJzZWxlY3RvciBj
b21iaW5hdG9ycyBvbmx5IGFuZCBhbGwgY29tcG9uZW50cyBhcmUgc2ltcGxlLgotICAgIHdoaWxl
IChzZWxlY3RvcikgewotICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7Ci0gICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgotICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tT
aW5nbGVTZWxlY3RvcjxjaGVja0NsYXNzVmFsdWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwg
dG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2lu
Z2xlU2VsZWN0b3I8Y2hlY2tJRFZhbHVlLCBmYWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENo
aWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6Tm9uZToKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xl
U2VsZWN0b3I8Y2hlY2tUYWdWYWx1ZSwgZmFsc2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGls
ZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNldDoKLSAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6Ci0g
ICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9yPGNoZWNrRXhhY3RBdHRyaWJ1
dGVWYWx1ZSwgdHJ1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3Rvciwg
dG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oQ1NT
U2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uKQotewotICAgIHJldHVybiByZWxhdGlvbiA9PSBD
U1NTZWxlY3Rvcjo6RGVzY2VuZGFudCB8fCByZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6Q2hpbGQg
fHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOwotfQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlTWF0Y2goY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQotewotICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KSB7Ci0g
ICAgICAgIC8vIFN0eWxlIGF0dHJpYnV0ZSBpcyBnZW5lcmF0ZWQgbGF6aWx5IGJ1dCB0aGUgZmFz
dCBwYXRoIGRvZXNuJ3QgdHJpZ2dlciBpdC4KLSAgICAgICAgLy8gRGlzYWxsb3cgdGhlbSBoZXJl
IHJhdGhlciB0aGFuIG1ha2luZyB0aGUgZmFzdCBwYXRoIG1vcmUgYnJhbmNoeS4KLSAgICAgICAg
cmV0dXJuIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSAhPSBzdHlsZUF0dHI7Ci0gICAgfQotICAgIGlm
IChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QpCi0gICAgICAgIHJldHVy
biBzZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0gc3R5bGVBdHRyICYmICFodG1sQXR0cmlidXRlSGFz
Q2FzZUluc2Vuc2l0aXZlVmFsdWUoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpKTsKLSAgICByZXR1cm4g
c2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5vbmUgfHwgc2VsZWN0b3ItPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OklkIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpDbGFzczsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZVJpZ2h0bW9z
dFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBpZiAoIWlzRmFz
dENoZWNrYWJsZVJlbGF0aW9uKHNlbGVjdG9yLT5yZWxhdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBpc0Zhc3RDaGVja2FibGVNYXRjaChzZWxlY3RvcikgfHwgU2Vs
ZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpOwotfQot
Ci1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmlnaHRtb3N0
U2VsZWN0b3Ioc2VsZWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChzZWxl
Y3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVj
dG9yLT50YWdIaXN0b3J5KCkpIHsKLSAgICAgICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSZWxhdGlv
bihzZWxlY3Rvci0+cmVsYXRpb24oKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmICghaXNGYXN0Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogLy8gUmVjdXJzaXZlIGNo
ZWNrIG9mIHNlbGVjdG9ycyBhbmQgY29tYmluYXRvcnMKIC8vIEl0IGNhbiByZXR1cm4gNCBkaWZm
ZXJlbnQgdmFsdWVzOgogLy8gKiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAgLSB0aGUgc2VsZWN0
b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCkBAIC03OTQsNyArNjUzLDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBTaWIKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKLSAgICAgICAgICAg
IHJldHVybiBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KTsKKyAgICAgICAgICAgIHJl
dHVybiBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpOwog
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjoKICAgICAgICAgICAgIC8vIElm
IHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBtYXRjaCBhbmNo
b3JzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92ZXIgc2hvdWxkIG5vdCBt
YXRjaCBhbnl0aGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ugd3NqLmNvbS4K
QEAgLTEwNjMsMjMgKzkyMiw2IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja1Njcm9sbGJh
clBzZXVkb0NsYXNzKERvY3VtZW50KiBkb2N1bWVudCwgQ1NTU2VsZWN0b3IqCiAgICAgfQogfQog
Ci1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMo
Y29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBWaXNp
dGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpOwotICAgIHN3aXRjaCAoc2VsZWN0b3It
PnBzZXVkb1R5cGUoKSkgewotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6Ci0gICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55TGluazoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQt
PmlzTGluaygpOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6Ci0gICAgICAg
IHJldHVybiBlbGVtZW50LT5pc0xpbmsoKSAmJiB2aXNpdGVkTWF0Y2hUeXBlID09IFZpc2l0ZWRN
YXRjaEVuYWJsZWQ7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRm9jdXM6Ci0gICAgICAg
IHJldHVybiBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KTsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIHVuc2lnbmVkIFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7CiAgICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9
IE1hdGNoQWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDJhOTdmYzhj
NjJjYzJhYWM0NTYzNjc2YjAwMTYyOGZjNDZlNDMxMTUuLmZiZTQ1YWVmMjg3NjViODM5ZTVmMTk4
ZmQ0ZGIxMzE0YmZjMWIzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAg
LTgyLDkgKzgyLDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVneT4KICAgICBib29sIGNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiwgY29uc3QgU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5JikgY29uc3Q7CiAKLSAgICBz
dGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwot
ICAgIGJvb2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNv
bnN0OwotCiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQ
YXJzaW5nOyB9CiAKICAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KQEAg
LTkyLDEwICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHRhZ01hdGNoZXMoY29u
c3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgc3RhdGljIGJvb2wgYXR0cmli
dXRlTmFtZU1hdGNoZXMoY29uc3QgQXR0cmlidXRlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciopOwotICAgIGJvb2wgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCop
IGNvbnN0OwotICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVj
dG9yKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopOwotICAgIHN0YXRpYyBib29s
IGNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpOwor
ICAgIHN0YXRpYyBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqKTsK
IAogICAgIGVudW0gTGlua01hdGNoTWFzayB7IE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRlZCA9
IDIsIE1hdGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CiAgICAgc3RhdGljIHVu
c2lnbmVkIGRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqKTsKQEAgLTEw
NCwyNiArOTgsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xh
c3MoRG9jdW1lbnQqLCBDU1NTZWxlY3RvciopIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGlzRnJh
bWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqKTsKIAotICAgIGJvb2wgZmFzdENoZWNrUmlnaHRtb3N0
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50KiwgVmlzaXRlZE1hdGNo
VHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhj
b25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25z
dDsKLQogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAgIGJvb2wgbV9kb2N1bWVudElzSFRN
TDsKICAgICBNb2RlIG1fbW9kZTsKIH07CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikK
LXsKLSAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNl
dWRvVHlwZSA9IHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCk7Ci0gICAgcmV0dXJuIHBzZXVkb1R5cGUg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbmsKLSAgICAgICAgfHwgcHNldWRvVHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQW55TGluawotICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9WaXNpdGVkCi0gICAgICAgIHx8IHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0ZvY3VzOwotfQorYm9vbCBodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0aXZlVmFs
dWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cik7CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3Mo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGNvbnN0X2Nhc3Q8RWxlbWVudCo+KGVsZW1lbnQpLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvRm9jdXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0OCwyNyAr
MTMwLDYgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVOYW1lTWF0Y2hl
cyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgY28KICAgICByZXR1cm4gc2VsZWN0b3JBdHRy
aWJ1dGVOYW1lLnByZWZpeCgpID09IHN0YXJBdG9tIHx8IHNlbGVjdG9yQXR0cmlidXRlTmFtZS5u
YW1lc3BhY2VVUkkoKSA9PSBhdHRyaWJ1dGUtPm5hbWVzcGFjZVVSSSgpOwogfQogCi1pbmxpbmUg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSkKLXsKLSAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJp
YnV0ZXNXaXRob3V0VXBkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25l
ZCBzaXplID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRl
ID0gZWxlbWVudC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWVN
YXRjaGVzKGF0dHJpYnV0ZSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lKSAmJiAoIXZhbHVlIHx8IGF0
dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpmYXN0Q2hlY2tSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgaWYgKHNlbGVj
dG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpFeGFjdCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6U2V0KQotICAgICAgICByZXR1cm4gY2hlY2tFeGFjdEF0dHJpYnV0ZShl
bGVtZW50LCBzZWxlY3Rvci0+YXR0cmlidXRlKCksIHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSk7
Ci0gICAgQVNTRVJUKCFzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCBkY2NhM2U0NmY0NzhkMmRhNjE1MDU1ZTNkODkyZWVmNzc0YTVlNjM3Li5lY2JjMTEz
NjUxMWRkMDhmYTcxZWUyNjMwYjZmNDVmYjJlMGE2Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCisjaW5jbHVkZSAiRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCIKICNpbmNs
dWRlICJGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKQEAgLTY4MCw3ICs2ODEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBpbnQmCiAK
ICAgICBpZiAobV9lbGVtZW50LT5pc0xpbmsoKSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5saW5rUHNldWRvQ2xhc3NSdWxlcygpLCBt
YXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKLSAgICBpZiAobV9z
ZWxlY3RvckNoZWNrZXIubWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KSkKKyAgICBp
ZiAoU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpKQog
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQt
PmZvY3VzUHNldWRvQ2xhc3NSdWxlcygpLCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBs
YXN0UnVsZUluZGV4KTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1
ZXN0LnJ1bGVTZXQtPnRhZ1J1bGVzKG1fZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgbWF0
Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygp
LCBtYXRjaFJlcXVlc3QsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKQEAgLTIyNjQs
OSArMjI2NSwxMSBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lcgogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNo
ZXMobV9lbGVtZW50LCBydWxlRGF0YS5zZWxlY3RvcigpKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1JpZ2h0bW9zdEF0
dHJpYnV0ZVNlbGVjdG9yKG1fZWxlbWVudCwgcnVsZURhdGEuc2VsZWN0b3IoKSkpCisKKyAgICAg
ICAgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIocnVsZURh
dGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50KTsKKyAgICAgICAgaWYgKCFmYXN0UGF0aFNlbGVjdG9y
TWF0Y2hlci5tYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0b3JDaGVja2VyLmZhc3RDaGVj
ayhydWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQpOworICAgICAgICByZXR1cm4gZmFzdFBh
dGhTZWxlY3Rvck1hdGNoZXIubWF0Y2hlcygpOwogICAgIH0KIAogICAgIC8vIFNsb3cgcGF0aC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA1ODc4MmZiNGMyMjZlMDdiYTNl
Y2NjOGFmMGI4NDBjNTdkZmJhYzYzLi40M2FlZTA2N2E3NjBlYTlkODAwNTk2MTRlNTRlM2I5Y2Mz
YTY5ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGYXN0UGF0aFNlbGVjdG9yTWF0Y2hl
ci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NSw3ICs0Niw3IEBAIHZvaWQgU2Vs
ZWN0b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9y
TGlzdCkKIAogICAgIG1fc2VsZWN0b3JzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VsZWN0b3JD
b3VudCk7CiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmly
c3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9y
KSkKLSAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2VkQXBwZW5kKFNlbGVjdG9yRGF0YShzZWxl
Y3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3Rvcikp
KTsKKyAgICAgICAgbV9zZWxlY3RvcnMudW5jaGVja2VkQXBwZW5kKFNlbGVjdG9yRGF0YShzZWxl
Y3RvciwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNhblVzZUZhc3RQYXRoKHNlbGVjdG9yKSkp
OwogfQogCiBib29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3QgU2VsZWN0b3JDaGVj
a2VyJiBzZWxlY3RvckNoZWNrZXIsIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183599</attachid>
            <date>2013-01-18 21:07:08 -0800</date>
            <delta_ts>2013-02-16 15:58:15 -0800</delta_ts>
            <desc>Awesome.</desc>
            <filename>bug-106860-20130118210407.patch</filename>
            <type>text/plain</type>
            <size>42059</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBlYjZmMzIzNzc5MzIw
ZjdlYmQ0ZTU0MmZjMGY0Y2VlMTVjNTU4Yi4uYzQzMDM5MzAyYzc0N2M5YTRlNzBiMGI4ODQ0MWE3
YTg3NGMyMzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAxLTE3ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBmdW5jdGlv
bmFsIGNoYW5nZXMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogQWRkZWQgbmV3IGNsYXNzIHRvIGJ1aWxkIHN5c3RlbXMuCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9uZS5j
cHA6IERpdHRvLgorICAgICAgICAqIGNzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHA6IEFk
ZGVkLgorICAgICAgICAqIGNzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NlbGVjdG9yTWF0
Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKTogQ2hhbmdlZCB0byB1c2UgbmV3IGNsYXNzLgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjphZGRSdWxlKTogRGl0dG8uCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6IE1vZGUgdGhlIGNvZGUgb3V0IGhlcmUgdG8gbmV3IGNsYXNzLgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU2VsZWN0
b3JDaGVja2VyLmg6IE1vdmVkIHRoZSBjb2RlIG91dCBvZiBoZXJlIHRvIG5ldyBjbGFzcy4KKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6IENoYW5nZWQgdG8gdXNlIG5ldyBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKTogRGl0dG8uCisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZSk6IERpdHRvLgorCiAyMDEzLTAxLTE4ICBEaW1hIEdvcmJp
ayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFRleHRUcmFjay5oIGlu
Y2x1ZGUgZnJvbSB0aGUgRWxlbWVudC5oIGFuZCBtb3ZlIFdlYlZUVCByZWxhdGVkIHN0dWZmIG91
dHNpZGUgdGhlIEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWI0NGNkYTRjN2UyYTRl
NzlkZTQ3NTdlMDhmMjMwZmIyZWZlYTI4Zi4uNWEyNmY5ZjllMDVhZWU0YWMwNGJiZTdjOTllNDY0
MGYyYmIwYjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNjcsNiArMTA2Nyw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTVmFsdWUuY3BwCiAgICAgY3NzL0NTU1ZhbHVl
TGlzdC5jcHAKICAgICBjc3MvQ1NTVmFsdWVQb29sLmNwcAorICAgIGNzcy9GYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlci5jcHAKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKICAgICBjc3MvRm9u
dFZhbHVlLmNwcAogICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5ZGNkZjAzOGYyODAxMzhiZWQ1M2QwNzA1Mjc0ZjNhOTk0ZjM2MDcx
Li42NjczMjIxMGYyZGVlNzU2Mzc4ZjM2YjEzNWNlMWIxNGQ1YWJhMjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2MTcsNiArMjYxNyw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJk
UmVnaW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmVhdHVyZVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IGEwZDYwNjFmMmIzNDJlNzgxYjg5NjI3Mjk5ODBhYzRmNjY2
NTg1OTUuLjg2NmJkYTlmNGZjMjk1OGZlZjc2Y2UwY2M5YThlNjk3NDQyNGYxMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMjk1LDYgKzI5NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NWYWx1ZS5j
cHAgXAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwIFwKICAgICBjc3MvQ1NTVmFsdWVQb29sLmNw
cCBcCisgICAgY3NzL0Zhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCBcCiAgICAgY3NzL0ZvbnRG
ZWF0dXJlVmFsdWUuY3BwIFwKICAgICBjc3MvRm9udFZhbHVlLmNwcCBcCiAgICAgY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUyNjg5Y2FkZTk5OTkxM2I0ZmEz
YjE0YWNlYjNiZGYwYmQ3ZjExM2QuLjhhZWRhNWY2MGUyODUzYWE0YWNhYTEwMTI2ZDBkMGExOWE4
ZmE5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE1MjQsNiArMTUyNCw4IEBACiAgICAgICAgICAg
ICAnY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NvdW50ZXIuaCcs
CiAgICAgICAgICAgICAnY3NzL0Rhc2hib2FyZFJlZ2lvbi5oJywKKyAgICAgICAgICAgICdjc3Mv
RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3BwJywKKyAgICAgICAgICAgICdjc3MvRmFzdFBhdGhT
ZWxlY3Rvck1hdGNoZXIuaCcsCiAgICAgICAgICAgICAnY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3Bw
JywKICAgICAgICAgICAgICdjc3MvRm9udEZlYXR1cmVWYWx1ZS5oJywKICAgICAgICAgICAgICdj
c3MvRm9udFZhbHVlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjJmMGU2NzY5NTBlMDIwMmMwYzRkMjY0OTM5YmNkOWYx
Mjg5ODY2Ni4uMWM2MWJhNDIwODQxZmMxYTllNzUxYTcwMzFlMGFlZDcyMDliOTM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTExNyw2ICsxMTE3LDggQEAKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFF
MUIxRDMwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDQwRkY1OTg2OTAwNTc2QjNCIC8q
IFNoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUIxQ0UwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovOyB9Owor
CQk0MUUxRTU3MDE2QTVERjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUU1NkUx
NkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmNwcCAqLzsgfTsKKwkJ
NDFFMUU1NzExNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxRTU2RjE2QTVE
RjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCAqLzsgfTsKIAkJNDFGMDYx
NzQwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYxNzIwRjVGMDBB
QzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYw
NjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MTczMEY1
RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovOyB9Owog
CQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MThDMEY1RjA2OTgwMEEw
N0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovOyB9OwpAQCAtODQxMyw2ICs4NDE1LDggQEAKIAkJ
NDFFMUIxQ0QwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFD
RTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlci5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNC
IC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2hhcmVkV29ya2Vy
LmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFMUU1NkUxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JN
YXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFMUU1
NkYxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MTcyMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
MDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNvbGVNZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTc2MSw2ICsyMTc2NSw4IEBACiAJCQkJRTQ5QkQ5RjkxMzFGRDJFRDAwM0M1
NkYwIC8qIENTU1ZhbHVlUG9vbC5oICovLAogCQkJCUNBRTlGOTBFMTQ2NDQxRjAwMEMyNDVCMSAv
KiBDU1NWYXJpYWJsZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDRTEwQTE5ODlDQTAwN0ZCOEM1IC8q
IERhc2hib2FyZFJlZ2lvbi5oICovLAorCQkJCTQxRTFFNTZFMTZBNURGMTgwMDQ4M0JEMiAvKiBG
YXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAgKi8sCisJCQkJNDFFMUU1NkYxNkE1REYxODAwNDgz
QkQyIC8qIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmggKi8sCiAJCQkJNEE2RTlGQzExM0MxN0Qx
RDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovLAogCQkJCTRBNkU5RkMyMTNDMTdE
MUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDQzcwQTE5ODlD
QTAwN0ZCOEM1IC8qIEZvbnRWYWx1ZS5jcHAgKi8sCkBAIC0yNjI2MSw2ICsyNjI2Nyw3IEBACiAJ
CQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUYxMjE3MUY2MTZBOENGMEIwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUUxRTU3MTE2QTVERjE4MDA0ODNCRDIgLyogRmFzdFBhdGhTZWxl
Y3Rvck1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjk0MTEsNiArMjk0MTgsNyBAQAogCQkJ
CUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQjQ5QzM5QTE2Nzg0OTMyMDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDFFMUU1NzAxNkE1REYxODAwNDgzQkQyIC8qIEZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9u
ZS5jcHAKaW5kZXggODY0NmRmNjY4MTMwMDI3ZDVlMTUzZTg3N2MyZDUxOWUzNzBlZGVmYi4uYTg5
MDMwN2Q2ZmRmYjdkOWM3NWRlZDQ0ODAyOWI3OGQ5NGU5ZTUzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QWxsSW5PbmUuY3BwCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWUuY3BwIgog
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5jcHAiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmNwcCIK
KyNpbmNsdWRlICJGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiUnVsZUZl
YXR1cmUuY3BwIgogI2luY2x1ZGUgIlJ1bGVTZXQuY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9yRmls
dGVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9y
TWF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBhYjc5Y2RmMWJjNzgxNTBlYjk4YzkxOTM1YzE5NzRiNmI0MmNmMWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRmFzdFBhdGhTZWxlY3Rvck1h
dGNoZXIuY3BwCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQ
cm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8
Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBBdG9taWNTdHJpbmdJbXBsKiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpLCBib29sIGluaXRBdHRyaWJ1dGVOYW1lPgoraW5saW5lIGJvb2wgZmFz
dENoZWNrU2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3Qg
RWxlbWVudComIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiYgdG9wQ2hpbGRPclN1YnNlbGVj
dG9yLCBjb25zdCBFbGVtZW50KiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQor
eworICAgIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlID0gc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgp
OworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSA9IGluaXRBdHRyaWJ1dGVOYW1l
ID8gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpIDogYW55UU5hbWUoKTsKKyAgICBmb3IgKDsgZWxlbWVu
dDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoY2hl
Y2tWYWx1ZShlbGVtZW50LCB2YWx1ZSwgYXR0cmlidXRlKSAmJiBTZWxlY3RvckNoZWNrZXI6OnRh
Z01hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpKSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0b3It
PnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpCisgICAgICAgICAgICAgICAg
dG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGls
ZE9yU3Vic2VsZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0b3ItPnJlbGF0
aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENT
U1NlbGVjdG9yOjpTdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNl
bGVjdG9yID0gc2VsZWN0b3I7CisgICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9y
TWF0Y2hFbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChz
ZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgICAg
IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKKyAg
ICAgICAgICAgIC8vIENoaWxkIG9yIHN1YnNlbGVjdG9yIGNoZWNrIGZhaWxlZC4KKyAgICAgICAg
ICAgIC8vIElmIHRoZSBtYXRjaCBlbGVtZW50IGlzIG51bGwsIHRvcENoaWxkT3JTdWJzZWxlY3Rv
ciB3YXMgYWxzbyB0aGUgdmVyeSB0b3Btb3N0IHNlbGVjdG9yIGFuZCBoYWQgdG8gbWF0Y2gKKyAg
ICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdlIHdlcmUgY2hlY2tpbmcuCisgICAg
ICAgICAgICBpZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIg
bWF0Y2hlcyBkb3duIHRoZSBhbmNlc3RvciBjaGFpbi4KKyAgICAgICAgICAgIC8vIFJld2luZCB0
byB0aGUgdG9wbW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0
Y2hlZCwgY29udGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgorICAgICAgICAgICAgc2VsZWN0b3Ig
PSB0b3BDaGlsZE9yU3Vic2VsZWN0b3I7CisgICAgICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRP
clN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgICAgICB0
b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBjaGVja0Ns
YXNzVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmKQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygp
ICYmIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1l
cygpLmNvbnRhaW5zKHZhbHVlKTsKK30KKworaW5saW5lIGJvb2wgY2hlY2tJRFZhbHVlKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdCBRdWFsaWZp
ZWROYW1lJikKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5pZEZv
clN0eWxlUmVzb2x1dGlvbigpLmltcGwoKSA9PSB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgY2hl
Y2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmlu
Z0ltcGwqIHZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQoreworICAg
IHJldHVybiBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShlbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGNoZWNrVGFnVmFs
dWUoY29uc3QgRWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBRdWFsaWZpZWROYW1l
JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCitGYXN0UGF0aFNlbGVjdG9yTWF0Y2hl
cjo6RmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50
KiBlbGVtZW50KQorICAgIDogbV9zZWxlY3RvcihzZWxlY3RvcikKKyAgICAsIG1fZWxlbWVudChl
bGVtZW50KQoreworfQorCitib29sIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjptYXRjaGVzUmln
aHRtb3N0U2VsZWN0b3IoU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRN
YXRjaFR5cGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNhblVzZUZhc3RQYXRoKG1fc2VsZWN0b3Ip
KTsKKworICAgIGlmICghU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKG1fZWxlbWVudCwgbV9z
ZWxlY3RvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKG1fc2VsZWN0b3It
Pm1fbWF0Y2gpIHsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpOb25lOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpDbGFzczoKKyAgICAgICAgcmV0dXJuIGNoZWNr
Q2xhc3NWYWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFt
ZSgpKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgcmV0dXJuIGNoZWNrSURW
YWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFtZSgpKTsK
KyAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6
CisgICAgICAgIHJldHVybiBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUobV9lbGVtZW50LCBtX3Nl
bGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9zZWxlY3Rvci0+YXR0cmlidXRlKCkpOworICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOgorICAgICAgICByZXR1cm4gY29tbW9uUHNldWRv
Q2xhc3NTZWxlY3Rvck1hdGNoZXModmlzaXRlZE1hdGNoVHlwZSk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcjo6bWF0Y2hlcygpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1hdGNoZXNSaWdodG1vc3RTZWxlY3RvcihTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRN
YXRjaEVuYWJsZWQpKTsKKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BDaGlsZE9yU3Vic2Vs
ZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNo
RWxlbWVudCA9IDA7CisKKyAgICBjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gbV9lbGVtZW50Owor
ICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3I7CisKKyAgICBpZiAo
c2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5y
ZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yID0gbV9zZWxlY3RvcjsKKworICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24o
KSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
LT5wYXJlbnRFbGVtZW50KCk7CisKKyAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5
KCk7CisKKyAgICAvLyBXZSBrbm93IHRoaXMgY29tcG91bmQgc2VsZWN0b3IgaGFzIGRlc2NlbmRh
bnQsIGNoaWxkIGFuZCBzdWJzZWxlY3RvciBjb21iaW5hdG9ycyBvbmx5IGFuZCBhbGwgY29tcG9u
ZW50cyBhcmUgc2ltcGxlLgorICAgIHdoaWxlIChzZWxlY3RvcikgeworICAgICAgICBzd2l0Y2gg
KHNlbGVjdG9yLT5tX21hdGNoKSB7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgor
ICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0NsYXNzVmFsdWUs
IGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGls
ZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKKyAg
ICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tJRFZhbHVlLCBmYWxz
ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1
YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Tm9uZToKKyAgICAg
ICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Y2hlY2tUYWdWYWx1ZSwgZmFsc2U+
KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJz
ZWxlY3Rvck1hdGNoRWxlbWVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNldDoKKyAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVja1Npbmds
ZVNlbGVjdG9yPGNoZWNrRXhhY3RBdHRyaWJ1dGVWYWx1ZSwgdHJ1ZT4oc2VsZWN0b3IsIGVsZW1l
bnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVt
ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uKQor
eworICAgIHJldHVybiByZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCB8fCByZWxh
dGlvbiA9PSBDU1NTZWxlY3Rvcjo6Q2hpbGQgfHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OlN1
YlNlbGVjdG9yOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlTWF0Y2go
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQoreworICAgIGlmIChzZWxlY3Rvci0+bV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6U2V0KSB7CisgICAgICAgIC8vIFN0eWxlIGF0dHJpYnV0ZSBpcyBn
ZW5lcmF0ZWQgbGF6aWx5IGJ1dCB0aGUgZmFzdCBwYXRoIGRvZXNuJ3QgdHJpZ2dlciBpdC4KKyAg
ICAgICAgLy8gRGlzYWxsb3cgdGhlbSBoZXJlIHJhdGhlciB0aGFuIG1ha2luZyB0aGUgZmFzdCBw
YXRoIG1vcmUgYnJhbmNoeS4KKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSAh
PSBzdHlsZUF0dHI7CisgICAgfQorICAgIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6RXhhY3QpCisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0gc3R5
bGVBdHRyICYmICFodG1sQXR0cmlidXRlSGFzQ2FzZUluc2Vuc2l0aXZlVmFsdWUoc2VsZWN0b3It
PmF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6Ok5vbmUgfHwgc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkIHx8IHNlbGVj
dG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzczsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3RvcikKK3sKKyAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKHNlbGVjdG9yLT5y
ZWxhdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0Zhc3RDaGVj
a2FibGVNYXRjaChzZWxlY3RvcikgfHwgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9u
UHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3Rvcik7Cit9CisKK2Jvb2wgRmFzdFBhdGhTZWxlY3Rv
ck1hdGNoZXI6OmNhblVzZUZhc3RQYXRoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sK
KyAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlz
dG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Cisg
ICAgICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJs
ZU1hdGNoKHNlbGVjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmNvbW1vblBz
ZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlw
ZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChpc0NvbW1vblBzZXVkb0Ns
YXNzU2VsZWN0b3IobV9zZWxlY3RvcikpOworICAgIHN3aXRjaCAobV9zZWxlY3Rvci0+cHNldWRv
VHlwZSgpKSB7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKKyAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgorICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5pc0xp
bmsoKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgorICAgICAgICByZXR1
cm4gbV9lbGVtZW50LT5pc0xpbmsoKSAmJiB2aXNpdGVkTWF0Y2hUeXBlID09IFNlbGVjdG9yQ2hl
Y2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZDsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9G
b2N1czoKKyAgICAgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRv
Q2xhc3MobV9lbGVtZW50KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0Zhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEzMjBlOGE2OGIxZGVh
OWMzMzJjZDA3MjFmN2NiYzEwMzY0MTBiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9GYXN0UGF0aFNlbGVjdG9yTWF0Y2hlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAg
ICAgICAoQykgMjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNv
bSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBu
aWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXJfaAorI2RlZmluZSBGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcl9oCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIlNlbGVj
dG9yQ2hlY2tlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZhc3RQYXRoU2Vs
ZWN0b3JNYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlcihDU1NT
ZWxlY3RvciosIEVsZW1lbnQqKTsKKworICAgIGJvb2wgbWF0Y2hlcygpIGNvbnN0OworICAgIGJv
b2wgbWF0Y2hlc1JpZ2h0bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNo
VHlwZSkgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3Io
KSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGNhblVzZUZhc3RQYXRoKGNvbnN0IENTU1NlbGVj
dG9yKik7CisgICAgc3RhdGljIGJvb2wgaXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKik7CisgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25z
dCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjb21t
b25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRj
aFR5cGUpIGNvbnN0OworCisgICAgQ1NTU2VsZWN0b3IqIG1fc2VsZWN0b3I7CisgICAgRWxlbWVu
dCogbV9lbGVtZW50OworfTsKKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6
Om1hdGNoZXNSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkV4YWN0IHx8IG1fc2VsZWN0b3ItPm1f
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkKKyAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRy
aWJ1dGUobV9lbGVtZW50LCBtX3NlbGVjdG9yLT5hdHRyaWJ1dGUoKSwgbV9zZWxlY3Rvci0+dmFs
dWUoKS5pbXBsKCkpOworICAgIEFTU0VSVCghbV9zZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3Rv
cigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rv
ck1hdGNoZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IpCit7CisgICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHBzZXVkb1R5cGUgPSBzZWxlY3Rvci0+cHNldWRvVHlwZSgpOworICAgIHJldHVybiBw
c2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rCisgICAgICAgIHx8IHBzZXVkb1R5
cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxpbmsKKyAgICAgICAgfHwgcHNldWRvVHlwZSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZAorICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czsKK30KKworaW5saW5lIGJvb2wgRmFzdFBhdGhTZWxlY3Rv
ck1hdGNoZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJp
bmdJbXBsKiB2YWx1ZSkKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0
VXBkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBzaXplID0gZWxl
bWVudC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+
YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRl
TmFtZU1hdGNoZXMoYXR0cmlidXRlLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUg
fHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCmluZGV4IGM2NzcxNTFlN2NkODMzNDk2ZmZlNDQyZTAyYTk0YmJhMmJj
MGQ3NmIuLjQ4ZGJhNDFmYjUwNDdkNjdiOGU3MjUxZWE4NDNjNGMyZmQ0Nzc4MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NGb250U2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Nl
bGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChzZWxlY3Rvci0+dGFnKCkgIT0gc3RhckF0
b20pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjppc0Nv
bW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKQorICAgIGlmIChGYXN0UGF0aFNlbGVj
dG9yTWF0Y2hlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CiB9CkBA
IC0xMjMsNyArMTI0LDcgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24sIEEKICAgICA6IG1fcnVsZShy
dWxlKQogICAgICwgbV9zZWxlY3RvckluZGV4KHNlbGVjdG9ySW5kZXgpCiAgICAgLCBtX3Bvc2l0
aW9uKHBvc2l0aW9uKQotICAgICwgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoKGFkZFJ1bGVG
bGFncyAmIFJ1bGVDYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvcikgJiYgU2VsZWN0b3JDaGVja2VyOjpp
c0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcigpKSkKKyAgICAsIG1faGFzRmFzdENoZWNr
YWJsZVNlbGVjdG9yKChhZGRSdWxlRmxhZ3MgJiBSdWxlQ2FuVXNlRmFzdENoZWNrU2VsZWN0b3Ip
ICYmIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpjYW5Vc2VGYXN0UGF0aChzZWxlY3RvcigpKSkK
ICAgICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1f
aGFzTXVsdGlwYXJ0U2VsZWN0b3IoISFzZWxlY3RvcigpLT50YWdIaXN0b3J5KCkpCiAgICAgLCBt
X2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGlzU2VsZWN0
b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IoKSkpCkBAIC0yMzIsNyArMjMz
LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2Vs
ZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgotICAgIGlmIChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rv
cihzZWxlY3RvcikpIHsKKyAgICBpZiAoRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXI6OmlzQ29tbW9u
UHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpIHsKICAgICAgICAgc3dpdGNoIChzZWxlY3Rv
ci0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGZjMzYzYmY1MTA5NzVmMGE0ZmU1NjhiZWM5YzUw
OTk1MDYxZGE1NWQuLjhlZmM0N2I5NjNiM2FhMGU1NjQ0ZjRiMTY1MmZkYTcyYzU1NmI2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgi
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtNjEsOCArNjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBib29sIGh0bWxBdHRy
aWJ1dGVIYXNDYXNlSW5zZW5zaXRpdmVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyKTsK
LQogU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogbV9zdHJpY3RQYXJzaW5nKCFkb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpCiAgICAgLCBt
X2RvY3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQpAQCAtNzMsNTMgKzcy
LDE3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVu
dCkKIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1l
bnQqIGVsZW1lbnQsIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IpIGNvbnN0CiB7CiAgICAg
aWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkg
ewotICAgICAgICBpZiAoIWZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKHNlbCwgZWxlbWVudCwg
VmlzaXRlZE1hdGNoRGlzYWJsZWQpKQorICAgICAgICBGYXN0UGF0aFNlbGVjdG9yTWF0Y2hlciBm
YXN0UGF0aFNlbGVjdG9yTWF0Y2hlcihzZWwsIGVsZW1lbnQpOworICAgICAgICBpZiAoIWZhc3RQ
YXRoU2VsZWN0b3JNYXRjaGVyLm1hdGNoZXNSaWdodG1vc3RTZWxlY3RvcihWaXNpdGVkTWF0Y2hE
aXNhYmxlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBmYXN0
Q2hlY2soc2VsLCBlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGZhc3RQYXRoU2VsZWN0b3JNYXRj
aGVyLm1hdGNoZXMoKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2hvbGUgdGhpbmcgc2hvdWxk
IGJlIGEgRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIgZnVuY3Rpb24uCiAgICAgfQogCiAgICAgUHNl
dWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIHJldHVybiBtYXRjaChT
ZWxlY3RvckNoZWNraW5nQ29udGV4dChzZWwsIGVsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6Vmlz
aXRlZE1hdGNoRGlzYWJsZWQpLCBpZ25vcmVEeW5hbWljUHNldWRvKSA9PSBTZWxlY3Rvck1hdGNo
ZXM7CiB9CiAKLW5hbWVzcGFjZSB7Ci0KLXRlbXBsYXRlIDxib29sIGNoZWNrVmFsdWUoY29uc3Qg
RWxlbWVudCosIEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBRdWFsaWZpZWROYW1lJiksIGJvb2wg
aW5pdEF0dHJpYnV0ZU5hbWU+Ci1pbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiB0
b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCi17Ci0gICAgQXRvbWljU3RyaW5nSW1w
bCogdmFsdWUgPSBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlID0gaW5pdEF0dHJpYnV0ZU5hbWUgPyBzZWxlY3Rvci0+YXR0cmlidXRl
KCkgOiBhbnlRTmFtZSgpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChjaGVja1ZhbHVlKGVsZW1lbnQsIHZhbHVl
LCBhdHRyaWJ1dGUpICYmIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxl
Y3RvcikpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxl
Y3Rvcjo6RGVzY2VuZGFudCkKLSAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3Ig
PSAwOwotICAgICAgICAgICAgZWxzZSBpZiAoIXRvcENoaWxkT3JTdWJzZWxlY3RvcikgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6
Q2hpbGQgfHwgc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9y
KTsKLSAgICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSBzZWxlY3RvcjsKLSAg
ICAgICAgICAgICAgICB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQgPSBlbGVtZW50
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9
IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci0+
dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHRvcENoaWxkT3JTdWJzZWxlY3RvcikgewotICAgICAgICAgICAgLy8gQ2hpbGQgb3Ig
c3Vic2VsZWN0b3IgY2hlY2sgZmFpbGVkLgotICAgICAgICAgICAgLy8gSWYgdGhlIG1hdGNoIGVs
ZW1lbnQgaXMgbnVsbCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yIHdhcyBhbHNvIHRoZSB2ZXJ5IHRv
cG1vc3Qgc2VsZWN0b3IgYW5kIGhhZCB0byBtYXRjaAotICAgICAgICAgICAgLy8gdGhlIG9yaWdp
bmFsIGVsZW1lbnQgd2Ugd2VyZSBjaGVja2luZy4KLSAgICAgICAgICAgIGlmICghdG9wQ2hpbGRP
clN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBtYXRjaGVzIGRvd24gdGhlIGFuY2Vz
dG9yIGNoYWluLgotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHRoZSB0b3Btb3N0IGNoaWxkIG9y
IHN1YnNlbGVjdG9yIGFuZCB0aGUgZWxlbWVudCBpdCBtYXRjaGVkLCBjb250aW51ZSBjaGVja2lu
ZyBhbmNlc3RvcnMuCi0gICAgICAgICAgICBzZWxlY3RvciA9IHRvcENoaWxkT3JTdWJzZWxlY3Rv
cjsKLSAgICAgICAgICAgIGVsZW1lbnQgPSB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9
IDA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBib29sIGNoZWNrQ2xhc3NWYWx1ZShjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
CiB7CiAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3Qg
U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29udGFpbnModmFsdWUpOwpA
QCAtMTMyLDcgKzk1LDcgQEAgaW5saW5lIGJvb2wgY2hlY2tJRFZhbHVlKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlLCBjb25zdAogCiBpbmxpbmUgYm9vbCBj
aGVja0V4YWN0QXR0cmlidXRlVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWljU3Ry
aW5nSW1wbCogdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShlbGVtZW50LCBh
dHRyaWJ1dGVOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVy
OjpjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0K
IAogaW5saW5lIGJvb2wgY2hlY2tUYWdWYWx1ZShjb25zdCBFbGVtZW50KiwgQXRvbWljU3RyaW5n
SW1wbCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKQpAQCAtMTQwLDExMCArMTAzLDYgQEAgaW5saW5l
IGJvb2wgY2hlY2tUYWdWYWx1ZShjb25zdCBFbGVtZW50KiwgQXRvbWljU3RyaW5nSW1wbCosIGNv
bnN0IFF1YWxpZmllZE5hbWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfQotCi1pbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlw
ZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAotewotICAgIEFTU0VSVChpc0Zhc3RDaGVja2FibGVT
ZWxlY3RvcihzZWxlY3RvcikpOwotCi0gICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNo
ZXMoZWxlbWVudCwgc2VsZWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3dpdGNo
IChzZWxlY3Rvci0+bV9tYXRjaCkgewotICAgIGNhc2UgQ1NTU2VsZWN0b3I6Ok5vbmU6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgotICAgICAgICBy
ZXR1cm4gY2hlY2tDbGFzc1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwg
YW55UU5hbWUoKSk7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgIHJldHVybiBj
aGVja0lEVmFsdWUoZWxlbWVudCwgc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBhbnlRTmFtZSgp
KTsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpT
ZXQ6Ci0gICAgICAgIHJldHVybiBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUoZWxlbWVudCwgc2Vs
ZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBzZWxlY3Rvci0+YXR0cmlidXRlKCkpOwotICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOgotICAgICAgICByZXR1cm4gY29tbW9uUHNldWRvQ2xh
c3NTZWxlY3Rvck1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IsIHZpc2l0ZWRNYXRjaFR5cGUpOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2soY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewot
ICAgIEFTU0VSVChmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCwg
VmlzaXRlZE1hdGNoRW5hYmxlZCkpOwotCi0gICAgY29uc3QgQ1NTU2VsZWN0b3IqIHRvcENoaWxk
T3JTdWJzZWxlY3RvciA9IDA7Ci0gICAgY29uc3QgRWxlbWVudCogdG9wQ2hpbGRPclN1YnNlbGVj
dG9yTWF0Y2hFbGVtZW50ID0gMDsKLSAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NT
U2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpT
dWJTZWxlY3RvcikKLSAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gc2VsZWN0b3I7Ci0K
LSAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9y
KQotICAgICAgICBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwotCi0gICAgc2Vs
ZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotCi0gICAgLy8gV2Uga25vdyB0aGlzIGNv
bXBvdW5kIHNlbGVjdG9yIGhhcyBkZXNjZW5kYW50LCBjaGlsZCBhbmQgc3Vic2VsZWN0b3IgY29t
YmluYXRvcnMgb25seSBhbmQgYWxsIGNvbXBvbmVudHMgYXJlIHNpbXBsZS4KLSAgICB3aGlsZSAo
c2VsZWN0b3IpIHsKLSAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewotICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpDbGFzczoKLSAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2lu
Z2xlU2VsZWN0b3I8Y2hlY2tDbGFzc1ZhbHVlLCBmYWxzZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRv
cENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1Npbmds
ZVNlbGVjdG9yPGNoZWNrSURWYWx1ZSwgZmFsc2U+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGls
ZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6Ok5vbmU6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNl
bGVjdG9yPGNoZWNrVGFnVmFsdWUsIGZhbHNlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpTZXQ6Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAg
ICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRl
VmFsdWUsIHRydWU+KHNlbGVjdG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRv
cENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1Nl
bGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbikKLXsKLSAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NT
U2VsZWN0b3I6OkRlc2NlbmRhbnQgfHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8
IHJlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIGlzRmFzdENoZWNrYWJsZU1hdGNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikK
LXsKLSAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkgewotICAg
ICAgICAvLyBTdHlsZSBhdHRyaWJ1dGUgaXMgZ2VuZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3Qg
cGF0aCBkb2Vzbid0IHRyaWdnZXIgaXQuCi0gICAgICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSBy
YXRoZXIgdGhhbiBtYWtpbmcgdGhlIGZhc3QgcGF0aCBtb3JlIGJyYW5jaHkuCi0gICAgICAgIHJl
dHVybiBzZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0gc3R5bGVBdHRyOwotICAgIH0KLSAgICBpZiAo
c2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkV4YWN0KQotICAgICAgICByZXR1cm4g
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpICE9IHN0eWxlQXR0ciAmJiAhaHRtbEF0dHJpYnV0ZUhhc0Nh
c2VJbnNlbnNpdGl2ZVZhbHVlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSk7Ci0gICAgcmV0dXJuIHNl
bGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpOb25lIHx8IHNlbGVjdG9yLT5tX21hdGNo
ID09IENTU1NlbGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
Q2xhc3M7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RT
ZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgaWYgKCFpc0Zhc3RD
aGVja2FibGVSZWxhdGlvbihzZWxlY3Rvci0+cmVsYXRpb24oKSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gaXNGYXN0Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVj
dG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKTsKLX0KLQot
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNl
bGVjdG9yKHNlbGVjdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2VsZWN0
b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rv
ci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAgICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24o
c2VsZWN0b3ItPnJlbGF0aW9uKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAoIWlzRmFzdENoZWNrYWJsZU1hdGNoKHNlbGVjdG9yKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIFJlY3Vyc2l2ZSBjaGVj
ayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDQgZGlmZmVy
ZW50IHZhbHVlczoKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgIC0gdGhlIHNlbGVjdG9y
IG1hdGNoZXMgdGhlIGVsZW1lbnQgZQpAQCAtNzk4LDcgKzY1Nyw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU2liCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRm9jdXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCk7CisgICAgICAgICAgICByZXR1
cm4gU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KTsKICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6CiAgICAgICAgICAgICAvLyBJZiB3
ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9y
cyB3aXRoIG5vCiAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmhvdmVyIHNob3VsZCBub3QgbWF0
Y2ggYW55dGhpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBzaXRlcyBsaWtlIHdzai5jb20uCkBA
IC0xMDY3LDIzICs5MjYsNiBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTY3JvbGxiYXJQ
c2V1ZG9DbGFzcyhEb2N1bWVudCogZG9jdW1lbnQsIENTU1NlbGVjdG9yKgogICAgIH0KIH0KIAot
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgVmlzaXRl
ZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAotewotICAgIEFTU0VSVChpc0NvbW1v
blBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKTsKLSAgICBzd2l0Y2ggKHNlbGVjdG9yLT5w
c2V1ZG9UeXBlKCkpIHsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgotICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxpbms6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5p
c0xpbmsoKTsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgotICAgICAgICBy
ZXR1cm4gZWxlbWVudC0+aXNMaW5rKCkgJiYgdmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0
Y2hFbmFibGVkOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzOgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoZWxlbWVudCk7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
CiB1bnNpZ25lZCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBN
YXRjaEFsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAyYTk3ZmM4YzYy
Y2MyYWFjNDU2MzY3NmIwMDE2MjhmYzQ2ZTQzMTE1Li5mYmU0NWFlZjI4NzY1YjgzOWU1ZjE5OGZk
NGRiMTMxNGJmYzFiM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC04
Miw5ICs4Miw2IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaWJsaW5nVHJhdmVy
c2FsU3RyYXRlZ3k+CiAgICAgYm9vbCBjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYsIGNvbnN0IFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSYpIGNvbnN0OwogCi0gICAgc3Rh
dGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAg
ICBib29sIGZhc3RDaGVjayhjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKSBjb25z
dDsKLQogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFy
c2luZzsgfQogCiAgICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CkBAIC05
MiwxMCArODksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCB0YWdNYXRjaGVzKGNvbnN0
IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIGF0dHJpYnV0
ZU5hbWVNYXRjaGVzKGNvbnN0IEF0dHJpYnV0ZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0
b3IqKTsKLSAgICBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqKSBj
b25zdDsKLSAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RBdHRyaWJ1dGVTZWxlY3Rv
cihjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqKTsKLSAgICBzdGF0aWMgYm9vbCBj
aGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBz
ZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsKKyAg
ICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7CiAK
ICAgICBlbnVtIExpbmtNYXRjaE1hc2sgeyBNYXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAy
LCBNYXRjaEFsbCA9IE1hdGNoTGluayB8IE1hdGNoVmlzaXRlZCB9OwogICAgIHN0YXRpYyB1bnNp
Z25lZCBkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1NlbGVjdG9yKik7CkBAIC0xMDQs
MjYgKzk4LDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNz
KERvY3VtZW50KiwgQ1NTU2VsZWN0b3IqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBpc0ZyYW1l
Rm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAKLSAgICBib29sIGZhc3RDaGVja1JpZ2h0bW9zdFNl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCosIFZpc2l0ZWRNYXRjaFR5
cGUpIGNvbnN0OwotICAgIGJvb2wgY29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMoY29u
c3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKiwgVmlzaXRlZE1hdGNoVHlwZSkgY29uc3Q7
Ci0KICAgICBib29sIG1fc3RyaWN0UGFyc2luZzsKICAgICBib29sIG1fZG9jdW1lbnRJc0hUTUw7
CiAgICAgTW9kZSBtX21vZGU7CiB9OwogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6Omlz
Q29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17
Ci0gICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVk
b1R5cGUgPSBzZWxlY3Rvci0+cHNldWRvVHlwZSgpOwotICAgIHJldHVybiBwc2V1ZG9UeXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rCi0gICAgICAgIHx8IHBzZXVkb1R5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FueUxpbmsKLSAgICAgICAgfHwgcHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvVmlzaXRlZAotICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9Gb2N1czsKLX0KK2Jvb2wgaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2ZVZhbHVl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIpOwogCi1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0ZvY3VzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDgsMjcgKzEz
MCw2IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlTmFtZU1hdGNoZXMo
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIGNvCiAgICAgcmV0dXJuIHNlbGVjdG9yQXR0cmli
dXRlTmFtZS5wcmVmaXgoKSA9PSBzdGFyQXRvbSB8fCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gYXR0cmlidXRlLT5uYW1lc3BhY2VVUkkoKTsKIH0KIAotaW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCogdmFsdWUpCi17Ci0gICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1
dGVzV2l0aG91dFVwZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lTWF0
Y2hlcyhhdHRyaWJ1dGUsIHNlbGVjdG9yQXR0cmlidXRlTmFtZSkgJiYgKCF2YWx1ZSB8fCBhdHRy
aWJ1dGUtPnZhbHVlKCkuaW1wbCgpID09IHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGlmIChzZWxlY3Rv
ci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QgfHwgc2VsZWN0b3ItPm1fbWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OlNldCkKLSAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRyaWJ1dGUoZWxl
bWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOwot
ICAgIEFTU0VSVCghc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggYmY5NjBkZjA1YWYwM2UxNzVlMjM5ODM5NmM5ZjgyZjE1ZTg5NmVhOC4uMTgxN2FmOTlj
NWMwNzI1ZTNkYmY5YWUzMTNhMTExZDY5YzMwZWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNp
bmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dFNoYWRvdy5oIgorI2luY2x1ZGUgIkZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyLmgiCiAjaW5jbHVk
ZSAiRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC02ODQsNyArNjg1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgaW50JgogCiAg
ICAgaWYgKG1fZWxlbWVudC0+aXNMaW5rKCkpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0
Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7Ci0gICAgaWYgKG1fc2Vs
ZWN0b3JDaGVja2VyLm1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKG1fZWxlbWVudCkpCisgICAgaWYg
KFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KSkKICAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5m
b2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVz
dC5ydWxlU2V0LT50YWdSdWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIG1hdGNo
UmVxdWVzdCwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwg
bWF0Y2hSZXF1ZXN0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CkBAIC0yMjcyLDkg
KzIyNzMsMTEgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXIKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmICghU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVz
KG1fZWxlbWVudCwgcnVsZURhdGEuc2VsZWN0b3IoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmICghU2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tSaWdodG1vc3RBdHRy
aWJ1dGVTZWxlY3RvcihtX2VsZW1lbnQsIHJ1bGVEYXRhLnNlbGVjdG9yKCkpKQorCisgICAgICAg
IEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyIGZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyKHJ1bGVEYXRh
LnNlbGVjdG9yKCksIG1fZWxlbWVudCk7CisgICAgICAgIGlmICghZmFzdFBhdGhTZWxlY3Rvck1h
dGNoZXIubWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBtX3NlbGVjdG9yQ2hlY2tlci5mYXN0Q2hlY2so
cnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGZhc3RQYXRo
U2VsZWN0b3JNYXRjaGVyLm1hdGNoZXMoKTsKICAgICB9CiAKICAgICAvLyBTbG93IHBhdGguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTg3ODJmYjRjMjI2ZTA3YmEzZWNj
YzhhZjBiODQwYzU3ZGZiYWM2My4uNDNhZWUwNjdhNzYwZWE5ZDgwMDU5NjE0ZTU0ZTNiOWNjM2E2
OWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmFzdFBhdGhTZWxlY3Rvck1hdGNoZXIu
aCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDUsNyArNDYsNyBAQCB2b2lkIFNlbGVj
dG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxp
c3QpCiAKICAgICBtX3NlbGVjdG9ycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlbGVjdG9yQ291
bnQpOwogICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0
KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3Rvcikp
Ci0gICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0
b3IsIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKSk7
CisgICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0
b3IsIEZhc3RQYXRoU2VsZWN0b3JNYXRjaGVyOjpjYW5Vc2VGYXN0UGF0aChzZWxlY3RvcikpKTsK
IH0KIAogYm9vbCBTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKGNvbnN0IFNlbGVjdG9yQ2hlY2tl
ciYgc2VsZWN0b3JDaGVja2VyLCBFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188737</attachid>
            <date>2013-02-16 15:58:19 -0800</date>
            <delta_ts>2013-02-21 20:55:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106860-20130216155444.patch</filename>
            <type>text/plain</type>
            <size>66870</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QyMDRiYTU3MWNiYzY4
OTNjMmUxMDc1MTlkMWY4YjQ3ZDUyNTcxYS4uNTFhOWQzYjcyYTZhNWYwYjkyZGVhZWZhZTg5OGU0
NDk3YTgwY2I4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTE2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBmdW5jdGlv
bmFsIGNoYW5nZXMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogQWRkZWQgbmV3IGNsYXNzIHRvIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJp
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0Fs
bEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKTogQ2hhbmdlZCB0byB1c2UgU2VsZWN0b3JDaGVj
a2VyRmFzdFBhdGguCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXMpOiBEaXR0by4KKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChTZWxlY3RvckNoZWNrZXIpOiBNb3ZlIGZh
c3QgcGF0aCBjb2RlIGludG8gU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguCisgICAgICAgICogY3Nz
L1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcDogQWRkZWQuCisgICAgICAgICogY3NzL1NlbGVj
dG9yQ2hlY2tlckZhc3RQYXRoLmg6IEFkZGVkLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKTogQ2hh
bmdlZCB0byB1c2UgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguCisgICAgICAgICogZG9tL1NlbGVj
dG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlh
bGl6ZSk6IERpdHRvLgorCiAyMDEzLTAyLTE2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0
Lm9yZz4KIAogICAgICAgICBwZXJjZW50YWdlIHRvcCB2YWx1ZSBvZiBwb3NpdGlvbjpyZWxhdGl2
ZSBlbGVtZW50IG5vdCBjYWxjdWxhdGVkIHVzaW5nIHBhcmVudCdzIG1pbi1oZWlnaHQgdW5sZXNz
IGhlaWdodCBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzEzOGJmOTBkNzY0ZGMzMDI0MjAw
NWEyNTA1MWFhZGI2YTVhYjcyZS4uNWJjNmNiYWM5MGExMzNjNjE1N2ExZDM1OTQyNjA4MDY5NGQ4
ZWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwODcsNiArMTA4Nyw3IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBjc3MvUnVsZVNldC5oCiAgICAgY3NzL1J1bGVTZXQuY3BwCiAgICAg
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKyAgICBjc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGgu
Y3BwCiAgICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAogICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAK
ICAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZDcwYjFkMWU4ZGIyODIwMjgzOWIwNzAyOTNlN2Q2MDE2MTM5MzBiNS4uZDA3NDk3YjI4NDk1
YjZiYjRkYmUxNGIzOTA2NzU1OTY5Y2JkOGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNjg2LDYgKzI2ODYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JGaWx0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCA4ZTRjMjlkZDE3M2UzNGE2ZTE3NDFlMTg4MWRmNDIyOGZhYjMzMWQwLi41NGIyZTc5NGZhNGM3
Mzg0MWQ4ODYwZDk1ZmJhNzdkMjI0ZDE5MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMyNCw2ICszMjQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvUnVsZUZlYXR1cmUuY3BwIFwKICAgICBjc3MvUnVs
ZVNldC5jcHAgXAogICAgIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwIFwKKyAgICBjc3MvU2VsZWN0
b3JDaGVja2VyRmFzdFBhdGguY3BwIFwKICAgICBjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIFwKICAg
ICBjc3MvU2hhZG93VmFsdWUuY3BwIFwKICAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMzAyZWY2NTRmMjM4MDQ3ZWYxYTIzZTI5NTMyZmZlNWNkYzJjYjU0Mi4u
OWEyYTE3ODQ0NGM5MjEzYTFjNDE3ZDA3NzQyMjk3YmE0NTYzYWZjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTU4OCw2ICsxNTg4LDggQEAKICAgICAgICAgICAgICdjc3MvU1ZHQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwJywKICAgICAg
ICAgICAgICdjc3MvU2VsZWN0b3JDaGVja2VyLmgnLAorICAgICAgICAgICAgJ2Nzcy9TZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aC5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9TZWxlY3RvckNoZWNrZXJG
YXN0UGF0aC5oJywKICAgICAgICAgICAgICdjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwJywKICAgICAg
ICAgICAgICdjc3MvU2VsZWN0b3JGaWx0ZXIuaCcsCiAgICAgICAgICAgICAnY3NzL1NoYWRvd1Zh
bHVlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzBmZTFlZjkwYWQ1Yzk0ZDI5MzdjZjVjZjQ0OGIwMjk5Y2QxNGY0Ny4u
NmM4ZDE4YjM5OTViMjQ0MjJkN2YyNjhkMGYwMTIyM2M5YjQyYWRlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5LDggKzIx
OSw4IEBACiAJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJG
MDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJ
MDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcw
MERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNW
R0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwICovOyB9
OwotCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDMxNDYzRjlDRDAw
NjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Rjg1OUQzMTQ2
M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTM0IC8qIFNW
R0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
OEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZCMTdDMDEz
QkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi87IH07CiAJ
CTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZCM0Y4MzEz
QkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDk5LDYgKzEwOTksOCBA
QAogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5
OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUy
RDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyog
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2
RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRl
ZFdvcmtlclRocmVhZC5oICovOyB9OworCQk0MUI4Q0Q0NTE2RDA0NTkxMDAwRThDQzAgLyogU2Vs
ZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFCOENENDMxNkQwNDU5MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tl
ckZhc3RQYXRoLmNwcCAqLzsgfTsKKwkJNDFCOENENDYxNkQwNDU5MTAwMEU4Q0MwIC8qIFNlbGVj
dG9yQ2hlY2tlckZhc3RQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUI4Q0Q0NDE2RDA0NTkxMDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFz
dFBhdGguaCAqLzsgfTsKIAkJNDFCRjcwMEIwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0
Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUJGNzAwOTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLzsg
fTsKIAkJNDFCRjcwMEMwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEEwRkU4
NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkY3MDBGMEZFODZGNjEwMDVFOERFQyAv
KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwpAQCAtMzcwOCw3ICszNzEwLDYgQEAKIAkJ
OTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjhG
RkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgg
Ki87IH07CiAJCTk3QkM2OURBMTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDYx
NTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgKi87IH07CiAJCTk3QkM2OURC
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBE
YXRhYmFzZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDEx
MTZDNzgyNjQwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oICovOyB9OwogCQk5N0JDNjlE
QzE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDgxNTA1RjA3NjAwMUI3
NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLzsgfTsKIAkJOTdCQzY5REQxNTA1RjA3
NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlEOTE1MDVGMDc2MDAxQjc0QUMgLyogQ2hh
bmdlVmVyc2lvbldyYXBwZXIuaCAqLzsgfTsKIAkJOTdCQzZBMjAxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QkM2OURFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5jcHAgKi87IH07CkBAIC0z
NzQyLDI3ICszNzQzLDE4IEBACiAJCTk3QkM2QTQ1MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxSZXN1
bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNkEwMzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMUmVzdWx0U2V0Um93TGlzdC5oICov
OyB9OwogCQk5N0JDNkE0NzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTA1MTUwNUYw
ODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnQuY3BwICovOyB9OwogCQk5N0JDNkE0ODE1MDVGMDgx
MDAxQjc0QUMgLyogU1FMU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkEwNjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50
LmggKi87IH07Ci0JCUZFOEE2NzQ3MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNr
ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
OEE2NzQ1MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcCAqLzsgfTsK
LQkJRkU4QTY3NDgxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOEE2NzQ2MTZDREQx
OUUwMDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmggKi87IH07CiAJCTk3QkM2QTQ5MTUw
NUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMDcxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFN0YXRlbWVudENhbGxiYWNrLmggKi87IH07CiAJCTk3QkM2QTRCMTUwNUYwODEwMDFCNzRB
QyAvKiBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkEwOTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5oICovOyB9OwogCQk5N0JDNkE0RDE1MDVGMDgxMDAxQjc0QUMg
LyogU1FMU3RhdGVtZW50U3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNkEwQjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50U3lu
Yy5jcHAgKi87IH07CiAJCTk3QkM2QTRFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRT
eW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NkEwQzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50U3luYy5oICovOyB9OwogCQk5N0JD
NkE0RjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMEQxNTA1RjA4MTAwMUI3NEFD
IC8qIFNRTFRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKIAkJOTdCQzZBNTAxNTA1RjA4MTAwMUI3NEFD
IC8qIFNRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDNkEwRTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb24uaCAq
LzsgfTsKLQkJRkVFMTgxMTMxNkMzMTlFODAwMDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUUx
ODExMTE2QzMxOUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCAqLzsgfTsK
LQkJRkVFMTgxMTQxNkMzMTlFODAwMDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFMTgxMTIxNkMz
MTlFODAwMDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oICovOyB9OwotCQlGRUFEN0Q4
NzE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFEN0Q4NTE2QzMzOUVF
MDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAgKi87IH07Ci0JCUZFQUQ3
RDg4MTZDMzM5RUUwMEQ0NjcwQiAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFEN0Q4NjE2QzMzOUVF
MDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oICovOyB9OwogCQk5N0JDNkE1
MjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMTAxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCAqLzsgfTsKIAkJOTdCQzZBNTQxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTEyMTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi87IH07CiAJCTk3QkM2QTU1MTUwNUYwODEwMDFCNzRB
QyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMTMxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0
aW9uQ2xpZW50LmggKi87IH07CiAJCTk3QkM2QTU2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2QTE0MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJOTdCQzZBNTcxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2QTE1MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmggKi87IH07CiAJCTk3QkM2QTU4MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2QTE2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2suaCAqLzsgfTsKLQkJRkUzNkZEMTgxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRy
YW5zYWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzZGRDE0MTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlLmgg
Ki87IH07Ci0JCUZFMzZGRDE2MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTM2RkQxMjE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUu
Y3BwICovOyB9OwotCQlGRTM2RkQxNzE2Qzc4MjY1MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25T
dGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMzZGRDEzMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGlu
ZS5oICovOyB9OwogCQk5N0JDNkE1QTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25T
eW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
QkM2QTE4MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmMuY3BwICovOyB9Owog
CQk5N0JDNkE1QjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExOTE1MDVGMDgx
MDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi87IH07CiAJCTk3QkM2QTVEMTUwNUYw
ODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMUIxNTA1RjA4MTAwMUI3NEFD
IC8qIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrLmggKi87IH07CkBAIC02NTM3LDE0ICs2NTI5
LDE0IEBACiAJCUZDNTREMDU4MTZBNzY3NkUwMDU3NUU0RCAvKiBKU0NTU1N1cHBvcnRzUnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM4NDgwMkUx
NjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07CiAJCUZDNjNCREIz
MTY3QUFCQUMwMEY5MzgwRiAvKiBDU1NTdXBwb3J0c1J1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM2M0JEQjAxNjdBQUJBQzAwRjkzODBGIC8q
IENTU1N1cHBvcnRzUnVsZS5jcHAgKi87IH07CiAJCUZDN0U2NkU5MTY4MEVGMUYwMDI4MzcxNiAv
KiBKU0NTU1N1cHBvcnRzUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQzg0ODAyRDE2N0FCNDQ0MDA4Q0QxMDAgLyogSlNDU1NTdXBwb3J0c1J1
bGUuY3BwICovOyB9OwotCQlGQ0Q4ODMyQTE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9y
dHNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
Q0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07Ci0J
CUZDRDg4MzJCMTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQ0Q4ODMyOTE2QTQ5Rjgy
MDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLm1tICovOyB9OwotCQlGQ0Q4ODMyQzE2QTQ5
RkIwMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQ0Q4ODMyODE2QTQ5Rjgy
MDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07Ci0JCUZDRUJCQUFCMTZBNDk2
N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNFQkJBQUExNkE0OTY3QTAwRkEyMEE2
IC8qIERPTUNTU1N1cHBvcnRzUnVsZUludGVybmFsLmggKi87IH07CiAJCUZDOUEwRjc0MTY0MDk0
Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkM5QTBGNzExNjQwOTRDRjAwM0Q2QjhEIC8qIERPTVdpbmRv
d0NTUy5jcHAgKi87IH07CiAJCUZDOUEwRjc1MTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dD
U1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDOUEw
RjcyMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuaCAqLzsgfTsKIAkJRkM5RTBFNEQx
NjQxOUMxRTAwMzkyQkUzIC8qIEpTRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzlFMEU0QjE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01XaW5kb3dDU1MuaCAqLzsgfTsKIAkJRkM5RTBFNTExNjQxOUM3RjAwMzkyQkUzIC8qIEpTRE9N
V2luZG93Q1NTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZDOUUwRTRBMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5jcHAgKi87IH07
CisJCUZDRDg4MzJBMTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDRDg4MzI4MTZBNDlG
ODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUuaCAqLzsgfTsKKwkJRkNEODgzMkIxNkE0
OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVsZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDRDg4MzI5MTZBNDlGODIwMDk2MjIyNyAvKiBE
T01DU1NTdXBwb3J0c1J1bGUubW0gKi87IH07CisJCUZDRDg4MzJDMTZBNDlGQjAwMDk2MjIyNyAv
KiBET01DU1NTdXBwb3J0c1J1bGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDRDg4MzI4MTZBNDlGODIwMDk2MjIyNyAvKiBE
T01DU1NTdXBwb3J0c1J1bGUuaCAqLzsgfTsKKwkJRkNFQkJBQUIxNkE0OTY3QTAwRkEyMEE2IC8q
IERPTUNTU1N1cHBvcnRzUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQ0VCQkFBQTE2QTQ5NjdBMDBGQTIwQTYgLyogRE9NQ1NTU3Vw
cG9ydHNSdWxlSW50ZXJuYWwuaCAqLzsgfTsKIAkJRkQwMEQ3QTQxNEEzRjYxOTAwNzM0MDExIC8q
IFNpbmNSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICov
OyB9OwogCQlGRDAwRDdBNTE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwMEQ3QTMxNEEzRjYx
OTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCAqLzsgfTsKIAkJRkQwNkRGQTUxMzRBNERFRjAw
NkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA2REZBMzEzNEE0REVGMDA2RjVEN0Qg
LyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLzsgfTsKQEAgLTY3ODUsNiArNjc3
NywxMCBAQAogCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3lu
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2
Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgKi87IH07CiAJ
CUZFMTZDRkQ2MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZEMjE2OUQxREVD
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBE
YXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTM2
RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDExMTZDNzgyNjQwMEY4ODdD
MSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oICovOyB9OworCQlGRTM2RkQxNjE2Qzc4MjY1MDBGODg3
QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTIxNkM3ODI2NDAwRjg4N0MxIC8qIFNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLzsgfTsKKwkJRkUzNkZEMTcxNkM3ODI2NTAw
Rjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEgLyog
U1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLzsgfTsKKwkJRkUzNkZEMTgxNkM3ODI2NTAw
Rjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDE0MTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFu
c2FjdGlvblN0YXRlLmggKi87IH07CiAJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRh
YmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi87
IH07CiAJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE3MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIgLyogRGF0
YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5k
Q29udGV4dC5jcHAgKi87IH07CkBAIC02ODAwLDYgKzY3OTYsOCBAQAogCQlGRTgwREE2NjBFOUM0
NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9z
aXRpb24uaCAqLzsgfTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJ
RkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OworCQlGRThBNjc0NzE2Q0REMTlFMDA5MzBC
RjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRThBNjc0NTE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVt
ZW50QmFja2VuZC5jcHAgKi87IH07CisJCUZFOEE2NzQ4MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxT
dGF0ZW1lbnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRThBNjc0NjE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5o
ICovOyB9OwogCQlGRUFEN0Q4NzE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUFEN0Q4NTE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5j
cHAgKi87IH07CiAJCUZFQUQ3RDg4MTZDMzM5RUUwMEQ0NjcwQiAvKiBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmRTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUFEN0Q4NjE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5o
ICovOyB9OwogCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3
OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTExLDggKzc1MDksOCBAQAogCQkwOEYyRjAw
NzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMjE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEY4
NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUZvckNvbnRhaW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYg
LyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ3
Myw2ICs4NDcxLDggQEAKIAkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRlZExpbmtTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZE
MDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg7IHBhdGgg
PSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUI4Q0Q0MzE2RDA0NTkxMDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0b3JDaGVj
a2VyRmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUI4Q0Q0NDE2
RDA0NTkxMDAwRThDQzAgLyogU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMDkwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNz
YWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGNzAw
QTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBwYXRoID0gZGVmYXVsdC9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE3Myw3
ICsxMTE3Myw2IEBACiAJCTk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENo
YXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmQuY3BwOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2Vu
ZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzNkZEMTExNkM3ODI2NDAwRjg4N0MxIC8qIENoYW5n
ZVZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZl
cnNpb25EYXRhLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25EYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRB
QyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZlcnNpb25XcmFwcGVyLmg7
IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OURFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZS5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjE0LDggKzExMjEzLDYgQEAKIAkJOTdCQzZBMDQxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
QzZBMDUxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxTdGF0ZW1lbnQuY3BwOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0JDNkEwNjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRlbWVudC5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU4
QTY3NDUxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMU3RhdGVtZW50QmFja2VuZC5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGRThBNjc0NjE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3Rh
dGVtZW50QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxTdGF0
ZW1lbnRCYWNrZW5kLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMDcxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFN0YXRlbWVudENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNRTFN0YXRlbWVudENhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QkM2QTA4MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gU1FMU3RhdGVtZW50Q2FsbGJhY2suaWRsOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3QkM2QTA5MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMjUs
MTAgKzExMjIyLDYgQEAKIAkJOTdCQzZBMEQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0
aW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkEwRTE1MDVGMDgxMDAxQjc0QUMgLyog
U1FMVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJh
bnNhY3Rpb24uaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMEYxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
bi5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVFMTgxMTExNkMzMTlFODAwMDg0ODQ5IC8qIFNR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGRUUxODExMjE2QzMxOUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBRDdEODUxNkMzMzlFRTAwRDQ2NzBCIC8qIFNRTFRy
YW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRUFEN0Q4NjE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
bkJhY2tlbmRTeW5jLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZFN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMTAxNTA1
RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3QkM2QTExMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
LmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTEyMTUwNUYwODEwMDFCNzRB
QyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMjM3LDkgKzExMjMwLDYgQEAKIAkJOTdCQzZBMTUxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3QkM2QTE2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkExNzE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxNDE2Qzc4MjY0MDBGODg3QzEgLyogU1FM
VHJhbnNhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxU
cmFuc2FjdGlvblN0YXRlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzNkZEMTIxNkM3ODI2
NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEg
LyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTdCQzZBMTgxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3lu
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
blN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkExOTE1MDVGMDgxMDAxQjc0
QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNRTFRyYW5zYWN0aW9uU3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvblN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMUEx
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MjU1LDE0ICsxNDI0NSwxNCBAQAogCQlGQzYzQkRCMjE2N0FBQkFDMDBGOTM4MEYgLyogQ1NT
U3VwcG9ydHNSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NTdXBwb3J0c1J1bGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQzg0ODAyRDE2N0FCNDQ0MDA4Q0Qx
MDAgLyogSlNDU1NTdXBwb3J0c1J1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDU1NTdXBwb3J0c1J1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQzg0ODAyRTE2N0FCNDQ0MDA4Q0QxMDAgLyogSlNDU1NTdXBwb3J0c1J1bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDU1NTdXBwb3J0c1J1bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkNEODgzMjgxNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNT
U1N1cHBvcnRzUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NT
dXBwb3J0c1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkNEODgzMjkxNkE0
OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNTU1N1cHBvcnRzUnVsZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRkNFQkJBQUExNkE0OTY3QTAwRkEyMEE2IC8qIERPTUNTU1N1cHBv
cnRzUnVsZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNT
U1N1cHBvcnRzUnVsZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZD
OUEwRjcxMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93Q1NTLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkM5QTBGNzIxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTVdpbmRvd0NTUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dDU1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM5QTBGNzMxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTVdp
bmRvd0NTUy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NV2luZG93Q1NTLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM5RTBFNEExNjQxOUMxRTAwMzkyQkUzIC8qIEpT
RE9NV2luZG93Q1NTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NV2luZG93Q1NTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM5RTBFNEIx
NjQxOUMxRTAwMzkyQkUzIC8qIEpTRE9NV2luZG93Q1NTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NV2luZG93Q1NTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZDRDg4MzI4MTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTU3VwcG9ydHNSdWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDRDg4MzI5MTZBNDlGODIwMDk2MjIyNyAvKiBET01D
U1NTdXBwb3J0c1J1bGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01DU1NTdXBwb3J0c1J1bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZD
RUJCQUFBMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1bGVJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NTdXBwb3J0c1J1bGVJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2
NUUgLyogQ1NTR3JhbW1hci55LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0g
Q1NTR3JhbW1hci55LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQ0VCQ0Q3MjE2
MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluY2x1ZGVzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluY2x1ZGVzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5jUmVzYW1wbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTMzLDYgKzE0NTIzLDEwIEBACiAJ
CUZFMTZDRkQxMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZFN5bmMuY3Bw
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERh
dGFiYXNlQmFja2VuZFN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0
YWJhc2VCYWNrZW5kU3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzM3MUEwMTY3QzEx
RDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2hhbmdlVmVyc2lvbkRhdGEuaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkUzNkZEMTIxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5z
YWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hp
bmUuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNkZEMTQxNkM3ODI2NDAwRjg4
N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb25TdGF0ZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2
RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuaDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNl
QmFja2VuZENvbnRleHQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTQ5LDYg
KzE0NTQzLDggQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZF
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFOEE2NzQ1MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFN0YXRlbWVudEJhY2tl
bmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4QTY3NDYxNkNERDE5RTAwOTMwQkY4
IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU1FMU3RhdGVtZW50QmFja2VuZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnRCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQUQ3RDg1
MTZDMzM5RUUwMEQ0NjcwQiAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMu
Y3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5j
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBRDdEODYxNkMzMzlFRTAwRDQ2
NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5oOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjIwNzQsNiArMjIwNzAsOCBAQAogCQkJCUE3OUJBREEwMTYxRTdGM0Yw
MEMyRTY1MiAvKiBSdWxlU2V0LmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8q
IFNlbGVjdG9yQ2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8q
IFNlbGVjdG9yQ2hlY2tlci5oICovLAorCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBT
ZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgKi8sCisJCQkJNDFCOENENDQxNkQwNDU5MTAwMEU4
Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmggKi8sCiAJCQkJNDE1MDcxNTUxNjg1MDY3
MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCAqLywKIAkJCQk0MTUwNzE1NjE2ODUwNjcz
MDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogU2hhZG93VmFsdWUuY3BwICovLApAQCAtMjY1NjgsNiArMjY1NjYsNyBAQAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxQjhDRDQ2MTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTc1Nyw2ICsyOTc1Niw3IEBACiAJ
CQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFCOENENDUxNkQwNDU5MTAwMEU4Q0MwIC8qIFNl
bGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NB
bGxJbk9uZS5jcHAKaW5kZXggMDlhNTQzYjNlZTY0ZjgyODE0YTM3NWM4ZTVlOWYxMDdlZTE5OGY2
ZC4uOTEzZWZkYzY5OWMxMzAzZGY3ZDczZDkzOWIwOTlmZDE4OGIyMGI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC03NCw2ICs3NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuY3BwIgogI2luY2x1ZGUg
IlJ1bGVTZXQuY3BwIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCIKICNp
bmNsdWRlICJTZWxlY3RvckZpbHRlci5jcHAiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmNwcCIK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRl
eCBmODZiMDE4YjNjYjMxNTgwOGI3NDhiM2RkYWJmMGUyYTQ3NjU4MjE1Li43ODAzYTk3NGExOTBk
ZTVjM2E5MmYwYzVlNTg1MDYzNTU4MjljNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCisjaW5jbHVk
ZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKQEAg
LTEzNSw3ICsxMzYsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNp
Z25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbiwgQQogICAgIDogbV9ydWxlKHJ1
bGUpCiAgICAgLCBtX3NlbGVjdG9ySW5kZXgoc2VsZWN0b3JJbmRleCkKICAgICAsIG1fcG9zaXRp
b24ocG9zaXRpb24pCi0gICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcigoYWRkUnVsZUZs
YWdzICYgUnVsZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yKSAmJiBTZWxlY3RvckNoZWNrZXI6Omlz
RmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKCkpKQorICAgICwgbV9oYXNGYXN0Q2hlY2th
YmxlU2VsZWN0b3IoKGFkZFJ1bGVGbGFncyAmIFJ1bGVDYW5Vc2VGYXN0Q2hlY2tTZWxlY3Rvcikg
JiYgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OmNhblVzZShzZWxlY3RvcigpKSkKICAgICAsIG1f
c3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1faGFzTXVsdGlw
YXJ0U2VsZWN0b3IoISFzZWxlY3RvcigpLT50YWdIaXN0b3J5KCkpCiAgICAgLCBtX2hhc1JpZ2h0
bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGlzU2VsZWN0b3JNYXRjaGlu
Z0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IGI5N2JkZTBjZWUxYjc5Yzg5ZDQ2MGM0ODkxNGUyZGNlNmNhYjkx
ZTYuLmYzZTYxZTgzNGI5ZTQ0YmQ5YWQwNjMxZDIzZWIxMjFkOTUwMDc3ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdp
ZXMuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCkBAIC03MywxNzMgKzc0LDE2IEBAIFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVudCwgTW9kZSBt
b2RlKQogYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXMoY29uc3QgQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKSBj
b25zdAogewogICAgIGlmIChpc0Zhc3RDaGVja2FibGVTZWxlY3RvciAmJiAhZWxlbWVudC0+aXNT
VkdFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihz
ZWxlY3RvciwgZWxlbWVudCwgVmlzaXRlZE1hdGNoRGlzYWJsZWQpKQorICAgICAgICBTZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aCBzZWxlY3RvckNoZWNrZXJGYXN0UGF0aChzZWxlY3RvciwgZWxlbWVu
dCk7CisgICAgICAgIGlmICghc2VsZWN0b3JDaGVja2VyRmFzdFBhdGgubWF0Y2hlc1JpZ2h0bW9z
dFNlbGVjdG9yKFZpc2l0ZWRNYXRjaERpc2FibGVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIGZhc3RDaGVjayhzZWxlY3RvciwgZWxlbWVudCk7CisgICAgICAg
IHJldHVybiBzZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5tYXRjaGVzKCk7CiAgICAgfQogCiAgICAg
UHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIHJldHVybiBtYXRj
aChTZWxlY3RvckNoZWNraW5nQ29udGV4dChzZWxlY3RvciwgZWxlbWVudCwgU2VsZWN0b3JDaGVj
a2VyOjpWaXNpdGVkTWF0Y2hEaXNhYmxlZCksIGlnbm9yZUR5bmFtaWNQc2V1ZG8sIERPTVNpYmxp
bmdUcmF2ZXJzYWxTdHJhdGVneSgpKSA9PSBTZWxlY3Rvck1hdGNoZXM7CiB9CiAKLW5hbWVzcGFj
ZSB7Ci0KLXRlbXBsYXRlIDxib29sIGNoZWNrVmFsdWUoY29uc3QgRWxlbWVudCosIGNvbnN0IENT
U1NlbGVjdG9yKik+Ci1pbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwgY29uc3QgQ1NT
U2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiB0b3BDaGls
ZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCi17Ci0gICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGNoZWNrVmFsdWUo
ZWxlbWVudCwgc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9u
KCkgPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpCi0gICAgICAgICAgICAgICAgdG9wQ2hpbGRP
clN1YnNlbGVjdG9yID0gMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGlsZE9yU3Vic2Vs
ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0g
Q1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0g
c2VsZWN0b3I7Ci0gICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVt
ZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNlbGVjdG9y
ID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICh0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKLSAgICAgICAgICAg
IC8vIENoaWxkIG9yIHN1YnNlbGVjdG9yIGNoZWNrIGZhaWxlZC4KLSAgICAgICAgICAgIC8vIElm
IHRoZSBtYXRjaCBlbGVtZW50IGlzIG51bGwsIHRvcENoaWxkT3JTdWJzZWxlY3RvciB3YXMgYWxz
byB0aGUgdmVyeSB0b3Btb3N0IHNlbGVjdG9yIGFuZCBoYWQgdG8gbWF0Y2gKLSAgICAgICAgICAg
IC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdlIHdlcmUgY2hlY2tpbmcuCi0gICAgICAgICAgICBp
ZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgbWF0Y2hlcyBk
b3duIHRoZSBhbmNlc3RvciBjaGFpbi4KLSAgICAgICAgICAgIC8vIFJld2luZCB0byB0aGUgdG9w
bW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0Y2hlZCwgY29u
dGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgotICAgICAgICAgICAgc2VsZWN0b3IgPSB0b3BDaGls
ZE9yU3Vic2VsZWN0b3I7Ci0gICAgICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRPclN1YnNlbGVj
dG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgICB0b3BDaGlsZE9y
U3Vic2VsZWN0b3IgPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBjaGVja0NsYXNzVmFsdWUo
Y29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewot
ICAgIHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygpICYmIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxl
ZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKHNlbGVjdG9yLT52YWx1
ZSgpLmltcGwoKSk7Ci19Ci0KLWlubGluZSBib29sIGNoZWNrSURWYWx1ZShjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgcmV0dXJuIGVs
ZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkg
PT0gc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpOwotfQotCi1pbmxpbmUgYm9vbCBjaGVja0V4YWN0
QXR0cmlidXRlVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yKQotewotICAgIHJldHVybiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRy
aWJ1dGUoZWxlbWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFsdWUoKS5p
bXBsKCkpOwotfQotCi1pbmxpbmUgYm9vbCBjaGVja1RhZ1ZhbHVlKGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICByZXR1cm4gU2VsZWN0
b3JDaGVja2VyOjp0YWdNYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yLT50YWdRTmFtZSgpKTsKLX0K
LQotfQotCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTZWxl
Y3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKLXsKLSAgICBB
U1NFUlQoU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3Rvcikp
OwotCi0gICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewotICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlRhZzoKLSAgICAgICAgcmV0dXJuIGNoZWNrVGFnVmFsdWUoZWxlbWVudCwgc2VsZWN0b3Ip
OwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgotICAgICAgICByZXR1cm4gY2hlY2tDbGFz
c1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKTsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKLSAg
ICAgICAgcmV0dXJuIGNoZWNrSURWYWx1ZShlbGVtZW50LCBzZWxlY3Rvcik7Ci0gICAgY2FzZSBD
U1NTZWxlY3Rvcjo6RXhhY3Q6Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2V0OgotICAgICAgICBy
ZXR1cm4gY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKTsKLSAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczoKLSAgICAgICAgcmV0dXJuIGNvbW1vblBzZXVk
b0NsYXNzU2VsZWN0b3JNYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yLCB2aXNpdGVkTWF0Y2hUeXBl
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKLXsKLSAg
ICBBU1NFUlQoZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQsIFZp
c2l0ZWRNYXRjaEVuYWJsZWQpKTsKLQotICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BDaGlsZE9y
U3Vic2VsZWN0b3IgPSAwOwotICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJzZWxlY3Rv
ck1hdGNoRWxlbWVudCA9IDA7Ci0gICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1Nl
bGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6U3Vi
U2VsZWN0b3IpCi0gICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9yOwotCi0g
ICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikK
LSAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLQotICAgIHNlbGVj
dG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLQotICAgIC8vIFdlIGtub3cgdGhpcyBjb21w
b3VuZCBzZWxlY3RvciBoYXMgZGVzY2VuZGFudCwgY2hpbGQgYW5kIHN1YnNlbGVjdG9yIGNvbWJp
bmF0b3JzIG9ubHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCi0gICAgd2hpbGUgKHNl
bGVjdG9yKSB7Ci0gICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPm1fbWF0Y2gpIHsKLSAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6Q2xhc3M6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1Npbmds
ZVNlbGVjdG9yPGNoZWNrQ2xhc3NWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JT
dWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNlbGVjdG9y
PGNoZWNrSURWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3Rvciwg
dG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
VGFnOgotICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja1RhZ1Zh
bHVlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9y
U3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6Ci0gICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tT
aW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWU+KHNlbGVjdG9yLCBlbGVtZW50
LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVu
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlz
RmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbikKLXsK
LSAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQgfHwgcmVsYXRp
b24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHJlbGF0aW9uID09IENTU1NlbGVjdG9yOjpTdWJT
ZWxlY3RvcjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZU1hdGNoKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OlNldCkgewotICAgICAgICAvLyBTdHlsZSBhdHRyaWJ1dGUgaXMgZ2Vu
ZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3QgcGF0aCBkb2Vzbid0IHRyaWdnZXIgaXQuCi0gICAg
ICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSByYXRoZXIgdGhhbiBtYWtpbmcgdGhlIGZhc3QgcGF0
aCBtb3JlIGJyYW5jaHkuCi0gICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0cmlidXRlKCkgIT0g
c3R5bGVBdHRyOwotICAgIH0KLSAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6OkV4YWN0KQotICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpICE9IHN0eWxl
QXR0ciAmJiBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShzZWxlY3Rvci0+
YXR0cmlidXRlKCkpOwotICAgIHJldHVybiBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rv
cjo6VGFnIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBzZWxlY3Rv
ci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2Vs
ZWN0b3IpCi17Ci0gICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSZWxhdGlvbihzZWxlY3Rvci0+cmVs
YXRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNGYXN0Q2hlY2th
YmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFz
c1NlbGVjdG9yKHNlbGVjdG9yKTsKLX0KLQotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENo
ZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBpZiAo
IWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOyBz
ZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAgICAgIGlm
ICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZU1hdGNoKHNl
bGVjdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3Jz
CiAvLyBJdCBjYW4gcmV0dXJuIDQgZGlmZmVyZW50IHZhbHVlczoKIC8vICogU2VsZWN0b3JNYXRj
aGVzICAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQgZQpAQCAtMTAy
MywyMyArODY3LDYgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFyUHNldWRv
Q2xhc3MoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBDU1NTZWwKICAgICB9CiB9CiAKLWJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhjb25zdCBF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFZpc2l0ZWRNYXRj
aFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKLXsKLSAgICBBU1NFUlQoaXNDb21tb25Qc2V1ZG9DbGFz
c1NlbGVjdG9yKHNlbGVjdG9yKSk7Ci0gICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvVHlwZSgp
KSB7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKLSAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICByZXR1cm4gZWxlbWVudC0+aXNMaW5rKCk7Ci0g
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZDoKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlzaXRlZE1hdGNoRW5hYmxlZDsK
LSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKLSAgICAgICAgcmV0dXJuIG1hdGNo
ZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdW5zaWduZWQg
U2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3RvcikKIHsKICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gTWF0Y2hBbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggNzJlZTQ3NThiMTNiOTgwZTEwNmY5
ZmNmMjQ3NTI0ZGVkMjY4YmU4ZS4uMDM1NWNkZTVkYTQ3MWYzZDgwZWYyMzA1ZTAxOWE2YzBkNzUy
MWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtODMsOSArODMsNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5
PgogICAgIGJvb2wgY2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBjb25z
dCBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kmKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGlz
RmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7Ci0gICAgc3RhdGljIGJv
b2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwotCiAgICAg
Ym9vbCBzdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CiAK
ICAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KQEAgLTkzLDcgKzkwLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRhZ01hdGNoZXMoY29uc3QgRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNz
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9j
dXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgZmFzdENoZWNr
UmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVj
dG9yKik7CiAgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmdJbXBsKiB2YWx1ZSk7CiAKICAgICBlbnVtIExpbmtNYXRjaE1hc2sgeyBNYXRjaExp
bmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBNYXRjaEFsbCA9IE1hdGNoTGluayB8IE1hdGNoVmlz
aXRlZCB9OwpAQCAtMTA0LDkgKzEwMCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9vbCBp
c0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAKLSAgICBzdGF0aWMgYm9vbCBmYXN0Q2hl
Y2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqLCBW
aXNpdGVkTWF0Y2hUeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21tb25Qc2V1ZG9DbGFzc1NlbGVj
dG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBWaXNpdGVkTWF0
Y2hUeXBlKTsKLQogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAgIGJvb2wgbV9kb2N1bWVu
dElzSFRNTDsKICAgICBNb2RlIG1fbW9kZTsKQEAgLTE0NywxNCArMTQwLDYgQEAgaW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAgIGlmIChz
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QgfHwgc2VsZWN0b3ItPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkKLSAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RBdHRyaWJ1
dGUoZWxlbWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFsdWUoKS5pbXBs
KCkpOwotICAgIEFTU0VSVCghc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmE0NDdiNGQyM2UwZDI0ZjA0
MjU0NDRkNzQ0NTI3OWUzZTJlNTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5p
Y2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHly
aWdodCAoYykgMjAxMSwgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tl
ckZhc3RQYXRoLmgiCisKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNvbnN0IEVs
ZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopPgoraW5saW5lIGJvb2wgZmFzdENoZWNrU2luZ2xl
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudComIGVs
ZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCBjb25zdCBF
bGVtZW50KiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQoreworICAgIGZvciAo
OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAg
IGlmIChjaGVja1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKSkgeworICAgICAgICAgICAgaWYgKHNl
bGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KQorICAgICAgICAg
ICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IDA7CisgICAgICAgICAgICBlbHNlIGlmICgh
dG9wQ2hpbGRPclN1YnNlbGVjdG9yKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdG9y
LT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24o
KSA9PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIHRvcENoaWxk
T3JTdWJzZWxlY3RvciA9IHNlbGVjdG9yOworICAgICAgICAgICAgICAgIHRvcENoaWxkT3JTdWJz
ZWxlY3Rvck1hdGNoRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAg
ICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodG9wQ2hpbGRPclN1YnNlbGVjdG9y
KSB7CisgICAgICAgICAgICAvLyBDaGlsZCBvciBzdWJzZWxlY3RvciBjaGVjayBmYWlsZWQuCisg
ICAgICAgICAgICAvLyBJZiB0aGUgbWF0Y2ggZWxlbWVudCBpcyBudWxsLCB0b3BDaGlsZE9yU3Vi
c2VsZWN0b3Igd2FzIGFsc28gdGhlIHZlcnkgdG9wbW9zdCBzZWxlY3RvciBhbmQgaGFkIHRvIG1h
dGNoCisgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZWxlbWVudCB3ZSB3ZXJlIGNoZWNraW5n
LgorICAgICAgICAgICAgaWYgKCF0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLy8gVGhlcmUgbWF5IGJl
IG90aGVyIG1hdGNoZXMgZG93biB0aGUgYW5jZXN0b3IgY2hhaW4uCisgICAgICAgICAgICAvLyBS
ZXdpbmQgdG8gdGhlIHRvcG1vc3QgY2hpbGQgb3Igc3Vic2VsZWN0b3IgYW5kIHRoZSBlbGVtZW50
IGl0IG1hdGNoZWQsIGNvbnRpbnVlIGNoZWNraW5nIGFuY2VzdG9ycy4KKyAgICAgICAgICAgIHNl
bGVjdG9yID0gdG9wQ2hpbGRPclN1YnNlbGVjdG9yOworICAgICAgICAgICAgZWxlbWVudCA9IHRv
cENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudC0+cGFyZW50RWxlbWVudCgpOworICAgICAg
ICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIGJvb2wg
Y2hlY2tDbGFzc1ZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBzdGF0aWNf
Y2FzdDxjb25zdCBTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cyhzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworfQorCitpbmxpbmUgYm9vbCBjaGVja0lEVmFs
dWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQor
eworICAgIHJldHVybiBlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCkuaW1wbCgpID09IHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKTsKK30KKworaW5saW5l
IGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gU2VsZWN0b3JDaGVja2Vy
OjpjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSwgc2Vs
ZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKK30KKworaW5saW5lIGJvb2wgY2hlY2tUYWdWYWx1ZShj
b25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCit7Cisg
ICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvci0+
dGFnUU5hbWUoKSk7Cit9CisKK30KKworU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OlNlbGVjdG9y
Q2hlY2tlckZhc3RQYXRoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVu
dCogZWxlbWVudCkKKyAgICA6IG1fc2VsZWN0b3Ioc2VsZWN0b3IpCisgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKK3sKK30KKworYm9vbCBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6bWF0Y2hlc1Jp
Z2h0bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVk
TWF0Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChTZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6
Y2FuVXNlKG1fc2VsZWN0b3IpKTsKKworICAgIHN3aXRjaCAobV9zZWxlY3Rvci0+bV9tYXRjaCkg
eworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKKyAgICAgICAgcmV0dXJuIGNoZWNrVGFnVmFs
dWUobV9lbGVtZW50LCBtX3NlbGVjdG9yKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpDbGFzczoK
KyAgICAgICAgcmV0dXJuIGNoZWNrQ2xhc3NWYWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0b3IpOwor
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OklkOgorICAgICAgICByZXR1cm4gY2hlY2tJRFZhbHVlKG1f
ZWxlbWVudCwgbV9zZWxlY3Rvcik7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CisgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6U2V0OgorICAgICAgICByZXR1cm4gY2hlY2tFeGFjdEF0dHJpYnV0
ZVZhbHVlKG1fZWxlbWVudCwgbV9zZWxlY3Rvcik7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3M6CisgICAgICAgIHJldHVybiBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hl
cyh2aXNpdGVkTWF0Y2hUeXBlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFNlbGVjdG9yQ2hl
Y2tlckZhc3RQYXRoOjptYXRjaGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobWF0Y2hlc1JpZ2h0
bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCkpOworICAg
IGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3I7CisgICAgY29uc3QgRWxl
bWVudCogZWxlbWVudCA9IG1fZWxlbWVudDsKKworICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BD
aGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJz
ZWxlY3Rvck1hdGNoRWxlbWVudCA9IDA7CisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09
IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IpCisgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9y
OworCisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKworICAg
IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKworICAgIC8vIFdlIGtub3cgdGhp
cyBjb21wb3VuZCBzZWxlY3RvciBoYXMgZGVzY2VuZGFudCwgY2hpbGQgYW5kIHN1YnNlbGVjdG9y
IGNvbWJpbmF0b3JzIG9ubHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCisgICAgd2hp
bGUgKHNlbGVjdG9yKSB7CisgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPm1fbWF0Y2gpIHsKKyAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2xhc3M6CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVj
a1NpbmdsZVNlbGVjdG9yPGNoZWNrQ2xhc3NWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENo
aWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SWQ6CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNl
bGVjdG9yPGNoZWNrSURWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxl
Y3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6VGFnOgorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVj
a1RhZ1ZhbHVlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BD
aGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6
CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgorICAgICAgICAgICAgaWYgKCFmYXN0
Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWU+KHNlbGVjdG9yLCBl
bGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNo
RWxlbWVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlv
bikKK3sKKyAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQgfHwg
cmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHJlbGF0aW9uID09IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3RvcjsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZU1h
dGNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBpZiAoc2VsZWN0b3ItPm1f
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkgeworICAgICAgICAvLyBTdHlsZSBhdHRyaWJ1dGUg
aXMgZ2VuZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3QgcGF0aCBkb2Vzbid0IHRyaWdnZXIgaXQu
CisgICAgICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSByYXRoZXIgdGhhbiBtYWtpbmcgdGhlIGZh
c3QgcGF0aCBtb3JlIGJyYW5jaHkuCisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0cmlidXRl
KCkgIT0gc3R5bGVBdHRyOworICAgIH0KKyAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OkV4YWN0KQorICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpICE9
IHN0eWxlQXR0ciAmJiBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShzZWxl
Y3Rvci0+YXR0cmlidXRlKCkpOworICAgIHJldHVybiBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6VGFnIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBz
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IpCit7CisgICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSZWxhdGlvbihzZWxlY3Rv
ci0+cmVsYXRpb24oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNGYXN0
Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1
ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKTsKK30KKworYm9vbCBTZWxlY3RvckNoZWNrZXJGYXN0
UGF0aDo6Y2FuVXNlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBpZiAoIWlz
RmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOyBzZWxl
Y3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmICgh
aXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZU1hdGNoKHNlbGVj
dG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OmNvbW1vblBzZXVkb0NsYXNzU2Vs
ZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0
Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNl
dWRvQ2xhc3NTZWxlY3RvcihtX3NlbGVjdG9yKSk7CisgICAgc3dpdGNoIChtX3NlbGVjdG9yLT5w
c2V1ZG9UeXBlKCkpIHsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgorICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxpbms6CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQt
PmlzTGluaygpOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CisgICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0gU2VsZWN0
b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hFbmFibGVkOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZvY3VzOgorICAgICAgICByZXR1cm4gU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQ
c2V1ZG9DbGFzcyhtX2VsZW1lbnQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjOGUzY2Mz
ZDk4NDkzY2FjZTg5MThiODJiZjQ1YjcxMDk2ZjNjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJl
d29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3
ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFw
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQor
ICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoX2gKKyNk
ZWZpbmUgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGhfaAorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aCB7CitwdWJsaWM6CisgICAgU2VsZWN0b3JD
aGVja2VyRmFzdFBhdGgoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50Kik7CisKKyAg
ICBib29sIG1hdGNoZXMoKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXNSaWdodG1vc3RTZWxlY3Rv
cihTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OworICAgIGJvb2wgbWF0
Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgYm9v
bCBjYW5Vc2UoY29uc3QgQ1NTU2VsZWN0b3IqKTsKKworcHJpdmF0ZToKKyAgICBib29sIGNvbW1v
blBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNo
VHlwZSkgY29uc3Q7CisKKyAgICBjb25zdCBDU1NTZWxlY3RvciogbV9zZWxlY3RvcjsKKyAgICBj
b25zdCBFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXJGYXN0UGF0aDo6bWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QKK3sK
KyAgICBpZiAobV9zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QgfHwgbV9z
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KQorICAgICAgICByZXR1cm4gU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKG1fZWxlbWVudCwgbV9zZWxlY3Rvci0+
YXR0cmlidXRlKCksIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKKyAgICBBU1NFUlQoIW1f
c2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZWRmNTMz
Y2RjOGI3MDU2YzBmZDA3YThjNWVkYzVjYzg1ZjkwMGI3Yi4uOTM3MzY0YzUwOTEwZWUyN2M1NTFi
Mjg2ZmJhZWYzZDFkODViNjQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgpAQCAtMjA5OSwxMCArMjEwMCwxMSBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpydWxl
TWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5lcgogICAgICAg
ICB9CiAgICAgICAgIGlmIChydWxlRGF0YS5zZWxlY3RvcigpLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpUYWcgJiYgIVNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhzdGF0ZS5lbGVtZW50KCks
IHJ1bGVEYXRhLnNlbGVjdG9yKCktPnRhZ1FOYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoIVNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0
cmlidXRlU2VsZWN0b3Ioc3RhdGUuZWxlbWVudCgpLCBydWxlRGF0YS5zZWxlY3RvcigpKSkKKyAg
ICAgICAgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGggc2VsZWN0b3JDaGVja2VyRmFzdFBhdGgocnVs
ZURhdGEuc2VsZWN0b3IoKSwgc3RhdGUuZWxlbWVudCgpKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aC5tYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gU2VsZWN0b3JDaGVja2Vy
OjpmYXN0Q2hlY2socnVsZURhdGEuc2VsZWN0b3IoKSwgc3RhdGUuZWxlbWVudCgpKTsKKyAgICAg
ICAgcmV0dXJuIHNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLm1hdGNoZXMoKTsKICAgICB9CiAKICAg
ICAvLyBTbG93IHBhdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMzU2
YmYzMWUzOGU1NTgxNTgzZDEyMmNhMjZjYjNlMjViMzlkNjFlOS4uMGE4ODYxY2E1Y2QyYmVhMmE1
NjQzOGFjNjFhOTFjZGViN2M0ZjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNT
U1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JDaGVja2VyRmFzdFBhdGguaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1
ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDUsNyAr
NDYsNyBAQCB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QpCiAKICAgICBtX3NlbGVjdG9ycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNlbGVjdG9yQ291bnQpOwogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCi0gICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFw
cGVuZChTZWxlY3RvckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2th
YmxlU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CisgICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFw
cGVuZChTZWxlY3RvckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoOjpjYW5V
c2Uoc2VsZWN0b3IpKSk7CiB9CiAKIGJvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhjb25z
dCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189671</attachid>
            <date>2013-02-21 20:55:13 -0800</date>
            <delta_ts>2013-02-21 21:17:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106860-20130221205133.patch</filename>
            <type>text/plain</type>
            <size>35753</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVhZTVjYzVlODk4Njhj
N2Q4ZTJlNDI3MmZhMWJjMzg0MTdmYWMxMS4uMmEzZDg0YTY1NDhhYjE5YjAwOThhNmI1YzdkNDZj
NjlhNjNjMmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTE2ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU2Vs
ZWN0b3JDaGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBObyBmdW5jdGlv
bmFsIGNoYW5nZXMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogQWRkZWQgbmV3IGNsYXNzIHRvIGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJp
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0Fs
bEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZURhdGE6OlJ1bGVEYXRhKTogQ2hhbmdlZCB0byB1c2UgU2VsZWN0b3JDaGVj
a2VyRmFzdFBhdGguCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXMpOiBEaXR0by4KKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChTZWxlY3RvckNoZWNrZXIpOiBNb3ZlIGZh
c3QgcGF0aCBjb2RlIGludG8gU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguCisgICAgICAgICogY3Nz
L1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcDogQWRkZWQuCisgICAgICAgICogY3NzL1NlbGVj
dG9yQ2hlY2tlckZhc3RQYXRoLmg6IEFkZGVkLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJ1bGVNYXRjaGVzKTogQ2hh
bmdlZCB0byB1c2UgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguCisgICAgICAgICogZG9tL1NlbGVj
dG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlh
bGl6ZSk6IERpdHRvLgorCiAyMDEzLTAyLTIxICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW52YWxpZGF0ZSBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBm
b3IgdGhlIGJhY2tncm91bmQgaW5wdXQgc3RyZWFtIGFuZCBwcmVsb2FkIHNjYW5uZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNDUwMTdiNDVmMDdhZDYxZmVjNDkxZjg3YmZlZTAzNDQ0NTQwY2Yy
NS4uMmMwZmVkYjdhNzM2ODk2MzQ5ZWM3MDJkZjY2ZDYxZmRkMThhN2M2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTEwODcsNiArMTA4Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBj
c3MvUnVsZVNldC5oCiAgICAgY3NzL1J1bGVTZXQuY3BwCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKKyAgICBjc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCiAgICAgY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcAogICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAKICAgICBjc3MvU3R5bGVCdWls
ZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZmNhYzIzODgxMWJlMDYy
MDE3NDBiYWFhMTAxZDMyZGRjOWEwOTlhMC4uZWM0ZTI3M2JhMmYxYzQxYWQ4NzUxN2ZkOWQyZDQw
ZTM4NGU0NjRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNjkwLDYgKzI2
OTAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBmZjdmYTczYWRjMDM5MjU4
MjU0NDI1MzI3YmM4MmYwMDE5Y2JmYzZiLi4zMjA0OWI2YjVhZDJlMDg1ZTE3MDI1N2I5MzZlMmQ3
MWZhMDEwZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMyNCw2ICszMjQsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBjc3MvUnVsZUZlYXR1cmUuY3BwIFwKICAgICBjc3MvUnVsZVNldC5jcHAgXAogICAgIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwIFwKKyAgICBjc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGgu
Y3BwIFwKICAgICBjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIFwKICAgICBjc3MvU2hhZG93VmFsdWUu
Y3BwIFwKICAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYmE1
NmJjYjJlMTI1M2ViMTRiNWFjMDRhNzhhOWMyNzk5ODhmZmY0My4uMjhiNzhjYWQyOTkzNGRmZDcz
ZWVlM2FlYWZlMGQ1NWEwZTUwNTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTU5MCw2ICsxNTkw
LDggQEAKICAgICAgICAgICAgICdjc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAnLAogICAgICAg
ICAgICAgJ2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwJywKICAgICAgICAgICAgICdjc3MvU2VsZWN0
b3JDaGVja2VyLmgnLAorICAgICAgICAgICAgJ2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5j
cHAnLAorICAgICAgICAgICAgJ2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oJywKICAgICAg
ICAgICAgICdjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwJywKICAgICAgICAgICAgICdjc3MvU2VsZWN0
b3JGaWx0ZXIuaCcsCiAgICAgICAgICAgICAnY3NzL1NoYWRvd1ZhbHVlLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGZl
ZTRiYzA4NjJmMmZmMWY3M2I1NmQyZjYxNjQwZTdlMjc1MWNkZC4uZjJlNTBkM2JlZGUyNmI4MmE0
Nzg4YjJlY2Q5MjI4MjZjZThhOTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA5OSw2ICsxMDk5LDggQEAKIAkJNDE5QkMy
REYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJDMkREMTY4NTMyOTkwMEQ2NEQ2RCAv
KiBWaXNpdGVkTGlua1N0YXRlLmggKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAv
KiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAgKi87IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaCAqLzsgfTsKKwkJNDFCOENENDUxNkQwNDU5MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tl
ckZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5j
cHAgKi87IH07CisJCTQxQjhDRDQ2MTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNoZWNrZXJG
YXN0UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFCOENENDQxNkQwNDU5MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmggKi87
IH07CiAJCTQxQkY3MDBCMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMDkw
RkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3
MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBBMEZFODZGNDkwMDVFOERF
QyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUJGNzAwRjBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmNwcCAqLzsgfTsKQEAgLTg0NzgsNiArODQ4MCw4IEBACiAJCTQxOUJDMkREMTY4
NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERl
ZGljYXRlZFdvcmtlclRocmVhZC5oOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFCOENENDMxNkQwNDU5MTAwMEU4
Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFCOENENDQxNkQwNDU5MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hl
Y2tlckZhc3RQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9y
Q2hlY2tlckZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDA5
MEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQ
b3J0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUG9y
dENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEQwRkU4NkY2
MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsg
cGF0aCA9IGRlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjIxMDQsNiArMjIxMDgsOCBAQAogCQkJCUE3OUJBREEwMTYx
RTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIx
RDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIx
RDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oICovLAorCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOEND
MCAvKiBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgKi8sCisJCQkJNDFCOENENDQxNkQwNDU5
MTAwMEU4Q0MwIC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmggKi8sCiAJCQkJNDE1MDcxNTUx
Njg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCAqLywKIAkJCQk0MTUwNzE1NjE2
ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4
OUNBMDA3RkI4QzUgLyogU2hhZG93VmFsdWUuY3BwICovLApAQCAtMjY2MDEsNiArMjY2MDcsNyBA
QAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQjhDRDQ2MTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxl
Y3RvckNoZWNrZXJGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTc5NSw2ICsyOTgwMiw3
IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxl
Z2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFCOENENDUxNkQwNDU5MTAwMEU4Q0Mw
IC8qIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggMDlhNTQzYjNlZTY0ZjgyODE0YTM3NWM4ZTVlOWYxMDdl
ZTE5OGY2ZC4uOTEzZWZkYzY5OWMxMzAzZGY3ZDczZDkzOWIwOTlmZDE4OGIyMGI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC03NCw2ICs3NCw3IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ1NTT01XcmFwcGVycy5jcHAiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuY3BwIgogI2lu
Y2x1ZGUgIlJ1bGVTZXQuY3BwIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNw
cCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5jcHAiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVy
LmNwcCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cAppbmRleCBmODZiMDE4YjNjYjMxNTgwOGI3NDhiM2RkYWJmMGUyYTQ3NjU4MjE1Li43ODAzYTk3
NGExOTBkZTVjM2E5MmYwYzVlNTg1MDYzNTU4MjljNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCisj
aW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCIKICNpbmNsdWRlICJTZWxlY3RvckZp
bHRlci5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUu
aCIKQEAgLTEzNSw3ICsxMzYsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxl
LCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbiwgQQogICAgIDogbV9y
dWxlKHJ1bGUpCiAgICAgLCBtX3NlbGVjdG9ySW5kZXgoc2VsZWN0b3JJbmRleCkKICAgICAsIG1f
cG9zaXRpb24ocG9zaXRpb24pCi0gICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcigoYWRk
UnVsZUZsYWdzICYgUnVsZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yKSAmJiBTZWxlY3RvckNoZWNr
ZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKCkpKQorICAgICwgbV9oYXNGYXN0
Q2hlY2thYmxlU2VsZWN0b3IoKGFkZFJ1bGVGbGFncyAmIFJ1bGVDYW5Vc2VGYXN0Q2hlY2tTZWxl
Y3RvcikgJiYgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OmNhblVzZShzZWxlY3RvcigpKSkKICAg
ICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKSkKICAgICAsIG1faGFz
TXVsdGlwYXJ0U2VsZWN0b3IoISFzZWxlY3RvcigpLT50YWdIaXN0b3J5KCkpCiAgICAgLCBtX2hh
c1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKGlzU2VsZWN0b3JN
YXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGI5N2JkZTBjZWUxYjc5Yzg5ZDQ2MGM0ODkxNGUyZGNl
NmNhYjkxZTYuLmYzZTYxZTgzNGI5ZTQ0YmQ5YWQwNjMxZDIzZWIxMjFkOTUwMDc3ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGgu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCkBAIC03MywxNzMgKzc0LDE2
IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVudCwg
TW9kZSBtb2RlKQogYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXMoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yLCBFbGVtZW50KiBlbGVtZW50LCBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVj
dG9yKSBjb25zdAogewogICAgIGlmIChpc0Zhc3RDaGVja2FibGVTZWxlY3RvciAmJiAhZWxlbWVu
dC0+aXNTVkdFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKCFmYXN0Q2hlY2tSaWdodG1vc3RTZWxl
Y3RvcihzZWxlY3RvciwgZWxlbWVudCwgVmlzaXRlZE1hdGNoRGlzYWJsZWQpKQorICAgICAgICBT
ZWxlY3RvckNoZWNrZXJGYXN0UGF0aCBzZWxlY3RvckNoZWNrZXJGYXN0UGF0aChzZWxlY3Rvciwg
ZWxlbWVudCk7CisgICAgICAgIGlmICghc2VsZWN0b3JDaGVja2VyRmFzdFBhdGgubWF0Y2hlc1Jp
Z2h0bW9zdFNlbGVjdG9yKFZpc2l0ZWRNYXRjaERpc2FibGVkKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGZhc3RDaGVjayhzZWxlY3RvciwgZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiBzZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5tYXRjaGVzKCk7CiAgICAgfQog
CiAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIHJldHVy
biBtYXRjaChTZWxlY3RvckNoZWNraW5nQ29udGV4dChzZWxlY3RvciwgZWxlbWVudCwgU2VsZWN0
b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hEaXNhYmxlZCksIGlnbm9yZUR5bmFtaWNQc2V1ZG8sIERP
TVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSgpKSA9PSBTZWxlY3Rvck1hdGNoZXM7CiB9CiAKLW5h
bWVzcGFjZSB7Ci0KLXRlbXBsYXRlIDxib29sIGNoZWNrVmFsdWUoY29uc3QgRWxlbWVudCosIGNv
bnN0IENTU1NlbGVjdG9yKik+Ci1pbmxpbmUgYm9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiB0
b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpCi17Ci0gICAgZm9yICg7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGNoZWNr
VmFsdWUoZWxlbWVudCwgc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0b3ItPnJl
bGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpCi0gICAgICAgICAgICAgICAgdG9w
Q2hpbGRPclN1YnNlbGVjdG9yID0gMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0b3BDaGlsZE9y
U3Vic2VsZWN0b3IpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0b3ItPnJlbGF0aW9u
KCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1Nl
bGVjdG9yOjpTdWJTZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVj
dG9yID0gc2VsZWN0b3I7Ci0gICAgICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0
Y2hFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzZWxl
Y3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCi0gICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNl
bGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIGlmICh0b3BDaGlsZE9yU3Vic2VsZWN0b3IpIHsKLSAgICAg
ICAgICAgIC8vIENoaWxkIG9yIHN1YnNlbGVjdG9yIGNoZWNrIGZhaWxlZC4KLSAgICAgICAgICAg
IC8vIElmIHRoZSBtYXRjaCBlbGVtZW50IGlzIG51bGwsIHRvcENoaWxkT3JTdWJzZWxlY3RvciB3
YXMgYWxzbyB0aGUgdmVyeSB0b3Btb3N0IHNlbGVjdG9yIGFuZCBoYWQgdG8gbWF0Y2gKLSAgICAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdlIHdlcmUgY2hlY2tpbmcuCi0gICAgICAg
ICAgICBpZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgbWF0
Y2hlcyBkb3duIHRoZSBhbmNlc3RvciBjaGFpbi4KLSAgICAgICAgICAgIC8vIFJld2luZCB0byB0
aGUgdG9wbW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0Y2hl
ZCwgY29udGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgotICAgICAgICAgICAgc2VsZWN0b3IgPSB0
b3BDaGlsZE9yU3Vic2VsZWN0b3I7Ci0gICAgICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRPclN1
YnNlbGVjdG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgICB0b3BD
aGlsZE9yU3Vic2VsZWN0b3IgPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBjaGVja0NsYXNz
VmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQotewotICAgIHJldHVybiBlbGVtZW50LT5oYXNDbGFzcygpICYmIHN0YXRpY19jYXN0PGNvbnN0
IFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKHNlbGVjdG9y
LT52YWx1ZSgpLmltcGwoKSk7Ci19Ci0KLWlubGluZSBib29sIGNoZWNrSURWYWx1ZShjb25zdCBF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0gICAgcmV0
dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5p
bXBsKCkgPT0gc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpOwotfQotCi1pbmxpbmUgYm9vbCBjaGVj
a0V4YWN0QXR0cmlidXRlVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yKQotewotICAgIHJldHVybiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhh
Y3RBdHRyaWJ1dGUoZWxlbWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFs
dWUoKS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYm9vbCBjaGVja1RhZ1ZhbHVlKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICByZXR1cm4g
U2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yLT50YWdRTmFtZSgp
KTsKLX0KLQotfQotCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2Vs
ZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKLXsK
LSAgICBBU1NFUlQoU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxl
Y3RvcikpOwotCi0gICAgc3dpdGNoIChzZWxlY3Rvci0+bV9tYXRjaCkgewotICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlRhZzoKLSAgICAgICAgcmV0dXJuIGNoZWNrVGFnVmFsdWUoZWxlbWVudCwgc2Vs
ZWN0b3IpOwotICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgotICAgICAgICByZXR1cm4gY2hl
Y2tDbGFzc1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKTsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpJ
ZDoKLSAgICAgICAgcmV0dXJuIGNoZWNrSURWYWx1ZShlbGVtZW50LCBzZWxlY3Rvcik7Ci0gICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2V0OgotICAg
ICAgICByZXR1cm4gY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKTsK
LSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczoKLSAgICAgICAgcmV0dXJuIGNvbW1v
blBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yLCB2aXNpdGVkTWF0
Y2hUeXBlKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENo
ZWNrKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkK
LXsKLSAgICBBU1NFUlQoZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1l
bnQsIFZpc2l0ZWRNYXRjaEVuYWJsZWQpKTsKLQotICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BD
aGlsZE9yU3Vic2VsZWN0b3IgPSAwOwotICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJz
ZWxlY3Rvck1hdGNoRWxlbWVudCA9IDA7Ci0gICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09
IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IpCi0gICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9y
OwotCi0gICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvcikKLSAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKLQotICAg
IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLQotICAgIC8vIFdlIGtub3cgdGhp
cyBjb21wb3VuZCBzZWxlY3RvciBoYXMgZGVzY2VuZGFudCwgY2hpbGQgYW5kIHN1YnNlbGVjdG9y
IGNvbWJpbmF0b3JzIG9ubHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCi0gICAgd2hp
bGUgKHNlbGVjdG9yKSB7Ci0gICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPm1fbWF0Y2gpIHsKLSAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2xhc3M6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVj
a1NpbmdsZVNlbGVjdG9yPGNoZWNrQ2xhc3NWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENo
aWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAgICAgICBpZiAoIWZhc3RDaGVja1NpbmdsZVNl
bGVjdG9yPGNoZWNrSURWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxl
Y3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6VGFnOgotICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVj
a1RhZ1ZhbHVlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BD
aGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6
Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAgaWYgKCFmYXN0
Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWU+KHNlbGVjdG9yLCBl
bGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNo
RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSBi
b29sIGlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlv
bikKLXsKLSAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQgfHwg
cmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHJlbGF0aW9uID09IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3RvcjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNrYWJsZU1h
dGNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBpZiAoc2VsZWN0b3ItPm1f
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkgewotICAgICAgICAvLyBTdHlsZSBhdHRyaWJ1dGUg
aXMgZ2VuZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3QgcGF0aCBkb2Vzbid0IHRyaWdnZXIgaXQu
Ci0gICAgICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSByYXRoZXIgdGhhbiBtYWtpbmcgdGhlIGZh
c3QgcGF0aCBtb3JlIGJyYW5jaHkuCi0gICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0cmlidXRl
KCkgIT0gc3R5bGVBdHRyOwotICAgIH0KLSAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NT
U2VsZWN0b3I6OkV4YWN0KQotICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpICE9
IHN0eWxlQXR0ciAmJiBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShzZWxl
Y3Rvci0+YXR0cmlidXRlKCkpOwotICAgIHJldHVybiBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6VGFnIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBz
ZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IpCi17Ci0gICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSZWxhdGlvbihzZWxlY3Rv
ci0+cmVsYXRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNGYXN0
Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1
ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKTsKLX0KLQotYm9vbCBTZWxlY3RvckNoZWNrZXI6Omlz
RmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAg
ICBpZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9y
eSgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAg
ICAgIGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZU1h
dGNoKHNlbGVjdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJp
bmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDQgZGlmZmVyZW50IHZhbHVlczoKIC8vICogU2VsZWN0
b3JNYXRjaGVzICAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQgZQpA
QCAtMTAyMywyMyArODY3LDYgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFy
UHNldWRvQ2xhc3MoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBDU1NTZWwKICAgICB9CiB9CiAK
LWJvb2wgU2VsZWN0b3JDaGVja2VyOjpjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyhj
b25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFZpc2l0
ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKLXsKLSAgICBBU1NFUlQoaXNDb21tb25Qc2V1
ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKSk7Ci0gICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRv
VHlwZSgpKSB7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKLSAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICByZXR1cm4gZWxlbWVudC0+aXNMaW5r
KCk7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZDoKLSAgICAgICAgcmV0dXJu
IGVsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlzaXRlZE1hdGNoRW5h
YmxlZDsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKLSAgICAgICAgcmV0dXJu
IG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdW5z
aWduZWQgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gTWF0Y2hB
bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggNzJlZTQ3NThiMTNiOTgw
ZTEwNmY5ZmNmMjQ3NTI0ZGVkMjY4YmU4ZS4uMDM1NWNkZTVkYTQ3MWYzZDgwZWYyMzA1ZTAxOWE2
YzBkNzUyMWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtODMsOSAr
ODMsNiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5PgogICAgIGJvb2wgY2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
LCBjb25zdCBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kmKSBjb25zdDsKIAotICAgIHN0YXRpYyBi
b29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7Ci0gICAgc3Rh
dGljIGJvb2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwot
CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5n
OyB9CiAKICAgICBNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KQEAgLTkzLDcg
KzkwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRhZ01hdGNoZXMoY29uc3QgRWxlbWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVk
b0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBzdGF0aWMgYm9vbCBtYXRj
aGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgZmFz
dENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgRWxlbWVudCosIGNvbnN0IENT
U1NlbGVjdG9yKik7CiAgICAgc3RhdGljIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBF
bGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSk7CiAKICAgICBlbnVtIExpbmtNYXRjaE1hc2sgeyBN
YXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBNYXRjaEFsbCA9IE1hdGNoTGluayB8IE1h
dGNoVmlzaXRlZCB9OwpAQCAtMTA0LDkgKzEwMCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50Kik7CiAKLSAgICBzdGF0aWMgYm9vbCBm
YXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1l
bnQqLCBWaXNpdGVkTWF0Y2hUeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21tb25Qc2V1ZG9DbGFz
c1NlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqLCBWaXNp
dGVkTWF0Y2hUeXBlKTsKLQogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAgIGJvb2wgbV9k
b2N1bWVudElzSFRNTDsKICAgICBNb2RlIG1fbW9kZTsKQEAgLTE0NywxNCArMTQwLDYgQEAgaW5s
aW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoY29u
c3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQotewotICAg
IGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3QgfHwgc2VsZWN0b3It
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkKLSAgICAgICAgcmV0dXJuIGNoZWNrRXhhY3RB
dHRyaWJ1dGUoZWxlbWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxlY3Rvci0+dmFsdWUo
KS5pbXBsKCkpOwotICAgIEFTU0VSVCghc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmE0NDdiNGQyM2Uw
ZDI0ZjA0MjU0NDRkNzQ0NTI3OWUzZTJlNTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcApAQCAtMCwwICsxLDIyMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICog
ICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdv
bGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Vi
a2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAq
IENvcHlyaWdodCAoYykgMjAxMSwgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlbGVjdG9y
Q2hlY2tlckZhc3RQYXRoLmgiCisKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOworCituYW1lc3BhY2UgeworCit0ZW1wbGF0ZSA8Ym9vbCBjaGVja1ZhbHVlKGNv
bnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopPgoraW5saW5lIGJvb2wgZmFzdENoZWNr
U2luZ2xlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqJiBzZWxlY3RvciwgY29uc3QgRWxlbWVu
dComIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCBj
b25zdCBFbGVtZW50KiYgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KQoreworICAg
IGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Cisg
ICAgICAgIGlmIChjaGVja1ZhbHVlKGVsZW1lbnQsIHNlbGVjdG9yKSkgeworICAgICAgICAgICAg
aWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KQorICAg
ICAgICAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IDA7CisgICAgICAgICAgICBlbHNl
IGlmICghdG9wQ2hpbGRPclN1YnNlbGVjdG9yKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNl
bGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVs
YXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIHRv
cENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9yOworICAgICAgICAgICAgICAgIHRvcENoaWxk
T3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVj
dG9yKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7
CisgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodG9wQ2hpbGRPclN1YnNl
bGVjdG9yKSB7CisgICAgICAgICAgICAvLyBDaGlsZCBvciBzdWJzZWxlY3RvciBjaGVjayBmYWls
ZWQuCisgICAgICAgICAgICAvLyBJZiB0aGUgbWF0Y2ggZWxlbWVudCBpcyBudWxsLCB0b3BDaGls
ZE9yU3Vic2VsZWN0b3Igd2FzIGFsc28gdGhlIHZlcnkgdG9wbW9zdCBzZWxlY3RvciBhbmQgaGFk
IHRvIG1hdGNoCisgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZWxlbWVudCB3ZSB3ZXJlIGNo
ZWNraW5nLgorICAgICAgICAgICAgaWYgKCF0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1l
bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLy8gVGhlcmUg
bWF5IGJlIG90aGVyIG1hdGNoZXMgZG93biB0aGUgYW5jZXN0b3IgY2hhaW4uCisgICAgICAgICAg
ICAvLyBSZXdpbmQgdG8gdGhlIHRvcG1vc3QgY2hpbGQgb3Igc3Vic2VsZWN0b3IgYW5kIHRoZSBl
bGVtZW50IGl0IG1hdGNoZWQsIGNvbnRpbnVlIGNoZWNraW5nIGFuY2VzdG9ycy4KKyAgICAgICAg
ICAgIHNlbGVjdG9yID0gdG9wQ2hpbGRPclN1YnNlbGVjdG9yOworICAgICAgICAgICAgZWxlbWVu
dCA9IHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwor
ICAgICAgICAgICAgdG9wQ2hpbGRPclN1YnNlbGVjdG9yID0gMDsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5l
IGJvb2wgY2hlY2tDbGFzc1ZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBz
dGF0aWNfY2FzdDxjb25zdCBTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKS5j
b250YWlucyhzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworfQorCitpbmxpbmUgYm9vbCBjaGVj
a0lEVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yKQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmlkRm9yU3R5
bGVSZXNvbHV0aW9uKCkuaW1wbCgpID09IHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKTsKK30KKwor
aW5saW5lIGJvb2wgY2hlY2tFeGFjdEF0dHJpYnV0ZVZhbHVlKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gU2VsZWN0b3JD
aGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGVsZW1lbnQsIHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KSwgc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKK30KKworaW5saW5lIGJvb2wgY2hlY2tUYWdW
YWx1ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3Ip
Cit7CisgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxl
Y3Rvci0+dGFnUU5hbWUoKSk7Cit9CisKK30KKworU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OlNl
bGVjdG9yQ2hlY2tlckZhc3RQYXRoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3Qg
RWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1fc2VsZWN0b3Ioc2VsZWN0b3IpCisgICAgLCBtX2Vs
ZW1lbnQoZWxlbWVudCkKK3sKK30KKworYm9vbCBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6bWF0
Y2hlc1JpZ2h0bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2
aXNpdGVkTWF0Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChTZWxlY3RvckNoZWNrZXJGYXN0
UGF0aDo6Y2FuVXNlKG1fc2VsZWN0b3IpKTsKKworICAgIHN3aXRjaCAobV9zZWxlY3Rvci0+bV9t
YXRjaCkgeworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKKyAgICAgICAgcmV0dXJuIGNoZWNr
VGFnVmFsdWUobV9lbGVtZW50LCBtX3NlbGVjdG9yKTsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpD
bGFzczoKKyAgICAgICAgcmV0dXJuIGNoZWNrQ2xhc3NWYWx1ZShtX2VsZW1lbnQsIG1fc2VsZWN0
b3IpOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OklkOgorICAgICAgICByZXR1cm4gY2hlY2tJRFZh
bHVlKG1fZWxlbWVudCwgbV9zZWxlY3Rvcik7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6
CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2V0OgorICAgICAgICByZXR1cm4gY2hlY2tFeGFjdEF0
dHJpYnV0ZVZhbHVlKG1fZWxlbWVudCwgbV9zZWxlY3Rvcik7CisgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3M6CisgICAgICAgIHJldHVybiBjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9y
TWF0Y2hlcyh2aXNpdGVkTWF0Y2hUeXBlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFNlbGVj
dG9yQ2hlY2tlckZhc3RQYXRoOjptYXRjaGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobWF0Y2hl
c1JpZ2h0bW9zdFNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCkp
OworICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3I7CisgICAgY29u
c3QgRWxlbWVudCogZWxlbWVudCA9IG1fZWxlbWVudDsKKworICAgIGNvbnN0IENTU1NlbGVjdG9y
KiB0b3BDaGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxk
T3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCA9IDA7CisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlv
bigpID09IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NT
ZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNl
bGVjdG9yOworCisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpT
dWJTZWxlY3RvcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsK
KworICAgIHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKworICAgIC8vIFdlIGtu
b3cgdGhpcyBjb21wb3VuZCBzZWxlY3RvciBoYXMgZGVzY2VuZGFudCwgY2hpbGQgYW5kIHN1YnNl
bGVjdG9yIGNvbWJpbmF0b3JzIG9ubHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCisg
ICAgd2hpbGUgKHNlbGVjdG9yKSB7CisgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPm1fbWF0Y2gp
IHsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q2xhc3M6CisgICAgICAgICAgICBpZiAoIWZh
c3RDaGVja1NpbmdsZVNlbGVjdG9yPGNoZWNrQ2xhc3NWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQs
IHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6CisgICAgICAgICAgICBpZiAoIWZhc3RDaGVja1Np
bmdsZVNlbGVjdG9yPGNoZWNrSURWYWx1ZT4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JT
dWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6VGFnOgorICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rv
cjxjaGVja1RhZ1ZhbHVlPihzZWxlY3RvciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9y
LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpTZXQ6CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgorICAgICAgICAgICAgaWYg
KCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxjaGVja0V4YWN0QXR0cmlidXRlVmFsdWU+KHNlbGVj
dG9yLCBlbGVtZW50LCB0b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rv
ck1hdGNoRWxlbWVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIGlzRmFzdENoZWNrYWJsZVJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiBy
ZWxhdGlvbikKK3sKKyAgICByZXR1cm4gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRh
bnQgfHwgcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkNoaWxkIHx8IHJlbGF0aW9uID09IENTU1Nl
bGVjdG9yOjpTdWJTZWxlY3RvcjsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzRmFzdENoZWNr
YWJsZU1hdGNoKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBpZiAoc2VsZWN0
b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlNldCkgeworICAgICAgICAvLyBTdHlsZSBhdHRy
aWJ1dGUgaXMgZ2VuZXJhdGVkIGxhemlseSBidXQgdGhlIGZhc3QgcGF0aCBkb2Vzbid0IHRyaWdn
ZXIgaXQuCisgICAgICAgIC8vIERpc2FsbG93IHRoZW0gaGVyZSByYXRoZXIgdGhhbiBtYWtpbmcg
dGhlIGZhc3QgcGF0aCBtb3JlIGJyYW5jaHkuCisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+YXR0
cmlidXRlKCkgIT0gc3R5bGVBdHRyOworICAgIH0KKyAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OkV4YWN0KQorICAgICAgICByZXR1cm4gc2VsZWN0b3ItPmF0dHJpYnV0
ZSgpICE9IHN0eWxlQXR0ciAmJiBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0
ZShzZWxlY3Rvci0+YXR0cmlidXRlKCkpOworICAgIHJldHVybiBzZWxlY3Rvci0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6VGFnIHx8IHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJ
ZCB8fCBzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc0Zhc3RDaGVja2FibGVSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgaWYgKCFpc0Zhc3RDaGVja2FibGVSZWxhdGlvbihz
ZWxlY3Rvci0+cmVsYXRpb24oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
aXNGYXN0Q2hlY2thYmxlTWF0Y2goc2VsZWN0b3IpIHx8IFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21t
b25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKTsKK30KKworYm9vbCBTZWxlY3RvckNoZWNr
ZXJGYXN0UGF0aDo6Y2FuVXNlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBp
ZiAoIWlzRmFzdENoZWNrYWJsZVJpZ2h0bW9zdFNlbGVjdG9yKHNlbGVjdG9yKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgp
OyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAg
IGlmICghaXNGYXN0Q2hlY2thYmxlUmVsYXRpb24oc2VsZWN0b3ItPnJlbGF0aW9uKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWlzRmFzdENoZWNrYWJsZU1hdGNo
KHNlbGVjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGg6OmNvbW1vblBzZXVkb0Ns
YXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2aXNp
dGVkTWF0Y2hUeXBlKSBjb25zdAoreworICAgIEFTU0VSVChTZWxlY3RvckNoZWNrZXI6OmlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3RvcihtX3NlbGVjdG9yKSk7CisgICAgc3dpdGNoIChtX3NlbGVj
dG9yLT5wc2V1ZG9UeXBlKCkpIHsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgor
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueUxpbms6CisgICAgICAgIHJldHVybiBtX2Vs
ZW1lbnQtPmlzTGluaygpOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6Cisg
ICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0g
U2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hFbmFibGVkOworICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0ZvY3VzOgorICAgICAgICByZXR1cm4gU2VsZWN0b3JDaGVja2VyOjptYXRjaGVz
Rm9jdXNQc2V1ZG9DbGFzcyhtX2VsZW1lbnQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
OGUzY2MzZDk4NDkzY2FjZTg5MThiODJiZjQ1YjcxMDk2ZjNjMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtk
ZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hh
bmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFr
b3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRo
X2gKKyNkZWZpbmUgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGhfaAorCisjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3IuaCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aCB7CitwdWJsaWM6CisgICAgU2Vs
ZWN0b3JDaGVja2VyRmFzdFBhdGgoY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBFbGVtZW50Kik7
CisKKyAgICBib29sIG1hdGNoZXMoKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXNSaWdodG1vc3RT
ZWxlY3RvcihTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OworICAgIGJv
b2wgbWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3Q7CisKKyAgICBzdGF0
aWMgYm9vbCBjYW5Vc2UoY29uc3QgQ1NTU2VsZWN0b3IqKTsKKworcHJpdmF0ZToKKyAgICBib29s
IGNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRl
ZE1hdGNoVHlwZSkgY29uc3Q7CisKKyAgICBjb25zdCBDU1NTZWxlY3RvciogbV9zZWxlY3RvcjsK
KyAgICBjb25zdCBFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCitpbmxpbmUgYm9vbCBTZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aDo6bWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6RXhhY3Qg
fHwgbV9zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KQorICAgICAgICByZXR1
cm4gU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKG1fZWxlbWVudCwgbV9zZWxl
Y3Rvci0+YXR0cmlidXRlKCksIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKKyAgICBBU1NF
UlQoIW1fc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
ZjIyMmJiMWUzNzM3MzY5NGU4YzM5MWJiMDljNjZlN2RmMWM1NDJkNi4uYmQ4NWJmNmJlZDUyY2Fk
MjQyOTQzOGNjNzhjNWU0MzE4NjZiOGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgpAQCAtMjA4NCwxMCArMjA4NSwxMSBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVy
OjpydWxlTWF0Y2hlcyhTdGF0ZSYgc3RhdGUsIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgYwog
ICAgICAgICB9CiAgICAgICAgIGlmIChydWxlRGF0YS5zZWxlY3RvcigpLT5tX21hdGNoID09IENT
U1NlbGVjdG9yOjpUYWcgJiYgIVNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhzdGF0ZS5lbGVt
ZW50KCksIHJ1bGVEYXRhLnNlbGVjdG9yKCktPnRhZ1FOYW1lKCkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoIVNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRt
b3N0QXR0cmlidXRlU2VsZWN0b3Ioc3RhdGUuZWxlbWVudCgpLCBydWxlRGF0YS5zZWxlY3Rvcigp
KSkKKyAgICAgICAgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGggc2VsZWN0b3JDaGVja2VyRmFzdFBh
dGgocnVsZURhdGEuc2VsZWN0b3IoKSwgc3RhdGUuZWxlbWVudCgpKTsKKyAgICAgICAgaWYgKCFz
ZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5tYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3Io
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gU2VsZWN0b3JD
aGVja2VyOjpmYXN0Q2hlY2socnVsZURhdGEuc2VsZWN0b3IoKSwgc3RhdGUuZWxlbWVudCgpKTsK
KyAgICAgICAgcmV0dXJuIHNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLm1hdGNoZXMoKTsKICAgICB9
CiAKICAgICAvLyBTbG93IHBhdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5k
ZXggODEzMzY0MTgwNzJiOWViMWVmMjU4YTc1YWI5ZjQ5NDhiZTVkNjI5My4uZWE0MjljZDU3Nzg5
NzM0ZWU5YWVhYzY4NzEzZGQwYTAzMWQ5MDdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCisjaW5j
bHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKIApAQCAtNDUsNyArNDYsNyBAQCB2b2lk
IFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxl
Y3Rvckxpc3QpCiAKICAgICBtX3NlbGVjdG9ycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlbGVj
dG9yQ291bnQpOwogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0
b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4
dChzZWxlY3RvcikpCi0gICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChTZWxlY3Rv
ckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Io
c2VsZWN0b3IpKSk7CisgICAgICAgIG1fc2VsZWN0b3JzLnVuY2hlY2tlZEFwcGVuZChTZWxlY3Rv
ckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoOjpjYW5Vc2Uoc2VsZWN0b3Ip
KSk7CiB9CiAKIGJvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhFbGVtZW50KiB0YXJnZXRF
bGVtZW50KSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>