<?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>100142</bug_id>
          
          <creation_ts>2012-10-23 10:23:44 -0700</creation_ts>
          <short_desc>[chromium] Implement reference (url) filters on composited layers.</short_desc>
          <delta_ts>2012-12-20 17:45:27 -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>
          <dependson>101925</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>748769</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-23 10:23:44 -0700</bug_when>
    <thetext>[skia] Implement reference (url) filters on composited layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748777</commentid>
    <comment_count>1</comment_count>
      <attachid>170188</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-23 10:34:42 -0700</bug_when>
    <thetext>Created attachment 170188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748782</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 10:38:06 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748783</commentid>
    <comment_count>3</comment_count>
      <attachid>170188</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-23 10:41:42 -0700</bug_when>
    <thetext>Comment on attachment 170188
Patch

Attachment 170188 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14530008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748787</commentid>
    <comment_count>4</comment_count>
      <attachid>170190</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-23 10:47:14 -0700</bug_when>
    <thetext>Created attachment 170190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748855</commentid>
    <comment_count>5</comment_count>
      <attachid>170190</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-23 12:21:30 -0700</bug_when>
    <thetext>Comment on attachment 170190
Patch

Attachment 170190 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14529054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751239</commentid>
    <comment_count>6</comment_count>
      <attachid>170735</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-25 14:57:20 -0700</bug_when>
    <thetext>Created attachment 170735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751246</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 15:00:00 -0700</bug_when>
    <thetext>Attachment 170735 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751254</commentid>
    <comment_count>8</comment_count>
      <attachid>170739</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-25 15:04:51 -0700</bug_when>
    <thetext>Created attachment 170739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752077</commentid>
    <comment_count>9</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-26 08:33:43 -0700</bug_when>
    <thetext>James, could you take a look at the compositor bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753721</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 13:46:16 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; James, could you take a look at the compositor bits?

That stuff all looks great to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753723</commentid>
    <comment_count>11</comment_count>
      <attachid>170739</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 13:47:27 -0700</bug_when>
    <thetext>Comment on attachment 170739
Patch

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

&gt; Source/Platform/chromium/public/WebLayer.h:129
&gt; +    virtual void setFilter(SkImageFilter*) = 0;

Could you document what&apos;s going on with ownership here?  I believe the answer is that the WebLayer is supposed to take a SkRef on the passed in SkImageFilter and it&apos;s expected that the filter chain won&apos;t be modified by WebKit after this call, is that accurate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753726</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-29 13:49:06 -0700</bug_when>
    <thetext>I&apos;m not sure if it&apos;s related, but we&apos;re disabling external SVG references pending a security review:

https://bugs.webkit.org/show_bug.cgi?id=100635

References internal to a document should continue to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753757</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-29 14:20:51 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 170739 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170739&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayer.h:129
&gt; &gt; +    virtual void setFilter(SkImageFilter*) = 0;
&gt; 
&gt; Could you document what&apos;s going on with ownership here?  I believe the answer is that the WebLayer is supposed to take a SkRef on the passed in SkImageFilter and it&apos;s expected that the filter chain won&apos;t be modified by WebKit after this call, is that accurate?

Exactly.  SkImageFilters are essentially immutable after construction anyway.  I&apos;ll add a comment to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753875</commentid>
    <comment_count>14</comment_count>
      <attachid>171338</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-29 16:52:40 -0700</bug_when>
    <thetext>Created attachment 171338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753876</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 16:58:49 -0700</bug_when>
    <thetext>Attachment 171338 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/ChangeLog:22:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:44:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753891</commentid>
    <comment_count>16</comment_count>
      <attachid>171343</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-29 17:14:33 -0700</bug_when>
    <thetext>Created attachment 171343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753894</commentid>
    <comment_count>17</comment_count>
      <attachid>171345</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-29 17:21:03 -0700</bug_when>
    <thetext>Created attachment 171345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754603</commentid>
    <comment_count>18</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-30 12:49:23 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m not sure if it&apos;s related, but we&apos;re disabling external SVG references pending a security review:

I guessed as much, from the recent discussion on webkit-dev.  This seems prudent.

&gt; https://bugs.webkit.org/show_bug.cgi?id=100635
&gt; 
&gt; References internal to a document should continue to work.

Thanks for the heads-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758025</commentid>
    <comment_count>19</comment_count>
      <attachid>172233</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-03 16:53:15 -0700</bug_when>
    <thetext>Created attachment 172233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758127</commentid>
    <comment_count>20</comment_count>
      <attachid>172233</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-04 07:53:02 -0800</bug_when>
    <thetext>Comment on attachment 172233
Patch

Attachment 172233 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14713608

New failing tests:
css3/filters/effect-reference-hw.html
css3/filters/effect-reference-ordering-hw.html
css3/filters/effect-reference.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758129</commentid>
    <comment_count>21</comment_count>
      <attachid>172246</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-04 08:11:07 -0800</bug_when>
    <thetext>Created attachment 172246
Suppress failures on mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758857</commentid>
    <comment_count>22</comment_count>
      <attachid>172398</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-05 13:58:20 -0800</bug_when>
    <thetext>Created attachment 172398
Fix refcounting issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758877</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 14:07:08 -0800</bug_when>
    <thetext>Attachment 172398 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/css3/filters/effect-reference-...&quot; exit_code: 1
LayoutTests/platform/mac/TestExpectations:804:  Path does not exist.  [test/expectations] [5]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758903</commentid>
    <comment_count>24</comment_count>
      <attachid>172398</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-05 14:30:15 -0800</bug_when>
    <thetext>Comment on attachment 172398
Fix refcounting issue

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

R=me

&gt; Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp:45
&gt; +    //    Old implementation, a la the draft spec, a straight-up scale,
&gt; +    //    representing &lt;feFunc[R|G|B] type=&quot;linear&quot; slope=&quot;[amount]&quot;&gt;
&gt; +    //    (See http://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html#brightnessEquivalent)
&gt; +    // matrix[0] = matrix[6] = matrix[12] = amount;
&gt; +    // matrix[18] = 1;

is there any reason to keep this around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759625</commentid>
    <comment_count>25</comment_count>
      <attachid>172398</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-06 06:40:51 -0800</bug_when>
    <thetext>Comment on attachment 172398
Fix refcounting issue

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

&gt;&gt; Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp:45
&gt;&gt; +    // matrix[18] = 1;
&gt; 
&gt; is there any reason to keep this around?

Nope.  Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759627</commentid>
    <comment_count>26</comment_count>
      <attachid>172573</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-06 06:42:34 -0800</bug_when>
    <thetext>Created attachment 172573
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759666</commentid>
    <comment_count>27</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-06 07:34:41 -0800</bug_when>
    <thetext>Committed r133608: &lt;http://trac.webkit.org/changeset/133608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795979</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-20 17:19:46 -0800</bug_when>
    <thetext>Why is this patch missing the change log entry in LayoutTests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795982</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-20 17:21:42 -0800</bug_when>
    <thetext>Also LayoutTests/css3/filters/effect-reference-ordering-hw.html was added without any expected results. How does that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795995</commentid>
    <comment_count>30</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-12-20 17:45:27 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Why is this patch missing the change log entry in LayoutTests?

That&apos;s odd.  I&apos;m not sure how that happened.

(In reply to comment #29)
&gt; Also LayoutTests/css3/filters/effect-reference-ordering-hw.html was added without any expected results. How does that work?

Also strange.  At any rate, I rebaselined it in r135539.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170188</attachid>
            <date>2012-10-23 10:34:42 -0700</date>
            <delta_ts>2012-10-23 10:47:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121023133319.patch</filename>
            <type>text/plain</type>
            <size>35626</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3MTM5NWIzZjY3NTdm
MGI2ZTdiZjA0Yjc2MTdiNjQwYmNiNzA1NmEwLi41ZGFhY2VjZWQxNWVjYzRiNGVmODcwMWUxMzZl
ZjI1ODcwZjAwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBzZXRBdXRvbWF0aWNh
bGx5Q29tcHV0ZVJhc3RlclNjYWxlIG9uIHRoZSBXZWJMYXllciBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDdlODJjZjY1MGI3YzUxNzU4NjRjMWY5MDVkYzE4MTFmMDE4NTM5Li43ZDg1NTFlZmI0ZjIyYmMy
YWMyMzExNDE2MDRkNjZkNjkxYjIzOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MTItMTAtMjMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW3NraWFdIEltcGxlbWVudCByZWZlcmVuY2UgKHVybCkgZmlsdGVycyBvbiBjb21wb3Np
dGVkIGxheWVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbAorCisg
ICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZp
bHRlcnMpOgorICAgICAgICBVc2UgdGhlIG5ldyBTa0ltYWdlRmlsdGVyIGJ1aWxkZXIgYW5kIHNl
dExheWVyKCkgaW5mcmFzdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBvbmx5IGlmIHRoZXJlJ3MgYSBy
ZWZlcmVuY2UgZmlsdGVyIGluIHRoZSBjaGFpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUZpbHRl
cik6CisgICAgICAgIEFkZCBjcmVhdGVJbWFnZUZpbHRlcigpIGZhY3RvcnkgZnVuY3Rpb24gZm9y
IGJ1aWxkaW5nIFNrSW1hZ2VGaWx0ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpzZXRGaWx0
ZXJFZmZlY3QpOgorICAgICAgICBBZGQgYSBGaWx0ZXJFZmZlY3QgbWVtYmVyIHRvIFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbiwgYW5kIGFjY2Vzc29ycworICAgICAgICBmb3IgaXQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVt
ZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQmxlbmQgZmlsdGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb2xvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgIFJlZmFjdG9yIGNyZWF0
aW9uIG9mIFNrQ29sb3JGaWx0ZXIgZnJvbSBhbiBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAg
SW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQ29sb3JNYXRyaXggZmlsdGVy
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1
clNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZUltYWdl
RmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZF
R2F1c3NpYW5CbHVyIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1
aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZvciBidWls
ZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZmZWN0IERB
Ry4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAgICAgICAq
IHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5nIEZpbHRl
ckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisgICAgICAg
IGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNlbGYuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2ZW4gd2hl
biBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRo
ZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20gaXQuCisK
IDIwMTItMTAtMjMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFRoZSBvcmRlciBvZiByZXNvbHZpbmcgZGlzdHJpYnV0aW9uIGluIHRyZWUgY29tcG9z
aXRpb24gaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI4ZWNhZTkwNmYz
ODdlMzcxN2EzMTQyMmI4ZDRhYTlkZDBiYmQxOTcuLjRkZjU5YzM1OGEwYzQ0YjZhMWNkYjJlYzY2
ZDNjNDE5NjIwNTAwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTItMTAtMjMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW3NraWFdIEltcGxlbWVudCByZWZlcmVuY2UgKHVybCkgZmlsdGVycyBvbiBj
b21wb3NpdGVkIGxheWVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyAxNjMyOTc6MTYzNTU3LgorCiAyMDEyLTEwLTIz
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcmVzb2x1dGlvbiBtZWRpYSBxdWVyeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDdlYzUxNjU1NWVkMzlkODFlZDA5
ODI5ZTNiZjIxNDMwNGQ0NGYwZmYuLmFhNjA4YWJmYTViOGIyMDU3Y2I4MzVlYzVmOWM5MWYzNzYz
YzEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogY2xhc3MgU2tNYXRyaXg0
NDsKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
QW5pbWF0aW9uRGVsZWdhdGU7CkBAIC0xMjUsNiArMTI2LDggQEAgcHVibGljOgogICAgIC8vIFdl
YkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rmls
dGVyKFNrSW1hZ2VGaWx0ZXIqKSA9IDA7CisKICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBpeGVs
cyB0aGF0IHNob3cgdGhyb3VnaCB0aGUgYmFja2dyb3VuZCBvZiB0aGlzIGxheWVyLgogICAgIC8v
IE5vdGU6IFRoZXNlIGZpbHRlcnMgYXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJzIHRoYXQgYXJl
IGRyYXduIGRpcmVjdGx5CiAgICAgLy8gdG8gYSByb290IHJlbmRlciBzdXJmYWNlIHdpdGggYW4g
b3BhcXVlIGJhY2tncm91bmQuIFRoaXMgbWVhbnMgaWYgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggMjI2OWJlNzJjZjMzOTUwMTU4YWVlOWQ3ZjlhZmE0ZWQwYmEz
OTRlMi4uM2MwNzBkMjFmNjEwYTkzMGQ3NDIyMWI5ZmNlNDFjMWY0ZjAwMGQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAg
Jy4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjJywKICAgICAgICcuLi9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bScsCisgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhJywKICAgICAgICcu
Li9wbGF0Zm9ybS9ncmFwaGljcy9ncHUnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9za2lhJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBlN2Q0YTI3ODI4NGNhMTk5ZDMwZGIwYWYyOGQwNzRiZDRkNDk2NzNjLi5jYjJiOTFm
N2YxNWUzMTkyNjQ1OWJjOTgzMGUyZGI2MDFkM2UwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01
MDU1LDYgKzUwNTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1Nr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2
YTQwNWU0ZmM0ODM0Njc3MzBjNzJmNWNlYTZlZi4uZjBkMDQ3M2ZkN2IyZTY1NDY4MGMyZGIyOTc4
MmZlOWNkMGNmOGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1
ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUg
IlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5j
bHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5o
PgpAQCAtMzc5LDE1ICszODAsMjUgQEAgc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVy
YXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGkKIAogYm9vbCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKIHsKLSAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7Ci0gICAgaWYg
KCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVy
cywgd2ViRmlsdGVycykpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSBy
ZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQotICAgICAgICAvLyBn
b2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIEdyYXBoaWNz
TGF5ZXI6OnNldEZpbHRlcnMoRmlsdGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBvbmx5IHVzZSBTa0ltYWdlRmlsdGVycyBp
ZiB0aGVyZSBpcyBhIHJlZmVyZW5jZQorICAgIC8vIGZpbHRlciBpbiB0aGUgY2hhaW4uIE9uY2Ug
YWxsIGlzc3VlcyBoYXZlIGJlZW4gaXJvbmVkIG91dCwgd2Ugc2hvdWxkCisgICAgLy8gc3dpdGNo
IGFsbCBmaWx0ZXJpbmcgb3ZlciB0byB0aGlzIHBhdGgsIGFuZCByZW1vdmUgc2V0RmlsdGVycygp
IGFuZAorICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgYWx0b2dldGhlci4KKyAgICBpZiAoZmls
dGVycy5oYXNSZWZlcmVuY2VGaWx0ZXIoKSkgeworICAgICAgICBTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIFNrSW1hZ2VGaWx0ZXIqIGltYWdlRmlsdGVyID0gYnVpbGRl
ci5idWlsZChmaWx0ZXJzKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVyKGlt
YWdlRmlsdGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdl
YkZpbHRlcnM7CisgICAgICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJG
aWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIGZpbHRlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIs
IGFzIHRoZXkgYXJlCisgICAgICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2Fy
ZSBtb2RlLgorICAgICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0
ZXJPcGVyYXRpb25zKCkpOworICAgICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhG
aWx0ZXJPcGVyYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAg
fQotICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0
dXJuIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5kZXggZTU4
YzhhM2QwMWVkYzRhN2RjODNmMDBiZDgyMDJkMjFhOWU5NjAyNC4uNWM3MWMyYjcyNTA2NjQ3MWJj
NzM4MmFkZjJjY2QxMmM5NzVlMDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAj
aWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAg
dmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyKik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMjdhNGFjODQzOGY5YTllMjY4NDM5YmMzMmQyZGZk
ODkyMWNlNDFjMy4uNWJhNGE0NTY4MDNmOTI2ZDIzZjAzODIyNWU4OTEzYmI4YTM5OTNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKIAogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNr
aWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuaAppbmRleCA3YjNiZGNlMjkxNzMzNjcxNjBiMjEwZTNmMDM1MjIwNTdl
YTY5ZWQ3Li5kYWYzZWYxN2EyYzJmNzk3ODkxMGViMDE0MTliYWE5ZjhhYmE5ZDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQg
cGxhdGZvcm1BcHBseUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVp
bnQ4Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5z
aWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAg
ICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdl
RmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5k
aWYKIAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDE5ZGE2MzVhMmUwM2E2
MWFmMDQwOGVjZDRmOTBmZGU0YjBlMDQ3MzEuLmIzOGU2NzNjMzgyMjJjNjRiN2VkZjgzMzY4OWRl
YzYzMDcwY2FmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwogI2lmIFVTRShTS0lBKQog
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFn
ZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOworCiAj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAxNjIw
YWJmMWUzZDVlNjZkMTdkNDUxNmU0NDhmNzUxOTlhYjhkMDRkLi4wNjllZGUzZWVhZDNhZjcwMjNk
OWU5ZTlkMWNhYjczZTg5ZTAwZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTM1LDYgKzM1LDEwIEBA
CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBrTWF4RmlsdGVyU2l6ZSA9IDUwMDAuMGY7CiAKKyNpZiBV
U0UoU0tJQSkKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGaWx0ZXI7CkBAIC00Miw2ICs0NiwxMCBAQCBjbGFzcyBGaWx0ZXJFZmZl
Y3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFRleHRTdHJlYW07CiAKKyNpZiBVU0UoU0tJ
QSkKK2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI7CisjZW5kaWYKKwogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RWZWN0b3I7CiAKIGVudW0gRmls
dGVyRWZmZWN0VHlwZSB7CkBAIC05NSw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRl
ciopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA2ZDI1MDNhYzM5ZjIwOGFiYWIwZGMyNTczODg5ZmUw
MGVkZTY2MWFiLi45YTQ5YWZlYTAwMzU0NmI2Mjk3Yjk2NTlhYWY1OTU2NWRhNDQ0YzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2lu
Y2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgpAQCAtMTY5LDYgKzE3MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICB2b2lkIHNldERhdGEodm9pZCogZGF0YSkg
eyBtX2RhdGEgPSBkYXRhOyB9CisgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyRWZm
ZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0ZXJFZmZl
Y3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJpdmF0ZToKIApAQCAtMTkxLDYgKzE5NCw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0cmluZyBtX2ZyYWdtZW50OwogICAgIHZv
aWQqIG1fZGF0YTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07
CiAKIC8vIEdSQVlTQ0FMRSwgU0VQSUEsIFNBVFVSQVRFIGFuZCBIVUVfUk9UQVRFIGFyZSB2YXJp
YXRpb25zIG9uIGEgYmFzaWMgY29sb3IgbWF0cml4IGVmZmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNr
aWEuY3BwCmluZGV4IGZkY2E0MzJmNGQzNDhhMWI5N2Q0ODcyZjVhYjZjMzE1YjU2NDcwNDEuLjgw
ODlmM2I1MGQ2MDU5NmZmYjg0NjlhNTRiNWIzZTRmODhmMWI4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxl
bmRTa2lhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5o
IgogI2luY2x1ZGUgIlNrQml0bWFwU291cmNlLmgiCiAjaW5jbHVkZSAiU2tCbGVuZEltYWdlRmls
dGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTg0LDYgKzg1LDE0IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBs
eVNraWEoKQogICAgIHJldHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUJsZW5kOjpj
cmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAg
IFNrSW1hZ2VGaWx0ZXIqIGZvcmVncm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgw
KSk7CisgICAgU2tJbWFnZUZpbHRlciogYmFja2dyb3VuZCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0
RWZmZWN0KDEpKTsKKyAgICBTa0JsZW5kSW1hZ2VGaWx0ZXI6Ok1vZGUgbW9kZSA9IHRvU2tpYU1v
ZGUobV9tb2RlKTsKKyAgICByZXR1cm4gbmV3IFNrQmxlbmRJbWFnZUZpbHRlcihtb2RlLCBiYWNr
Z3JvdW5kLCBmb3JlZ3JvdW5kKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNw
cAppbmRleCAwZmQwNzc3NmUwMzA3MzA4YTExOGE2MzA5NjA0M2UwZjlhNTA1M2ViLi45OGZlNjY5
ODhmNTQ3NzgzNDAwMjE4ZmM2ZTdjZTEzYzAyNTQ4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNv
bG9yTWF0cml4U2tpYS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGRUNvbG9yTWF0
cml4LmgiCiAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9y
RmlsdGVySW1hZ2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDI0ICs4MSwxNSBAQCBzdGF0aWMgdm9pZCBsdW1p
bmFuY2VUb0FscGhhTWF0cml4KFNrU2NhbGFyIG1hdHJpeFsyMF0pCiAgICAgbWF0cml4WzE3XSA9
IDAuMDcyMWY7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQor
c3RhdGljIFNrQ29sb3JGaWx0ZXIqIGNyZWF0ZUNvbG9yRmlsdGVyKENvbG9yTWF0cml4VHlwZSB0
eXBlLCBjb25zdCBmbG9hdCogdmFsdWVzKQogewotICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwotCi0gICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCkpOwotCiAgICAgU2tTY2FsYXIgbWF0cml4WzIwXTsKLQotICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZ
UEVfVU5LTk9XTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVf
TUFUUklYOgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyArK2kpCi0gICAgICAgICAg
ICBtYXRyaXhbaV0gPSBtX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIG1hdHJpeFtpXSA9IHZhbHVl
c1tpXTsKIAogICAgICAgICBtYXRyaXhbNF0gKj0gU2tTY2FsYXIoMjU1KTsKICAgICAgICAgbWF0
cml4WzldICo9IFNrU2NhbGFyKDI1NSk7CkBAIC0xMDUsMTUgKzk3LDI5IEBAIGJvb2wgRkVDb2xv
ck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICBtYXRyaXhbMTldICo9IFNrU2Nh
bGFyKDI1NSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1NB
VFVSQVRFOiAKLSAgICAgICAgc2F0dXJhdGVNYXRyaXgobV92YWx1ZXNbMF0sIG1hdHJpeCk7Cisg
ICAgICAgIHNhdHVyYXRlTWF0cml4KHZhbHVlc1swXSwgbWF0cml4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFOgotICAgICAgICBodWVSb3Rh
dGVNYXRyaXgobV92YWx1ZXNbMF0sIG1hdHJpeCk7CisgICAgICAgIGh1ZVJvdGF0ZU1hdHJpeCh2
YWx1ZXNbMF0sIG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJ
WF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6CiAgICAgICAgIGx1bWluYW5jZVRvQWxwaGFNYXRyaXgo
bWF0cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHJldHVybiBuZXcgU2tDb2xvck1h
dHJpeEZpbHRlcihtYXRyaXgpOworfQorCitib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBw
bHlTa2lhKCkKK3sKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKworICAgIEludFJl
Y3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKKwor
ICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIo
bV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBp
bi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAg
IE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKQEAgLTEyMiwxMiArMTI4LDE5IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxh
dGZvcm1BcHBseVNraWEoKQogCiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBTa1BhaW50IHBhaW50
OwotICAgIHBhaW50LnNldENvbG9yRmlsdGVyKG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJp
eCkpLT51bnJlZigpOworICAgIHBhaW50LnNldENvbG9yRmlsdGVyKGZpbHRlcik7CiAgICAgcGFp
bnQuc2V0WGZlcm1vZGVNb2RlKFNrWGZlcm1vZGU6OmtTcmNfTW9kZSk7CiAgICAgY2FudmFzLT5k
cmF3Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSwgMCwgMCwgJnBhaW50KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVDb2xvck1hdHJpeDo6Y3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5y
ZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsK
KyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVy
KG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yRmlsdGVy
SW1hZ2VGaWx0ZXIoZmlsdGVyLCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKSAmJiBVU0UoU0tJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1
clNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKaW5kZXggYjY5NGM5YjFjNTVhODM4Y2U0M2FjYmU0OTg1
YTRkZDg5Mzc5MDY1NS4uZjVmNDZkYWVkY2EzYjUzZWYxMzRmNTdkNmQ2OTE4MTVhZTNmOWIyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgiCiAjaW5jbHVkZSAi
U2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNSArNjIsMTEgQEAgYm9vbCBGRUdhdXNz
aWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0cnVlOwogfQogCitTa0lt
YWdlRmlsdGVyKiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmls
dGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4g
aW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsKKyAgICByZXR1cm4gbmV3IFNr
Qmx1ckltYWdlRmlsdGVyKFNrRmxvYXRUb1NjYWxhcihtX3N0ZFgpLCBTa0Zsb2F0VG9TY2FsYXIo
bV9zdGRZKSwgaW5wdXQpOworfQorCiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9s
b2d5U2tpYS5jcHAKaW5kZXggZTcyOTBiZWM3ZTJkZTRhODI5M2NmYTVhZTEzZTliMjhmZjMyZGIw
NS4uYjJlOWY0ZmNmYjdlM2VhZjIyMTlhYzQ1NmM1N2YyODVlODM3NTkxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9n
eVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZF
TW9ycGhvbG9neS5oIgogCiAjaW5jbHVkZSAiU2tNb3JwaG9sb2d5SW1hZ2VGaWx0ZXIuaCIKKyNp
bmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjIsNSArNjMsMTUgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVNb3JwaG9sb2d5Ojpj
cmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAg
IFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVm
ZmVjdCgwKSkpOworICAgIFNrU2NhbGFyIHJhZGl1c1ggPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRp
dXNYKTsKKyAgICBTa1NjYWxhciByYWRpdXNZID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWSk7
CisgICAgaWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFKQorICAgICAg
ICByZXR1cm4gbmV3IFNrRGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQp
OworICAgIHJldHVybiBuZXcgU2tFcm9kZUltYWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlu
cHV0KTsKK30KKwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRl
ckJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZTAyN2I4MDI3ZGFlMzFjYTIwODdmYzliNjYzYmNl
MGMyMDY2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAKQEAgLTAsMCArMSwy
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2tpYUltYWdlRmls
dGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5jbHVk
ZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZp
bHRlci5oIgorI2luY2x1ZGUgIlNrTWF0cml4LmgiCisKK25hbWVzcGFjZSB7CisKK3ZvaWQgZ2V0
QnJpZ2h0bmVzc01hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7Cisg
ICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICAvLyAgICBP
bGQgaW1wbGVtZW50YXRpb24sIGEgbGEgdGhlIGRyYWZ0IHNwZWMsIGEgc3RyYWlnaHQtdXAgc2Nh
bGUsCisgICAgLy8gICAgcmVwcmVzZW50aW5nIDxmZUZ1bmNbUnxHfEJdIHR5cGU9ImxpbmVhciIg
c2xvcGU9IlthbW91bnRdIj4KKyAgICAvLyAgICAoU2VlIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9G
WFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjYnJpZ2h0bmVzc0VxdWl2YWxlbnQp
CisgICAgLy8gbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAg
ICAvLyBtYXRyaXhbMThdID0gMTsKKyAgICAvLyAgICBOZXcgaW1wbGVtZW50YXRpb24sIGEgdHJh
bnNsYXRpb24gaW4gY29sb3Igc3BhY2UsIHJlcHJlc2VudGluZworICAgIC8vICAgIDxmZUZ1bmNb
UnxHfEJdIHR5cGU9ImxpbmVhciIgaW50ZXJjZXB0PSJbYW1vdW50XSIvPgorICAgIC8vICAgIChT
ZWUgaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNTY0NykK
KyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gbWF0cml4WzE4XSA9IDE7
CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0XSA9IGFtb3VudCAqIDI1NTsK
K30KKwordm9pZCBnZXRDb250cmFzdE1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJp
eFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsK
KyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIG1h
dHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSAoLTAuNWYgKiBhbW91bnQgKyAwLjVm
KSAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTYXR1cmF0ZU1hdHJp
eChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhl
c2UgdmFsdWVzIGFyZSBjb21wdXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBm
YWxzZQorICAgIC8vIGZvciBhbW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTNm
ICsgMC43ODdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFt
b3VudDsKKyAgICBtYXRyaXhbMl0gPSAxLmYgLSAobWF0cml4WzBdICsgbWF0cml4WzFdKTsKKyAg
ICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIDAu
MjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyAwLjI4NWYgKiBhbW91bnQ7
CisgICAgbWF0cml4WzddID0gMS5mIC0gKG1hdHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0
cml4WzhdID0gbWF0cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gMC4yMTNm
ICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7Cisg
ICAgbWF0cml4WzEyXSA9IDEuZiAtIChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0
cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0g
bWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2
b2lkIGdldEh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBodWUsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7
CisgICAgZmxvYXQgY29zSHVlID0gY29zZihodWUgKiBwaUZsb2F0IC8gMTgwKTsKKyAgICBmbG9h
dCBzaW5IdWUgPSBzaW5mKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIG1hdHJpeFswXSA9IDAu
MjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsKKyAgICBtYXRyaXhbMV0g
PSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4
WzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmOworICAgIG1h
dHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gY29zSHVl
ICogMC4yMTNmICsgc2luSHVlICogMC4xNDNmOworICAgIG1hdHJpeFs2XSA9IDAuNzE1ZiArIGNv
c0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKKyAgICBtYXRyaXhbN10gPSAwLjA3MmYg
LSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7CisgICAgbWF0cml4WzhdID0gbWF0
cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmIC0g
c2luSHVlICogMC43ODdmOworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcx
NWYgKyBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4WzEyXSA9IDAuMDcyZiArIGNvc0h1ZSAq
IDAuOTI4ZiArIHNpbkh1ZSAqIDAuMDcyZjsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9
IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gMDsKKyAgICBt
YXRyaXhbMThdID0gMTsKKyAgICBtYXRyaXhbMTldID0gMDsKK30KKwordm9pZCBnZXRJbnZlcnRN
YXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldCht
YXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4
WzZdID0gbWF0cml4WzEyXSA9IDEgLSAyICogYW1vdW50OworICAgIG1hdHJpeFs0XSA9IG1hdHJp
eFs5XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9
CisKK3ZvaWQgZ2V0T3BhY2l0eU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsy
MF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAg
ICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gMTsKKyAgICBtYXRyaXhbMThd
ID0gYW1vdW50OworfQorCit2b2lkIGdldEdyYXlzY2FsZU1hdHJpeChmbG9hdCBhbW91bnQsIFNr
U2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhlc2UgdmFsdWVzIGFyZSBjb21w
dXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBmYWxzZQorICAgIC8vIGZvciBh
bW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTI2ZiArIDAuNzg3NGYgKiBhbW91
bnQ7CisgICAgbWF0cml4WzFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0
cml4WzJdID0gMS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNdID0g
bWF0cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1v
dW50OworICAgIG1hdHJpeFs2XSA9IDAuNzE1MmYgKyAwLjI4NDhmICogYW1vdW50OworICAgIG1h
dHJpeFs3XSA9IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9
IG1hdHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBh
bW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogYW1vdW50OworICAg
IG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJp
eFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0g
bWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2
b2lkIGdldFNlcGlhTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sK
KyAgICBtYXRyaXhbMF0gPSAwLjM5M2YgKyAwLjYwN2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzFd
ID0gMC43NjlmIC0gMC43NjlmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDAuMTg5ZiAtIDAu
MTg5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworCisgICAgbWF0
cml4WzVdID0gMC4zNDlmIC0gMC4zNDlmICogYW1vdW50OworICAgIG1hdHJpeFs2XSA9IDAuNjg2
ZiArIDAuMzE0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAwLjE2OGYgLSAwLjE2OGYgKiBh
bW91bnQ7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKworICAgIG1hdHJpeFsxMF0g
PSAwLjI3MmYgLSAwLjI3MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNTM0ZiAtIDAu
NTM0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMC4xMzFmICsgMC44NjlmICogYW1vdW50
OworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBt
YXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0g
PSAxOworfQorCitTa0ltYWdlRmlsdGVyKiBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihTa1NjYWxh
ciBtYXRyaXhbMjBdLCBTa0ltYWdlRmlsdGVyKiBpbnB1dCkKK3sKKyAgICBTa0F1dG9UVW5yZWY8
U2tDb2xvckZpbHRlcj4gY29sb3JGaWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4
KSk7CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXIoY29sb3JGaWx0ZXIs
IGlucHV0KTsKK30KKworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyOjpTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCkKK3sKK30KKworU2tJbWFnZUZpbHRl
ciogU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCit7
CisgICAgaWYgKCFlZmZlY3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgRmlsdGVyQnVpbGRl
ckhhc2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChlZmZlY3QpOworICAgIGlmIChpdCAh
PSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFNrSW1hZ2VG
aWx0ZXIqIGZpbHRlciA9IGVmZmVjdC0+Y3JlYXRlSW1hZ2VGaWx0ZXIodGhpcyk7CisgICAgbV9t
YXAuc2V0KGVmZmVjdCwgZmlsdGVyKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorCitTa0ltYWdl
RmlsdGVyKiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBvcGVyYXRpb25zKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZpbHRlciA9IDA7CisgICAg
U2tTY2FsYXIgbWF0cml4WzIwXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhdGlv
bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcCA9ICpv
cGVyYXRpb25zLmF0KGkpOworICAgICAgICBzd2l0Y2ggKG9wLmdldE9wZXJhdGlvblR5cGUoKSkg
eworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAg
ICBGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbio+KCZvcCktPmZpbHRlckVmZmVjdCgpOworICAgICAgICAgICAgLy8g
RklYTUU6IGhvb2sgdXAgcGFyZW50IGZpbHRlciB0byBpbWFnZSBzb3VyY2UKKyAgICAgICAgICAg
IGZpbHRlciA9IFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGZpbHRlckVmZmVjdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6R1JBWVNDQUxFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxj
b25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7Cisg
ICAgICAgICAgICBnZXRHcmF5c2NhbGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAg
ICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNFUElBOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAg
ICAgICBnZXRTZXBpYU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIg
PSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dFNhdHVyYXRlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNy
ZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7
CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRI
dWVSb3RhdGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3Jl
YXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogeworICAg
ICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0
SW52ZXJ0TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAg
ICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRP
cGFjaXR5TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBn
ZXRCcmlnaHRuZXNzTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9
IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDog
eworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAg
ICAgZ2V0Q29udHJhc3RNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVy
ID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
KyAgICAgICAgICAgIGZsb2F0IHBpeGVsUmFkaXVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbio+KCZvcCktPnN0ZERldmlhdGlvbigpLmdldEZsb2F0VmFsdWUoKTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IG5ldyBTa0JsdXJJbWFnZUZpbHRlcihwaXhlbFJhZGl1cywgcGl4
ZWxSYWRpdXMsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKy8vICAgICAgICAgICAgY29u
c3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wID0gKnN0YXRpY19jYXN0
PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmb3ApOworICAgICAgICAgICAgLy8g
RklYTUU6IGRvIG9mZnNldCBhbmQgYmx1cgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
VVNUT006CisgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkLgorI2VuZGlmCisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok5PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmlsdGVyOworfQorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiZDY4MzIwYjZhOTI5YzYxMDA5ODY4YjU3MTQ2ZDFkZjYy
NTk0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisjZGVmaW5lIFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworY2xhc3MgU2tJ
bWFnZUZpbHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmlsdGVyRWZmZWN0Owor
Y2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKKworY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlciB7
CitwdWJsaWM6CisgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlcigpOworCisgICAgU2tJbWFnZUZp
bHRlciogYnVpbGQoRmlsdGVyRWZmZWN0Kik7CisgICAgU2tJbWFnZUZpbHRlciogYnVpbGQoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYpOworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8Rmls
dGVyRWZmZWN0KiwgU2tJbWFnZUZpbHRlcio+IEZpbHRlckJ1aWxkZXJIYXNoTWFwOworICAgIEZp
bHRlckJ1aWxkZXJIYXNoTWFwIG1fbWFwOworfTsKKworfTsKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmZDA3
ZjRhODhkYjVjMjIxMGRiNzM3YWQxNzM1YWNhMjFjMTMyNTM2Li4xMWEyMWE2ZmYwZWI4ZGIxYWEz
OGY3YzYzMGI2YjRlMDA1ZjQwMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTIxNCw3ICsyMTQsOSBAQCBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIG9wZQogICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwogICAgICAgICBzd2l0Y2ggKGZp
bHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJl
bmNlRmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgc3RhdGljX2Nhc3Q8UmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKSk7CisgICAgICAgICAgICBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBlZmZl
Y3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJldmlvdXNFZmZlY3QsIHJlZmVy
ZW5jZU9wZXJhdGlvbik7CisgICAgICAgICAgICByZWZlcmVuY2VPcGVyYXRpb24tPnNldEZpbHRl
ckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjk5MDhhZjQyMDAyNzZjZjZhNDVlNjEzNDEwOGM5NDk1
YjdkMzZiMy4uNDVlYTI4MDk5YTAzYjIyNTZiNTEyZWU2MDE4OTE4NWUyM2Y3ZTNiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MTAyLDcgKzUxMDIsMTIg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgICAg
ICAvLyBmb3IgbG9hZGluZyBDU1Mgc2hhZGVyIGZpbGVzLgogICAgICAgICBpZiAoUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygpKQogICAgICAgICAg
ICAgZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoMCk7Ci0gICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBFYXJseS1yZXR1cm4gb25seSBpZiB3ZSAqZG9uJ3QqIGhhdmUgcmVmZXJlbmNlIGZpbHRl
cnMuCisgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZmlsdGVycywgd2Ugc3RpbGwgd2FudCB0aGUg
RmlsdGVyRWZmZWN0IGdyYXBoIGJ1aWx0CisgICAgICAgIC8vIGZvciB1cywgZXZlbiBpZiB3ZSdy
ZSBjb21wb3NpdGVkLgorICAgICAgICBpZiAoIXJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigp
Lmhhc1JlZmVyZW5jZUZpbHRlcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSBlbnN1cmVGaWx0ZXJJbmZv
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0RFUFMKaW5kZXggZWM5OGQ2ODUzNTIzMDA5MDU4YTJiMDE5ZWY4ZTkxYjhi
NmEzYTYyYS4uYTUwYWFiODVjZDNiODUwNmZmY2RiYTAwY2FmNTM0ODk4YmE5OGM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hyb21pdW1fc3Zu
JzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAnY2hyb21pdW1f
cmV2JzogJzE2MzI5NycKKyAgJ2Nocm9taXVtX3Jldic6ICcxNjM1NTcnCiB9CiAKIGRlcHMgPSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170190</attachid>
            <date>2012-10-23 10:47:14 -0700</date>
            <delta_ts>2012-10-25 14:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121023134549.patch</filename>
            <type>text/plain</type>
            <size>35512</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3MTM5NWIzZjY3NTdm
MGI2ZTdiZjA0Yjc2MTdiNjQwYmNiNzA1NmEwLi41ZGFhY2VjZWQxNWVjYzRiNGVmODcwMWUxMzZl
ZjI1ODcwZjAwMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBzZXRBdXRvbWF0aWNh
bGx5Q29tcHV0ZVJhc3RlclNjYWxlIG9uIHRoZSBXZWJMYXllciBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDdlODJjZjY1MGI3YzUxNzU4NjRjMWY5MDVkYzE4MTFmMDE4NTM5Li43ZDg1NTFlZmI0ZjIyYmMy
YWMyMzExNDE2MDRkNjZkNjkxYjIzOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MTItMTAtMjMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW3NraWFdIEltcGxlbWVudCByZWZlcmVuY2UgKHVybCkgZmlsdGVycyBvbiBjb21wb3Np
dGVkIGxheWVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbAorCisg
ICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZp
bHRlcnMpOgorICAgICAgICBVc2UgdGhlIG5ldyBTa0ltYWdlRmlsdGVyIGJ1aWxkZXIgYW5kIHNl
dExheWVyKCkgaW5mcmFzdHJ1Y3R1cmUsIGJ1dAorICAgICAgICBvbmx5IGlmIHRoZXJlJ3MgYSBy
ZWZlcmVuY2UgZmlsdGVyIGluIHRoZSBjaGFpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUZpbHRl
cik6CisgICAgICAgIEFkZCBjcmVhdGVJbWFnZUZpbHRlcigpIGZhY3RvcnkgZnVuY3Rpb24gZm9y
IGJ1aWxkaW5nIFNrSW1hZ2VGaWx0ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpzZXRGaWx0
ZXJFZmZlY3QpOgorICAgICAgICBBZGQgYSBGaWx0ZXJFZmZlY3QgbWVtYmVyIHRvIFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbiwgYW5kIGFjY2Vzc29ycworICAgICAgICBmb3IgaXQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVt
ZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQmxlbmQgZmlsdGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb2xvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgIFJlZmFjdG9yIGNyZWF0
aW9uIG9mIFNrQ29sb3JGaWx0ZXIgZnJvbSBhbiBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAg
SW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQ29sb3JNYXRyaXggZmlsdGVy
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1
clNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZUltYWdl
RmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZF
R2F1c3NpYW5CbHVyIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1
aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZvciBidWls
ZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZmZWN0IERB
Ry4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAgICAgICAq
IHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5nIEZpbHRl
ckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisgICAgICAg
IGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNlbGYuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2ZW4gd2hl
biBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRo
ZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20gaXQuCisK
IDIwMTItMTAtMjMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFRoZSBvcmRlciBvZiByZXNvbHZpbmcgZGlzdHJpYnV0aW9uIGluIHRyZWUgY29tcG9z
aXRpb24gaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI4ZWNhZTkwNmYz
ODdlMzcxN2EzMTQyMmI4ZDRhYTlkZDBiYmQxOTcuLjRkZjU5YzM1OGEwYzQ0YjZhMWNkYjJlYzY2
ZDNjNDE5NjIwNTAwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTItMTAtMjMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW3NraWFdIEltcGxlbWVudCByZWZlcmVuY2UgKHVybCkgZmlsdGVycyBvbiBj
b21wb3NpdGVkIGxheWVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyAxNjMyOTc6MTYzNTU3LgorCiAyMDEyLTEwLTIz
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcmVzb2x1dGlvbiBtZWRpYSBxdWVyeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDdlYzUxNjU1NWVkMzlkODFlZDA5
ODI5ZTNiZjIxNDMwNGQ0NGYwZmYuLmFhNjA4YWJmYTViOGIyMDU3Y2I4MzVlYzVmOWM5MWYzNzYz
YzEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogY2xhc3MgU2tNYXRyaXg0
NDsKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
QW5pbWF0aW9uRGVsZWdhdGU7CkBAIC0xMjUsNiArMTI2LDggQEAgcHVibGljOgogICAgIC8vIFdl
YkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rmls
dGVyKFNrSW1hZ2VGaWx0ZXIqKSA9IDA7CisKICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBpeGVs
cyB0aGF0IHNob3cgdGhyb3VnaCB0aGUgYmFja2dyb3VuZCBvZiB0aGlzIGxheWVyLgogICAgIC8v
IE5vdGU6IFRoZXNlIGZpbHRlcnMgYXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJzIHRoYXQgYXJl
IGRyYXduIGRpcmVjdGx5CiAgICAgLy8gdG8gYSByb290IHJlbmRlciBzdXJmYWNlIHdpdGggYW4g
b3BhcXVlIGJhY2tncm91bmQuIFRoaXMgbWVhbnMgaWYgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggMjI2OWJlNzJjZjMzOTUwMTU4YWVlOWQ3ZjlhZmE0ZWQwYmEz
OTRlMi4uM2MwNzBkMjFmNjEwYTkzMGQ3NDIyMWI5ZmNlNDFjMWY0ZjAwMGQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAg
Jy4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjJywKICAgICAgICcuLi9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bScsCisgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhJywKICAgICAgICcu
Li9wbGF0Zm9ybS9ncmFwaGljcy9ncHUnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9za2lhJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBlN2Q0YTI3ODI4NGNhMTk5ZDMwZGIwYWYyOGQwNzRiZDRkNDk2NzNjLi5jYjJiOTFm
N2YxNWUzMTkyNjQ1OWJjOTgzMGUyZGI2MDFkM2UwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01
MDU1LDYgKzUwNTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1Nr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2
YTQwNWU0ZmM0ODM0Njc3MzBjNzJmNWNlYTZlZi4uZjBkMDQ3M2ZkN2IyZTY1NDY4MGMyZGIyOTc4
MmZlOWNkMGNmOGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBA
IC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1
ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUg
IlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5j
bHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5o
PgpAQCAtMzc5LDE1ICszODAsMjUgQEAgc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVy
YXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGkKIAogYm9vbCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKIHsKLSAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7Ci0gICAgaWYg
KCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVy
cywgd2ViRmlsdGVycykpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSBy
ZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQotICAgICAgICAvLyBn
b2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIEdyYXBoaWNz
TGF5ZXI6OnNldEZpbHRlcnMoRmlsdGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBvbmx5IHVzZSBTa0ltYWdlRmlsdGVycyBp
ZiB0aGVyZSBpcyBhIHJlZmVyZW5jZQorICAgIC8vIGZpbHRlciBpbiB0aGUgY2hhaW4uIE9uY2Ug
YWxsIGlzc3VlcyBoYXZlIGJlZW4gaXJvbmVkIG91dCwgd2Ugc2hvdWxkCisgICAgLy8gc3dpdGNo
IGFsbCBmaWx0ZXJpbmcgb3ZlciB0byB0aGlzIHBhdGgsIGFuZCByZW1vdmUgc2V0RmlsdGVycygp
IGFuZAorICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgYWx0b2dldGhlci4KKyAgICBpZiAoZmls
dGVycy5oYXNSZWZlcmVuY2VGaWx0ZXIoKSkgeworICAgICAgICBTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIFNrSW1hZ2VGaWx0ZXIqIGltYWdlRmlsdGVyID0gYnVpbGRl
ci5idWlsZChmaWx0ZXJzKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVyKGlt
YWdlRmlsdGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdl
YkZpbHRlcnM7CisgICAgICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJG
aWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIGZpbHRlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIs
IGFzIHRoZXkgYXJlCisgICAgICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2Fy
ZSBtb2RlLgorICAgICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0
ZXJPcGVyYXRpb25zKCkpOworICAgICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhG
aWx0ZXJPcGVyYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAg
fQotICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0
dXJuIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5kZXggZTU4
YzhhM2QwMWVkYzRhN2RjODNmMDBiZDgyMDJkMjFhOWU5NjAyNC4uNWM3MWMyYjcyNTA2NjQ3MWJj
NzM4MmFkZjJjY2QxMmM5NzVlMDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAj
aWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAg
dmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyKik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMjdhNGFjODQzOGY5YTllMjY4NDM5YmMzMmQyZGZk
ODkyMWNlNDFjMy4uOTliNjUwYjljMWQ4NDVjMjQ0OTc5OTJiZGQxYmI0OTFmY2NiYzM3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJv
b2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0
ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCA3YjNiZGNlMjkxNzMzNjcx
NjBiMjEwZTNmMDM1MjIwNTdlYTY5ZWQ3Li5kYWYzZWYxN2EyYzJmNzk3ODkxMGViMDE0MTliYWE5
ZjhhYmE5ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6
CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkq
IHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25l
ZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7
CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7Cisg
ICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyKik7CiAjZW5kaWYKIAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmlu
ZGV4IDE5ZGE2MzVhMmUwM2E2MWFmMDQwOGVjZDRmOTBmZGU0YjBlMDQ3MzEuLmIzOGU2NzNjMzgy
MjJjNjRiN2VkZjgzMzY4OWRlYzYzMDcwY2FmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtNDksNiAr
NDksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
OwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOwor
ICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmls
dGVyQnVpbGRlciopOworCiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaAppbmRleCAxNjIwYWJmMWUzZDVlNjZkMTdkNDUxNmU0NDhmNzUxOTlhYjhkMDRkLi4w
NjllZGUzZWVhZDNhZjcwMjNkOWU5ZTlkMWNhYjczZTg5ZTAwZTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgK
QEAgLTM1LDYgKzM1LDEwIEBACiAKIHN0YXRpYyBjb25zdCBmbG9hdCBrTWF4RmlsdGVyU2l6ZSA9
IDUwMDAuMGY7CiAKKyNpZiBVU0UoU0tJQSkKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXI7CkBAIC00Miw2ICs0NiwxMCBA
QCBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFRleHRTdHJl
YW07CiAKKyNpZiBVU0UoU0tJQSkKK2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI7CisjZW5k
aWYKKwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RW
ZWN0b3I7CiAKIGVudW0gRmlsdGVyRWZmZWN0VHlwZSB7CkBAIC05NSw2ICsxMDMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKICNpZiBV
U0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tp
YUltYWdlRmlsdGVyQnVpbGRlciopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA2ZDI1MDNhYzM5ZjIw
OGFiYWIwZGMyNTczODg5ZmUwMGVkZTY2MWFiLi45YTQ5YWZlYTAwMzU0NmI2Mjk3Yjk2NTlhYWY1
OTU2NWRhNDQ0YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMTY5LDYgKzE3MCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICB2b2lkIHNl
dERhdGEodm9pZCogZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgRmlsdGVyRWZmZWN0KiBm
aWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQorICAg
IHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QpIHsgbV9maWx0ZXJFZmZlY3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJpdmF0ZToKIApAQCAt
MTkxLDYgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0cmluZyBt
X2ZyYWdtZW50OwogICAgIHZvaWQqIG1fZGF0YTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBt
X2ZpbHRlckVmZmVjdDsKIH07CiAKIC8vIEdSQVlTQ0FMRSwgU0VQSUEsIFNBVFVSQVRFIGFuZCBI
VUVfUk9UQVRFIGFyZSB2YXJpYXRpb25zIG9uIGEgYmFzaWMgY29sb3IgbWF0cml4IGVmZmVjdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUJsZW5kU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCmluZGV4IGZkY2E0MzJmNGQzNDhhMWI5N2Q0ODcyZjVh
YjZjMzE1YjU2NDcwNDEuLjgwODlmM2I1MGQ2MDU5NmZmYjg0NjlhNTRiNWIzZTRmODhmMWI4NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUJsZW5kU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlNrQml0bWFwU291cmNlLmgiCiAjaW5jbHVk
ZSAiU2tCbGVuZEltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDYgKzg1LDE0IEBAIGJvb2wgRkVC
bGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0cnVlOwogfQogCitTa0ltYWdl
RmlsdGVyKiBGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVy
KiBidWlsZGVyKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZvcmVncm91bmQgPSBidWlsZGVyLT5i
dWlsZChpbnB1dEVmZmVjdCgwKSk7CisgICAgU2tJbWFnZUZpbHRlciogYmFja2dyb3VuZCA9IGJ1
aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDEpKTsKKyAgICBTa0JsZW5kSW1hZ2VGaWx0ZXI6Ok1v
ZGUgbW9kZSA9IHRvU2tpYU1vZGUobV9tb2RlKTsKKyAgICByZXR1cm4gbmV3IFNrQmxlbmRJbWFn
ZUZpbHRlcihtb2RlLCBiYWNrZ3JvdW5kLCBmb3JlZ3JvdW5kKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNr
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
Q29sb3JNYXRyaXhTa2lhLmNwcAppbmRleCAwZmQwNzc3NmUwMzA3MzA4YTExOGE2MzA5NjA0M2Uw
ZjlhNTA1M2ViLi5kZjAxM2JiNzdiMGQwZGFkYWM0ZTdhNTE3ZTBiZmRiZjA5MzdlNjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVD
b2xvck1hdHJpeFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKICNp
bmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCiAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIK
KyNpbmNsdWRlICJTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTa0NvbG9y
TWF0cml4RmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgwLDI0ICs4MiwxNSBAQCBzdGF0aWMgdm9pZCBsdW1p
bmFuY2VUb0FscGhhTWF0cml4KFNrU2NhbGFyIG1hdHJpeFsyMF0pCiAgICAgbWF0cml4WzE3XSA9
IDAuMDcyMWY7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQor
c3RhdGljIFNrQ29sb3JGaWx0ZXIqIGNyZWF0ZUNvbG9yRmlsdGVyKENvbG9yTWF0cml4VHlwZSB0
eXBlLCBjb25zdCBmbG9hdCogdmFsdWVzKQogewotICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwotCi0gICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCkpOwotCiAgICAgU2tTY2FsYXIgbWF0cml4WzIwXTsKLQotICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZ
UEVfVU5LTk9XTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVf
TUFUUklYOgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIwOyArK2kpCi0gICAgICAgICAg
ICBtYXRyaXhbaV0gPSBtX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIG1hdHJpeFtpXSA9IHZhbHVl
c1tpXTsKIAogICAgICAgICBtYXRyaXhbNF0gKj0gU2tTY2FsYXIoMjU1KTsKICAgICAgICAgbWF0
cml4WzldICo9IFNrU2NhbGFyKDI1NSk7CkBAIC0xMDUsMTUgKzk4LDI5IEBAIGJvb2wgRkVDb2xv
ck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICBtYXRyaXhbMTldICo9IFNrU2Nh
bGFyKDI1NSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1NB
VFVSQVRFOiAKLSAgICAgICAgc2F0dXJhdGVNYXRyaXgobV92YWx1ZXNbMF0sIG1hdHJpeCk7Cisg
ICAgICAgIHNhdHVyYXRlTWF0cml4KHZhbHVlc1swXSwgbWF0cml4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFOgotICAgICAgICBodWVSb3Rh
dGVNYXRyaXgobV92YWx1ZXNbMF0sIG1hdHJpeCk7CisgICAgICAgIGh1ZVJvdGF0ZU1hdHJpeCh2
YWx1ZXNbMF0sIG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJ
WF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6CiAgICAgICAgIGx1bWluYW5jZVRvQWxwaGFNYXRyaXgo
bWF0cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHJldHVybiBuZXcgU2tDb2xvck1h
dHJpeEZpbHRlcihtYXRyaXgpOworfQorCitib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBw
bHlTa2lhKCkKK3sKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKworICAgIEludFJl
Y3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKKwor
ICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIo
bV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBp
bi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAg
IE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKQEAgLTEyMiwxMiArMTI5LDE5IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxh
dGZvcm1BcHBseVNraWEoKQogCiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBTa1BhaW50IHBhaW50
OwotICAgIHBhaW50LnNldENvbG9yRmlsdGVyKG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJp
eCkpLT51bnJlZigpOworICAgIHBhaW50LnNldENvbG9yRmlsdGVyKGZpbHRlcik7CiAgICAgcGFp
bnQuc2V0WGZlcm1vZGVNb2RlKFNrWGZlcm1vZGU6OmtTcmNfTW9kZSk7CiAgICAgY2FudmFzLT5k
cmF3Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSwgMCwgMCwgJnBhaW50KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVDb2xvck1hdHJpeDo6Y3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5y
ZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsK
KyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVy
KG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yRmlsdGVy
SW1hZ2VGaWx0ZXIoZmlsdGVyLCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKSAmJiBVU0UoU0tJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1
clNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKaW5kZXggYjY5NGM5YjFjNTVhODM4Y2U0M2FjYmU0OTg1
YTRkZDg5Mzc5MDY1NS4uZjVmNDZkYWVkY2EzYjUzZWYxMzRmNTdkNmQ2OTE4MTVhZTNmOWIyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgiCiAjaW5jbHVkZSAi
U2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNSArNjIsMTEgQEAgYm9vbCBGRUdhdXNz
aWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0cnVlOwogfQogCitTa0lt
YWdlRmlsdGVyKiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmls
dGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4g
aW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsKKyAgICByZXR1cm4gbmV3IFNr
Qmx1ckltYWdlRmlsdGVyKFNrRmxvYXRUb1NjYWxhcihtX3N0ZFgpLCBTa0Zsb2F0VG9TY2FsYXIo
bV9zdGRZKSwgaW5wdXQpOworfQorCiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9s
b2d5U2tpYS5jcHAKaW5kZXggZTcyOTBiZWM3ZTJkZTRhODI5M2NmYTVhZTEzZTliMjhmZjMyZGIw
NS4uYjJlOWY0ZmNmYjdlM2VhZjIyMTlhYzQ1NmM1N2YyODVlODM3NTkxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9n
eVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZF
TW9ycGhvbG9neS5oIgogCiAjaW5jbHVkZSAiU2tNb3JwaG9sb2d5SW1hZ2VGaWx0ZXIuaCIKKyNp
bmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjIsNSArNjMsMTUgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVNb3JwaG9sb2d5Ojpj
cmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAg
IFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVm
ZmVjdCgwKSkpOworICAgIFNrU2NhbGFyIHJhZGl1c1ggPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRp
dXNYKTsKKyAgICBTa1NjYWxhciByYWRpdXNZID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWSk7
CisgICAgaWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFKQorICAgICAg
ICByZXR1cm4gbmV3IFNrRGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQp
OworICAgIHJldHVybiBuZXcgU2tFcm9kZUltYWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlu
cHV0KTsKK30KKwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRl
ckJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZTAyN2I4MDI3ZGFlMzFjYTIwODdmYzliNjYzYmNl
MGMyMDY2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAKQEAgLTAsMCArMSwy
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2tpYUltYWdlRmls
dGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5jbHVk
ZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZp
bHRlci5oIgorI2luY2x1ZGUgIlNrTWF0cml4LmgiCisKK25hbWVzcGFjZSB7CisKK3ZvaWQgZ2V0
QnJpZ2h0bmVzc01hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7Cisg
ICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICAvLyAgICBP
bGQgaW1wbGVtZW50YXRpb24sIGEgbGEgdGhlIGRyYWZ0IHNwZWMsIGEgc3RyYWlnaHQtdXAgc2Nh
bGUsCisgICAgLy8gICAgcmVwcmVzZW50aW5nIDxmZUZ1bmNbUnxHfEJdIHR5cGU9ImxpbmVhciIg
c2xvcGU9IlthbW91bnRdIj4KKyAgICAvLyAgICAoU2VlIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9G
WFRGL3Jhdy1maWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjYnJpZ2h0bmVzc0VxdWl2YWxlbnQp
CisgICAgLy8gbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAg
ICAvLyBtYXRyaXhbMThdID0gMTsKKyAgICAvLyAgICBOZXcgaW1wbGVtZW50YXRpb24sIGEgdHJh
bnNsYXRpb24gaW4gY29sb3Igc3BhY2UsIHJlcHJlc2VudGluZworICAgIC8vICAgIDxmZUZ1bmNb
UnxHfEJdIHR5cGU9ImxpbmVhciIgaW50ZXJjZXB0PSJbYW1vdW50XSIvPgorICAgIC8vICAgIChT
ZWUgaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNTY0NykK
KyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gbWF0cml4WzE4XSA9IDE7
CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0XSA9IGFtb3VudCAqIDI1NTsK
K30KKwordm9pZCBnZXRDb250cmFzdE1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJp
eFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsK
KyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIG1h
dHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSAoLTAuNWYgKiBhbW91bnQgKyAwLjVm
KSAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTYXR1cmF0ZU1hdHJp
eChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhl
c2UgdmFsdWVzIGFyZSBjb21wdXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBm
YWxzZQorICAgIC8vIGZvciBhbW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTNm
ICsgMC43ODdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFt
b3VudDsKKyAgICBtYXRyaXhbMl0gPSAxLmYgLSAobWF0cml4WzBdICsgbWF0cml4WzFdKTsKKyAg
ICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIDAu
MjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyAwLjI4NWYgKiBhbW91bnQ7
CisgICAgbWF0cml4WzddID0gMS5mIC0gKG1hdHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0
cml4WzhdID0gbWF0cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gMC4yMTNm
ICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7Cisg
ICAgbWF0cml4WzEyXSA9IDEuZiAtIChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0
cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0g
bWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2
b2lkIGdldEh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBodWUsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7
CisgICAgZmxvYXQgY29zSHVlID0gY29zZihodWUgKiBwaUZsb2F0IC8gMTgwKTsKKyAgICBmbG9h
dCBzaW5IdWUgPSBzaW5mKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIG1hdHJpeFswXSA9IDAu
MjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsKKyAgICBtYXRyaXhbMV0g
PSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4
WzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmOworICAgIG1h
dHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gY29zSHVl
ICogMC4yMTNmICsgc2luSHVlICogMC4xNDNmOworICAgIG1hdHJpeFs2XSA9IDAuNzE1ZiArIGNv
c0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKKyAgICBtYXRyaXhbN10gPSAwLjA3MmYg
LSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7CisgICAgbWF0cml4WzhdID0gbWF0
cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmIC0g
c2luSHVlICogMC43ODdmOworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcx
NWYgKyBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4WzEyXSA9IDAuMDcyZiArIGNvc0h1ZSAq
IDAuOTI4ZiArIHNpbkh1ZSAqIDAuMDcyZjsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9
IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gMDsKKyAgICBt
YXRyaXhbMThdID0gMTsKKyAgICBtYXRyaXhbMTldID0gMDsKK30KKwordm9pZCBnZXRJbnZlcnRN
YXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldCht
YXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4
WzZdID0gbWF0cml4WzEyXSA9IDEgLSAyICogYW1vdW50OworICAgIG1hdHJpeFs0XSA9IG1hdHJp
eFs5XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9
CisKK3ZvaWQgZ2V0T3BhY2l0eU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsy
MF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAg
ICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gMTsKKyAgICBtYXRyaXhbMThd
ID0gYW1vdW50OworfQorCit2b2lkIGdldEdyYXlzY2FsZU1hdHJpeChmbG9hdCBhbW91bnQsIFNr
U2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhlc2UgdmFsdWVzIGFyZSBjb21w
dXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBmYWxzZQorICAgIC8vIGZvciBh
bW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTI2ZiArIDAuNzg3NGYgKiBhbW91
bnQ7CisgICAgbWF0cml4WzFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0
cml4WzJdID0gMS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNdID0g
bWF0cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1v
dW50OworICAgIG1hdHJpeFs2XSA9IDAuNzE1MmYgKyAwLjI4NDhmICogYW1vdW50OworICAgIG1h
dHJpeFs3XSA9IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9
IG1hdHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBh
bW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogYW1vdW50OworICAg
IG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJp
eFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0g
bWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2
b2lkIGdldFNlcGlhTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sK
KyAgICBtYXRyaXhbMF0gPSAwLjM5M2YgKyAwLjYwN2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzFd
ID0gMC43NjlmIC0gMC43NjlmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDAuMTg5ZiAtIDAu
MTg5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworCisgICAgbWF0
cml4WzVdID0gMC4zNDlmIC0gMC4zNDlmICogYW1vdW50OworICAgIG1hdHJpeFs2XSA9IDAuNjg2
ZiArIDAuMzE0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAwLjE2OGYgLSAwLjE2OGYgKiBh
bW91bnQ7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKworICAgIG1hdHJpeFsxMF0g
PSAwLjI3MmYgLSAwLjI3MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNTM0ZiAtIDAu
NTM0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMC4xMzFmICsgMC44NjlmICogYW1vdW50
OworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBt
YXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0g
PSAxOworfQorCitTa0ltYWdlRmlsdGVyKiBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihTa1NjYWxh
ciBtYXRyaXhbMjBdLCBTa0ltYWdlRmlsdGVyKiBpbnB1dCkKK3sKKyAgICBTa0F1dG9UVW5yZWY8
U2tDb2xvckZpbHRlcj4gY29sb3JGaWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4
KSk7CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXIoY29sb3JGaWx0ZXIs
IGlucHV0KTsKK30KKworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyOjpTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCkKK3sKK30KKworU2tJbWFnZUZpbHRl
ciogU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCit7
CisgICAgaWYgKCFlZmZlY3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgRmlsdGVyQnVpbGRl
ckhhc2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChlZmZlY3QpOworICAgIGlmIChpdCAh
PSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFNrSW1hZ2VG
aWx0ZXIqIGZpbHRlciA9IGVmZmVjdC0+Y3JlYXRlSW1hZ2VGaWx0ZXIodGhpcyk7CisgICAgbV9t
YXAuc2V0KGVmZmVjdCwgZmlsdGVyKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorCitTa0ltYWdl
RmlsdGVyKiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBvcGVyYXRpb25zKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZpbHRlciA9IDA7CisgICAg
U2tTY2FsYXIgbWF0cml4WzIwXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhdGlv
bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcCA9ICpv
cGVyYXRpb25zLmF0KGkpOworICAgICAgICBzd2l0Y2ggKG9wLmdldE9wZXJhdGlvblR5cGUoKSkg
eworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAg
ICBGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbio+KCZvcCktPmZpbHRlckVmZmVjdCgpOworICAgICAgICAgICAgLy8g
RklYTUU6IGhvb2sgdXAgcGFyZW50IGZpbHRlciB0byBpbWFnZSBzb3VyY2UKKyAgICAgICAgICAg
IGZpbHRlciA9IFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGZpbHRlckVmZmVjdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6R1JBWVNDQUxFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxj
b25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7Cisg
ICAgICAgICAgICBnZXRHcmF5c2NhbGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAg
ICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNFUElBOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAg
ICAgICBnZXRTZXBpYU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIg
PSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dFNhdHVyYXRlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNy
ZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7
CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRI
dWVSb3RhdGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3Jl
YXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogeworICAg
ICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0
SW52ZXJ0TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAg
ICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRP
cGFjaXR5TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBn
ZXRCcmlnaHRuZXNzTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9
IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDog
eworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAg
ICAgZ2V0Q29udHJhc3RNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVy
ID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
KyAgICAgICAgICAgIGZsb2F0IHBpeGVsUmFkaXVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbio+KCZvcCktPnN0ZERldmlhdGlvbigpLmdldEZsb2F0VmFsdWUoKTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IG5ldyBTa0JsdXJJbWFnZUZpbHRlcihwaXhlbFJhZGl1cywgcGl4
ZWxSYWRpdXMsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKy8vICAgICAgICAgICAgY29u
c3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wID0gKnN0YXRpY19jYXN0
PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmb3ApOworICAgICAgICAgICAgLy8g
RklYTUU6IGRvIG9mZnNldCBhbmQgYmx1cgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
VVNUT006CisgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkLgorI2VuZGlmCisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok5PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmlsdGVyOworfQorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiZDY4MzIwYjZhOTI5YzYxMDA5ODY4YjU3MTQ2ZDFkZjYy
NTk0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisjZGVmaW5lIFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworY2xhc3MgU2tJ
bWFnZUZpbHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmlsdGVyRWZmZWN0Owor
Y2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKKworY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlciB7
CitwdWJsaWM6CisgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlcigpOworCisgICAgU2tJbWFnZUZp
bHRlciogYnVpbGQoRmlsdGVyRWZmZWN0Kik7CisgICAgU2tJbWFnZUZpbHRlciogYnVpbGQoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYpOworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8Rmls
dGVyRWZmZWN0KiwgU2tJbWFnZUZpbHRlcio+IEZpbHRlckJ1aWxkZXJIYXNoTWFwOworICAgIEZp
bHRlckJ1aWxkZXJIYXNoTWFwIG1fbWFwOworfTsKKworfTsKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmZDA3
ZjRhODhkYjVjMjIxMGRiNzM3YWQxNzM1YWNhMjFjMTMyNTM2Li4xMWEyMWE2ZmYwZWI4ZGIxYWEz
OGY3YzYzMGI2YjRlMDA1ZjQwMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTIxNCw3ICsyMTQsOSBAQCBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIG9wZQogICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwogICAgICAgICBzd2l0Y2ggKGZp
bHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJl
bmNlRmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgc3RhdGljX2Nhc3Q8UmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKSk7CisgICAgICAgICAgICBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBlZmZl
Y3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJldmlvdXNFZmZlY3QsIHJlZmVy
ZW5jZU9wZXJhdGlvbik7CisgICAgICAgICAgICByZWZlcmVuY2VPcGVyYXRpb24tPnNldEZpbHRl
ckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjk5MDhhZjQyMDAyNzZjZjZhNDVlNjEzNDEwOGM5NDk1
YjdkMzZiMy4uNDVlYTI4MDk5YTAzYjIyNTZiNTEyZWU2MDE4OTE4NWUyM2Y3ZTNiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MTAyLDcgKzUxMDIsMTIg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgICAg
ICAvLyBmb3IgbG9hZGluZyBDU1Mgc2hhZGVyIGZpbGVzLgogICAgICAgICBpZiAoUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygpKQogICAgICAgICAg
ICAgZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoMCk7Ci0gICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBFYXJseS1yZXR1cm4gb25seSBpZiB3ZSAqZG9uJ3QqIGhhdmUgcmVmZXJlbmNlIGZpbHRl
cnMuCisgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZmlsdGVycywgd2Ugc3RpbGwgd2FudCB0aGUg
RmlsdGVyRWZmZWN0IGdyYXBoIGJ1aWx0CisgICAgICAgIC8vIGZvciB1cywgZXZlbiBpZiB3ZSdy
ZSBjb21wb3NpdGVkLgorICAgICAgICBpZiAoIXJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigp
Lmhhc1JlZmVyZW5jZUZpbHRlcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSBlbnN1cmVGaWx0ZXJJbmZv
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0RFUFMKaW5kZXggZWM5OGQ2ODUzNTIzMDA5MDU4YTJiMDE5ZWY4ZTkxYjhi
NmEzYTYyYS4uYTUwYWFiODVjZDNiODUwNmZmY2RiYTAwY2FmNTM0ODk4YmE5OGM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hyb21pdW1fc3Zu
JzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAnY2hyb21pdW1f
cmV2JzogJzE2MzI5NycKKyAgJ2Nocm9taXVtX3Jldic6ICcxNjM1NTcnCiB9CiAKIGRlcHMgPSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170735</attachid>
            <date>2012-10-25 14:57:20 -0700</date>
            <delta_ts>2012-10-25 15:04:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121025175552.patch</filename>
            <type>text/plain</type>
            <size>36294</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZGExZmViZGRiN2Zm
ZDUwOTgwYzViZTExZjA0NDYxNzA1YjZkMWU1Li5jYmVmOTlmYTkyM2JlNWFkNTg0OTliZTQ2MjZj
YmU3ODYzMmM0Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yNSAgSm9uYXRoYW4gQmFja2VyICA8YmFj
a2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDSFJPTUlVTTogQWRkIGEgbWV0aG9kIHRvIFdl
YkxheWVyVHJlZVZpZXcgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVhNzFiNTIxMWE0YWU4ZjBmZGJhMzY4
OGNlMGFhODQ0ZTdmNGI1NC4uMTBjMzc4NDNmYTE0MDc4YWM4ODVkYzI5MDdkOWIxZThiMzM1NmE3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTEwLTIzICBTdGVwaGVuIFdoaXRl
ICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtza2lhXSBJbXBsZW1lbnQg
cmVmZXJlbmNlICh1cmwpIGZpbHRlcnMgb24gY29tcG9zaXRlZCBsYXllcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGNzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgQWRkIG5ldyBmaWxl
cy4KKyAgICAgICAgKiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
ICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFzICJwcml2YXRlIi4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKToKKyAgICAgICAg
VXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWlsZGVyIGFuZCBzZXRMYXllcigpIGluZnJhc3Ry
dWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIGZpbHRlciBp
biB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VGaWx0ZXIpOgorICAgICAgICBBZGQg
Y3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBidWlsZGluZyBTa0ltYWdl
RmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0KToKKyAgICAg
ICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24s
IGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJs
ZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVy
IGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxh
dGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBjcmVhdGlvbiBvZiBTa0NvbG9yRmls
dGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisgICAgICAgIChXZWJDb3JlOjpGRUNv
bG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdl
RmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAg
IEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUdhdXNzaWFuQmx1ciBmaWx0
ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9n
eVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjcmVhdGVJbWFnZUZp
bHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRU1v
cnBob2xvZ3kgZmlsdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oOgorICAg
ICAgICBJbXBsZW1lbnQgbmV3IGhlbHBlciBjbGFzcyBmb3IgYnVpbGRpbmcgYW4gU2tJbWFnZUZp
bHRlciBEQUcgZnJvbQorICAgICAgICBhIEZpbHRlckVmZmVjdCBEQUcuICBDYW4gYWxzbyBidWls
ZCBmcm9tIEZpbHRlck9wZXJhdGlvbnMgbGlzdC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVy
ZXI6OmJ1aWxkKToKKyAgICAgICAgV2hlbiBidWlsZGluZyBGaWx0ZXJFZmZlY3RzIGZyb20gYSBy
ZWZlcmVuY2UgZmlsdGVyLCBhbHNvIHN0b3JlIHRoZQorICAgICAgICBnZW5lcmF0ZWQgREFHIG9u
IHRoZSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gaXRzZWxmLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
T3JSZW1vdmVGaWx0ZXJFZmZlY3QpOgorICAgICAgICBFdmVuIHdoZW4gaW4gY29tcG9zaXRlZCBt
b2RlLCBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgCisgICAgICAgIGNoYWlu
LCBidWlsZCB0aGUgRmlsdGVyRWZmZWN0IERBRyBmcm9tIGl0LgorCiAyMDEyLTEwLTI1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTMyMjY5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCmluZGV4IDdlYzUxNjU1NWVkMzlkODFlZDA5ODI5ZTNiZjIxNDMwNGQ0NGYw
ZmYuLmFhNjA4YWJmYTViOGIyMDU3Y2I4MzVlYzVmOWM5MWYzNzYzYzEwYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKIAogY2xhc3MgU2tNYXRyaXg0NDsKK2NsYXNzIFNrSW1hZ2VG
aWx0ZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7
CkBAIC0xMjUsNiArMTI2LDggQEAgcHVibGljOgogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMg
b2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJh
dGlvbnMmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyKFNrSW1hZ2VGaWx0ZXIq
KSA9IDA7CisKICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBpeGVscyB0aGF0IHNob3cgdGhyb3Vn
aCB0aGUgYmFja2dyb3VuZCBvZiB0aGlzIGxheWVyLgogICAgIC8vIE5vdGU6IFRoZXNlIGZpbHRl
cnMgYXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJzIHRoYXQgYXJlIGRyYXduIGRpcmVjdGx5CiAg
ICAgLy8gdG8gYSByb290IHJlbmRlciBzdXJmYWNlIHdpdGggYW4gb3BhcXVlIGJhY2tncm91bmQu
IFRoaXMgbWVhbnMgaWYgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5k
ZXggMjI2OWJlNzJjZjMzOTUwMTU4YWVlOWQ3ZjlhZmE0ZWQwYmEzOTRlMi4uM2MwNzBkMjFmNjEw
YTkzMGQ3NDIyMWI5ZmNlNDFjMWY0ZjAwMGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzJywK
ICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybScsCisgICAgICAnLi4vcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlJywKICAgICAgICcu
Li9wbGF0Zm9ybS9ncmFwaGljcy9za2lhJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOTIwNDEzMjAz
MjJlODM5ZDQyMThlZDVjZGE2MzBjY2U4MjljYTYyLi4wYmM1Y2YwN2U5MTM4NDY2NDg5MzQyZmIy
Yzk4MGJjYjA3YjM0ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MDU1LDYgKzUwNTUsOCBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1
clNraWEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVNb3JwaG9sb2d5U2tpYS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwNjk1ZDQ3NWEx
MDYxODk5MzI4OWUwMmFjZTYyYjNjNTUwMmRiZTUuLmM1OGQwZDQxZDRhMzk2NTdhMzk2ZDUzYmU5
YmE5NmM2Mzg4NzgwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIwOSw3ICsyMDksNyBAQAogCQkwOEM3QTJDNzEwREM3NDYy
MDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAvKiBT
VkdOYW1lcy5oICovOyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0MDBBNTcyOEQgLyogU1ZHQW5pbWF0
ZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEM4NTlCRjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhDOTI1MTkwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxNzBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0
LmNwcCAqLzsgfTsKLQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgw
RkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovOyB9OworCQkwOEM5MjUxQTBGQ0M3
QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZm
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRl
YXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
Q0EzRDQzMTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFy
T2ZmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDhENDZDRTMxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RDQ2Q0UyMTI3QUQ1
RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhFNEZFNDYwRTJCRDQxNDAwRjRDQUUw
IC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1
c3RvbS5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRl
eCBhNTk1ZGYyOGRhMTZhNDA1ZTRmYzQ4MzQ2NzczMGM3MmY1Y2VhNmVmLi5mMGQwNDczZmQ3YjJl
NjU0NjgwYzJkYjI5NzgyZmU5Y2QwY2Y4YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRT
a2lhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTa01hdHJpeDQ0
LmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlN5c3Rl
bVRpbWUuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViQW5pbWF0aW9uLmg+CkBAIC0zNzksMTUgKzM4MCwyNSBAQCBzdGF0aWMgYm9vbCBjb3B5V2Vi
Q29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3Bl
cmF0aQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgd2ViRmls
dGVyczsKLSAgICBpZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3Bl
cmF0aW9ucyhmaWx0ZXJzLCB3ZWJGaWx0ZXJzKSkgewotICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IGZpbHRlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFzIHRoZXkgYXJl
Ci0gICAgICAgIC8vIGdvaW5nIHRvIGZhbGxiYWNrIHRvIHNvZnR3YXJlIG1vZGUuCi0gICAgICAg
IG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKLSAg
ICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IEZvciBub3csIHdlIG9ubHkgdXNlIFNr
SW1hZ2VGaWx0ZXJzIGlmIHRoZXJlIGlzIGEgcmVmZXJlbmNlCisgICAgLy8gZmlsdGVyIGluIHRo
ZSBjaGFpbi4gT25jZSBhbGwgaXNzdWVzIGhhdmUgYmVlbiBpcm9uZWQgb3V0LCB3ZSBzaG91bGQK
KyAgICAvLyBzd2l0Y2ggYWxsIGZpbHRlcmluZyBvdmVyIHRvIHRoaXMgcGF0aCwgYW5kIHJlbW92
ZSBzZXRGaWx0ZXJzKCkgYW5kCisgICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBhbHRvZ2V0aGVy
LgorICAgIGlmIChmaWx0ZXJzLmhhc1JlZmVyZW5jZUZpbHRlcigpKSB7CisgICAgICAgIFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgU2tJbWFnZUZpbHRlciogaW1hZ2VG
aWx0ZXIgPSBidWlsZGVyLmJ1aWxkKGZpbHRlcnMpOworICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5zZXRGaWx0ZXIoaW1hZ2VGaWx0ZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkZpbHRl
ck9wZXJhdGlvbnMgd2ViRmlsdGVyczsKKyAgICAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9w
ZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKKyAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBw
bGF0Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKKyAgICAgICAgICAgIC8vIGdvaW5nIHRvIGZhbGxi
YWNrIHRvIHNvZnR3YXJlIG1vZGUuCisgICAgICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRG
aWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICBHcmFwaGljc0xheWVy
OjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyh3ZWJG
aWx0ZXJzKTsKICAgICB9Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyh3ZWJGaWx0
ZXJzKTsKICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhmaWx0ZXJzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuaAppbmRleCBlNThjOGEzZDAxZWRjNGE3ZGM4M2YwMGJkODIwMmQyMWE5ZTk2MDI0Li41Yzcx
YzJiNzI1MDY2NDcxYmM3MzgyYWRmMmNjZDEyYzk3NWUwOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaApAQCAtNTEsNiArNTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb2xvckFy
cmF5TGVuZ3RoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBs
eVNraWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAppbmRleCAyN2E0YWM4NDM4ZjlhOWUy
Njg0MzliYzMyZDJkZmQ4OTIxY2U0MWMzLi45OWI2NTBiOWMxZDg0NWMyNDQ5Nzk5MmJkZDFiYjQ5
MWZjY2JjMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwogI2lmIFVTRShTS0lBKQog
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFn
ZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2Vu
ZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IDdi
M2JkY2UyOTE3MzM2NzE2MGIyMTBlM2YwMzUyMjA1N2VhNjllZDcuLmRhZjNlZjE3YTJjMmY3OTc4
OTEwZWIwMTQxOWJhYTlmOGFiYTlkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTc1LDYgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhVaW50
OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVs
QXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6
ZSYgcGFpbnRTaXplKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1B
cHBseVNraWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVy
KFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogCiAgICAgZmxvYXQgbV9zdGRYOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmgKaW5kZXggMTlkYTYzNWEyZTAzYTYxYWYwNDA4ZWNkNGY5MGZkZTRiMGUwNDcz
MS4uYjM4ZTY3M2MzODIyMmM2NGI3ZWRmODMzNjg5ZGVjNjMwNzBjYWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3Jt
QXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRl
cihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CisKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDE2MjBhYmYxZTNkNWU2NmQxN2Q0NTE2ZTQ0OGY3
NTE5OWFiOGQwNGQuLjA2OWVkZTNlZWFkM2FmNzAyM2Q5ZTllOWQxY2FiNzNlODllMDBlNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaApAQCAtMzUsNiArMzUsMTAgQEAKIAogc3RhdGljIGNvbnN0IGZsb2F0IGtN
YXhGaWx0ZXJTaXplID0gNTAwMC4wZjsKIAorI2lmIFVTRShTS0lBKQorY2xhc3MgU2tJbWFnZUZp
bHRlcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKQEAg
LTQyLDYgKzQ2LDEwIEBAIGNsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwog
Y2xhc3MgVGV4dFN0cmVhbTsKIAorI2lmIFVTRShTS0lBKQorY2xhc3MgU2tpYUltYWdlRmlsdGVy
QnVpbGRlcjsKKyNlbmRpZgorCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+
IEZpbHRlckVmZmVjdFZlY3RvcjsKIAogZW51bSBGaWx0ZXJFZmZlY3RUeXBlIHsKQEAgLTk1LDYg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgPSAwOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tp
YSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJ
bWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKikgeyByZXR1cm4gMDsgfQogI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4
IGFmNDRlMzYwMmY3MDE4MmQxOGUwNzUyMTBlOTZmYWRkZjVhNGI2OTYuLmI0OWFmZDYxMjcxNDU2
MzU2NmUzYmExNDUyMTZhMzdkODk5NWEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAogI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNp
bmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xNzQsNiArMTc1
LDggQEAgcHVibGljOgogCiAgICAgRGF0YSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0RGF0YShQYXNzT3duUHRyPERhdGE+IGRhdGEpIHsgbV9kYXRh
ID0gZGF0YTsgfQorICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KSB7IG1fZmlsdGVyRWZmZWN0ID0gZmls
dGVyRWZmZWN0OyB9CiAKIHByaXZhdGU6CiAKQEAgLTE5NSw2ICsxOTgsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKICAgICBPd25QdHI8RGF0
YT4gbV9kYXRhOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZmlsdGVyRWZmZWN0OwogfTsK
IAogLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUgYW5kIEhVRV9ST1RBVEUgYXJlIHZhcmlh
dGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZmZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tp
YS5jcHAKaW5kZXggZmRjYTQzMmY0ZDM0OGExYjk3ZDQ4NzJmNWFiNmMzMTViNTY0NzA0MS4uODA4
OWYzYjUwZDYwNTk2ZmZiODQ2OWE1NGI1YjNlNGY4OGYxYjg2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVu
ZFNraWEuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgi
CiAjaW5jbHVkZSAiU2tCaXRtYXBTb3VyY2UuaCIKICNpbmNsdWRlICJTa0JsZW5kSW1hZ2VGaWx0
ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtODQsNiArODUsMTQgQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5
U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQmxlbmQ6OmNy
ZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAg
U2tJbWFnZUZpbHRlciogZm9yZWdyb3VuZCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDAp
KTsKKyAgICBTa0ltYWdlRmlsdGVyKiBiYWNrZ3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRF
ZmZlY3QoMSkpOworICAgIFNrQmxlbmRJbWFnZUZpbHRlcjo6TW9kZSBtb2RlID0gdG9Ta2lhTW9k
ZShtX21vZGUpOworICAgIHJldHVybiBuZXcgU2tCbGVuZEltYWdlRmlsdGVyKG1vZGUsIGJhY2tn
cm91bmQsIGZvcmVncm91bmQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3Bw
CmluZGV4IDBmZDA3Nzc2ZTAzMDczMDhhMTE4YTYzMDk2MDQzZTBmOWE1MDUzZWIuLmRmMDEzYmI3
N2IwZDBkYWRhYzRlN2E1MTdlMGJmZGJmMDkzN2U2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29s
b3JNYXRyaXhTa2lhLmNwcApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkZFQ29sb3JNYXRy
aXguaCIKIAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUgIlNrQ29sb3JG
aWx0ZXJJbWFnZUZpbHRlci5oIgogI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNp
bmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtODAsMjQgKzgyLDE1IEBAIHN0YXRpYyB2b2lkIGx1bWluYW5jZVRvQWxwaGFNYXRyaXgo
U2tTY2FsYXIgbWF0cml4WzIwXSkKICAgICBtYXRyaXhbMTddID0gMC4wNzIxZjsKIH0KIAotYm9v
bCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCitzdGF0aWMgU2tDb2xvckZpbHRl
ciogY3JlYXRlQ29sb3JGaWx0ZXIoQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IGZsb2F0KiB2
YWx1ZXMpCiB7Ci0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0
IGltYWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0KICAg
ICBTa1NjYWxhciBtYXRyaXhbMjBdOwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMjA7ICsraSkKLSAgICAgICAgICAgIG1hdHJpeFtpXSA9IG1fdmFs
dWVzW2ldOworICAgICAgICAgICAgbWF0cml4W2ldID0gdmFsdWVzW2ldOwogCiAgICAgICAgIG1h
dHJpeFs0XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBtYXRyaXhbOV0gKj0gU2tTY2FsYXIo
MjU1KTsKQEAgLTEwNSwxNSArOTgsMjkgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U2tpYSgpCiAgICAgICAgIG1hdHJpeFsxOV0gKj0gU2tTY2FsYXIoMjU1KTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6IAotICAgICAgICBz
YXR1cmF0ZU1hdHJpeChtX3ZhbHVlc1swXSwgbWF0cml4KTsKKyAgICAgICAgc2F0dXJhdGVNYXRy
aXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JN
QVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIGh1ZVJvdGF0ZU1hdHJpeChtX3ZhbHVlc1sw
XSwgbWF0cml4KTsKKyAgICAgICAgaHVlUm90YXRlTWF0cml4KHZhbHVlc1swXSwgbWF0cml4KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9B
TFBIQToKICAgICAgICAgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChtYXRyaXgpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCk7
Cit9CisKK2Jvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIElt
YWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAg
aWYgKCFyZXN1bHRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOworCisgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9p
bnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOworCisgICAgU2tBdXRvVFVucmVmPFNr
Q29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRh
dGEoKSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCkt
PmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgTmF0aXZlSW1hZ2VTa2lhKiBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMTIy
LDEyICsxMjksMTkgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAK
ICAgICBTa0NhbnZhcyogY2FudmFzID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOwogICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29s
b3JGaWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KSktPnVucmVmKCk7CisgICAg
cGFpbnQuc2V0Q29sb3JGaWx0ZXIoZmlsdGVyKTsKICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUo
U2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKICAgICBjYW52YXMtPmRyYXdCaXRtYXAobmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLCAwLCAwLCAmcGFpbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCitTa0lt
YWdlRmlsdGVyKiBGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBp
bnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkpOworICAgIFNrQXV0b1RVbnJlZjxT
a0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5k
YXRhKCkpKTsKKyAgICByZXR1cm4gbmV3IFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlcihmaWx0ZXIs
IGlucHV0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEZJTFRFUlMpICYmIFVTRShTS0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lh
LmNwcAppbmRleCBiNjk0YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1Li5mNWY0
NmRhZWRjYTNiNTNlZjEzNGY1N2Q2ZDY5MTgxNWFlM2Y5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVHYXVzc2lhbkJsdXJTa2lhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCIKICNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5o
IgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02MSw1ICs2MiwxMSBAQCBib29sIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFw
cGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVy
KQoreworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWls
ZChpbnB1dEVmZmVjdCgwKSkpOworICAgIHJldHVybiBuZXcgU2tCbHVySW1hZ2VGaWx0ZXIoU2tG
bG9hdFRvU2NhbGFyKG1fc3RkWCksIFNrRmxvYXRUb1NjYWxhcihtX3N0ZFkpLCBpbnB1dCk7Cit9
CisKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAppbmRleCBl
NzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJkYjA1Li5iMmU5ZjRmY2ZiN2UzZWFm
MjIxOWFjNDU2YzU3ZjI4NWU4Mzc1OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNr
aWEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCiAKICNp
bmNsdWRlICJTa01vcnBob2xvZ3lJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Miw1ICs2MywxNSBA
QCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0cnVl
OwogfQogCitTa0ltYWdlRmlsdGVyKiBGRU1vcnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKFNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tBdXRvVFVucmVmPFNrSW1h
Z2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKSk7CisgICAgU2tT
Y2FsYXIgcmFkaXVzWCA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1gpOworICAgIFNrU2NhbGFy
IHJhZGl1c1kgPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRpdXNZKTsKKyAgICBpZiAobV90eXBlID09
IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUpCisgICAgICAgIHJldHVybiBuZXcgU2tEaWxh
dGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7CisgICAgcmV0dXJuIG5ldyBT
a0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQpOworfQorCiB9OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDhlMDI3YjgwMjdkYWUzMWNhMjA4N2ZjOWI2NjNiY2UwYzIwNjZlYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9T
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcApAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCisKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCisj
aW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yRmlsdGVySW1h
Z2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCisjaW5jbHVkZSAi
U2tNYXRyaXguaCIKKworbmFtZXNwYWNlIHsKKwordm9pZCBnZXRCcmlnaHRuZXNzTWF0cml4KGZs
b2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0cml4LCAw
LCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIC8vICAgIE9sZCBpbXBsZW1lbnRhdGlvbiwg
YSBsYSB0aGUgZHJhZnQgc3BlYywgYSBzdHJhaWdodC11cCBzY2FsZSwKKyAgICAvLyAgICByZXBy
ZXNlbnRpbmcgPGZlRnVuY1tSfEd8Ql0gdHlwZT0ibGluZWFyIiBzbG9wZT0iW2Ftb3VudF0iPgor
ICAgIC8vICAgIChTZWUgaHR0cDovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2Zp
bHRlcnMvaW5kZXguaHRtbCNicmlnaHRuZXNzRXF1aXZhbGVudCkKKyAgICAvLyBtYXRyaXhbMF0g
PSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIC8vIG1hdHJpeFsxOF0gPSAx
OworICAgIC8vICAgIE5ldyBpbXBsZW1lbnRhdGlvbiwgYSB0cmFuc2xhdGlvbiBpbiBjb2xvciBz
cGFjZSwgcmVwcmVzZW50aW5nCisgICAgLy8gICAgPGZlRnVuY1tSfEd8Ql0gdHlwZT0ibGluZWFy
IiBpbnRlcmNlcHQ9IlthbW91bnRdIi8+CisgICAgLy8gICAgKFNlZSBodHRwczovL3d3dy53My5v
cmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTE1NjQ3KQorICAgIG1hdHJpeFswXSA9IG1h
dHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBtYXRyaXhbMThdID0gMTsKKyAgICBtYXRyaXhbNF0gPSBt
YXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gYW1vdW50ICogMjU1OworfQorCit2b2lkIGdldENvbnRy
YXN0TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1z
ZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9IG1h
dHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAgbWF0cml4WzRdID0gbWF0cml4Wzld
ID0gbWF0cml4WzE0XSA9ICgtMC41ZiAqIGFtb3VudCArIDAuNWYpICogMjU1OworICAgIG1hdHJp
eFsxOF0gPSAxOworfQorCit2b2lkIGdldFNhdHVyYXRlTWF0cml4KGZsb2F0IGFtb3VudCwgU2tT
Y2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1ZXMgYXJlIGNvbXB1
dGVkIHRvIGVuc3VyZSBtYXRyaXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisgICAgLy8gZm9yIGFt
b3VudCBpbiBbMC4uMV0KKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyAwLjc4N2YgKiBhbW91bnQ7
CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJpeFsy
XSA9IDEuZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhbMV0pOworICAgIG1hdHJpeFszXSA9IG1hdHJp
eFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50OworICAg
IG1hdHJpeFs2XSA9IDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAx
LmYgLSAobWF0cml4WzVdICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0g
PSAwOworICAgIG1hdHJpeFsxMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7CisgICAgbWF0
cml4WzExXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMS5m
IC0gKG1hdHJpeFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0
XSA9IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gbWF0cml4
WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0SHVlUm90YXRlTWF0
cml4KGZsb2F0IGh1ZSwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBmbG9hdCBjb3NIdWUg
PSBjb3NmKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIGZsb2F0IHNpbkh1ZSA9IHNpbmYoaHVl
ICogcGlGbG9hdCAvIDE4MCk7CisgICAgbWF0cml4WzBdID0gMC4yMTNmICsgY29zSHVlICogMC43
ODdmIC0gc2luSHVlICogMC4yMTNmOworICAgIG1hdHJpeFsxXSA9IDAuNzE1ZiAtIGNvc0h1ZSAq
IDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZjsKKyAgICBtYXRyaXhbMl0gPSAwLjA3MmYgLSBjb3NI
dWUgKiAwLjA3MmYgKyBzaW5IdWUgKiAwLjkyOGY7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRd
ID0gMDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgKyBzaW5IdWUg
KiAwLjE0M2Y7CisgICAgbWF0cml4WzZdID0gMC43MTVmICsgY29zSHVlICogMC4yODVmICsgc2lu
SHVlICogMC4xNDBmOworICAgIG1hdHJpeFs3XSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiAt
IHNpbkh1ZSAqIDAuMjgzZjsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0gPSAwOworICAgIG1h
dHJpeFsxMF0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2Y7Cisg
ICAgbWF0cml4WzExXSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAuNzE1
ZjsKKyAgICBtYXRyaXhbMTJdID0gMC4wNzJmICsgY29zSHVlICogMC45MjhmICsgc2luSHVlICog
MC4wNzJmOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKyAgICBtYXRyaXhbMTVd
ID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworICAg
IG1hdHJpeFsxOV0gPSAwOworfQorCit2b2lkIGdldEludmVydE1hdHJpeChmbG9hdCBhbW91bnQs
IFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXpl
b2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0g
MSAtIDIgKiBhbW91bnQ7CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0XSA9
IGFtb3VudCAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRPcGFjaXR5
TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQo
bWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9IG1hdHJp
eFs2XSA9IG1hdHJpeFsxMl0gPSAxOworICAgIG1hdHJpeFsxOF0gPSBhbW91bnQ7Cit9CisKK3Zv
aWQgZ2V0R3JheXNjYWxlTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkK
K3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIHRvIGVuc3VyZSBtYXRy
aXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisgICAgLy8gZm9yIGFtb3VudCBpbiBbMC4uMV0KKyAg
ICBtYXRyaXhbMF0gPSAwLjIxMjZmICsgMC43ODc0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0g
PSAwLjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0gPSAxLmYgLSAobWF0
cml4WzBdICsgbWF0cml4WzFdKTsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworCisg
ICAgbWF0cml4WzVdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzZd
ID0gMC43MTUyZiArIDAuMjg0OGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzddID0gMS5mIC0gKG1h
dHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKwor
ICAgIG1hdHJpeFsxMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhb
MTFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEyXSA9IDEuZiAt
IChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsxNF0g
PSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gbWF0cml4
WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0U2VwaWFNYXRyaXgo
ZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1hdHJpeFswXSA9IDAu
MzkzZiArIDAuNjA3ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0gPSAwLjc2OWYgLSAwLjc2OWYg
KiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMC4xODlmIC0gMC4xODlmICogYW1vdW50OworICAg
IG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisKKyAgICBtYXRyaXhbNV0gPSAwLjM0OWYgLSAw
LjM0OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzZdID0gMC42ODZmICsgMC4zMTRmICogYW1vdW50
OworICAgIG1hdHJpeFs3XSA9IDAuMTY4ZiAtIDAuMTY4ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhb
OF0gPSBtYXRyaXhbOV0gPSAwOworCisgICAgbWF0cml4WzEwXSA9IDAuMjcyZiAtIDAuMjcyZiAq
IGFtb3VudDsKKyAgICBtYXRyaXhbMTFdID0gMC41MzRmIC0gMC41MzRmICogYW1vdW50OworICAg
IG1hdHJpeFsxMl0gPSAwLjEzMWYgKyAwLjg2OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEzXSA9
IG1hdHJpeFsxNF0gPSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhb
MTddID0gbWF0cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK1NrSW1hZ2VG
aWx0ZXIqIGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKFNrU2NhbGFyIG1hdHJpeFsyMF0sIFNrSW1h
Z2VGaWx0ZXIqIGlucHV0KQoreworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBjb2xv
ckZpbHRlcihuZXcgU2tDb2xvck1hdHJpeEZpbHRlcihtYXRyaXgpKTsKKyAgICByZXR1cm4gbmV3
IFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlcihjb2xvckZpbHRlciwgaW5wdXQpOworfQorCit9Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIoKQoreworfQorCitTa0ltYWdlRmlsdGVyKiBTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyOjpidWlsZChGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKK3sKKyAgICBpZiAoIWVmZmVjdCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGaWx0ZXJCdWlsZGVySGFzaE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX21hcC5maW5kKGVmZmVjdCk7CisgICAgaWYgKGl0ICE9IG1fbWFwLmVuZCgpKQorICAg
ICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgU2tJbWFnZUZpbHRlciogZmlsdGVyID0gZWZm
ZWN0LT5jcmVhdGVJbWFnZUZpbHRlcih0aGlzKTsKKyAgICBtX21hcC5zZXQoZWZmZWN0LCBmaWx0
ZXIpOworICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK1NrSW1hZ2VGaWx0ZXIqIFNraWFJbWFnZUZp
bHRlckJ1aWxkZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCit7
CisgICAgU2tJbWFnZUZpbHRlciogZmlsdGVyID0gMDsKKyAgICBTa1NjYWxhciBtYXRyaXhbMjBd
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewor
ICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG9wID0gKm9wZXJhdGlvbnMuYXQoaSk7Cisg
ICAgICAgIHN3aXRjaCAob3AuZ2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKKyAgICAgICAgICAgIEZpbHRlckVmZmVjdCogZmls
dGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4o
Jm9wKS0+ZmlsdGVyRWZmZWN0KCk7CisgICAgICAgICAgICAvLyBGSVhNRTogaG9vayB1cCBwYXJl
bnQgZmlsdGVyIHRvIGltYWdlIHNvdXJjZQorICAgICAgICAgICAgZmlsdGVyID0gU2tpYUltYWdl
RmlsdGVyQnVpbGRlcjo6YnVpbGQoZmlsdGVyRWZmZWN0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKKyAg
ICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEdyYXlz
Y2FsZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVN
YXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKKyAgICAgICAg
ICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldFNlcGlhTWF0cml4
KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdl
RmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogeworICAgICAgICAgICAgZmxv
YXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0U2F0dXJhdGVNYXRyaXgoYW1v
dW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0
ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgICAgIGZsb2F0
IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEh1ZVJvdGF0ZU1hdHJpeChhbW91
bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRl
cihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91
bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRJbnZlcnRNYXRyaXgoYW1vdW50
LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIo
bWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3Vu
dCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldE9wYWNpdHlNYXRyaXgoYW1vdW50
LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIo
bWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKKyAgICAgICAgICAgIGZsb2F0IGFt
b3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEJyaWdodG5lc3NNYXRyaXgo
YW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VG
aWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7CisgICAgICAgICAgICBmbG9h
dCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRDb250cmFzdE1hdHJp
eChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFn
ZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICAgICAgZmxvYXQg
cGl4ZWxSYWRpdXMgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oJm9w
KS0+c3RkRGV2aWF0aW9uKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICAgICAgZmlsdGVyID0g
bmV3IFNrQmx1ckltYWdlRmlsdGVyKHBpeGVsUmFkaXVzLCBwaXhlbFJhZGl1cywgZmlsdGVyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpEUk9QX1NIQURPVzogeworLy8gICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uJiBkcm9wU2hhZG93T3AgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0Zp
bHRlck9wZXJhdGlvbio+KCZvcCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gb2Zmc2V0IGFu
ZCBibHVyCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTToKKyAgICAgICAgICAg
IC8vIE5vdCBzdXBwb3J0ZWQuCisjZW5kaWYKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlBBU1NUSFJPVUdIOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmaWx0ZXI7Cit9CisK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yN2JkNjgzMjBiNmE5MjljNjEwMDk4NjhiNTcxNDZkMWRmNjI1OTQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJ
bWFnZUZpbHRlckJ1aWxkZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyX2gKKyNkZWZpbmUgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitjbGFzcyBTa0ltYWdlRmlsdGVyOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGaWx0ZXJFZmZlY3Q7CitjbGFzcyBGaWx0ZXJPcGVyYXRp
b25zOworCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICBTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyKCk7CisKKyAgICBTa0ltYWdlRmlsdGVyKiBidWlsZChGaWx0ZXJF
ZmZlY3QqKTsKKyAgICBTa0ltYWdlRmlsdGVyKiBidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25z
Jik7Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxGaWx0ZXJFZmZlY3QqLCBTa0ltYWdl
RmlsdGVyKj4gRmlsdGVyQnVpbGRlckhhc2hNYXA7CisgICAgRmlsdGVyQnVpbGRlckhhc2hNYXAg
bV9tYXA7Cit9OworCit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGI0OTJhNmFkMzljNjZlOTlmMmZlY2Mx
MzJmNGNjNDUyNWQxOTAwZGYuLmE4YWZlMGYwZTU5NTViZTdlN2IzNDk3OGMwMDhhMmU3ODg0NTBl
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtMjE2LDcgKzIxNiw5IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1
aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAg
ICAgIEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uID0gb3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXQoaSkuZ2V0KCk7CiAgICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRP
cGVyYXRpb25UeXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5D
RTogewotICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VGaWx0ZXIoZG9jdW1lbnQs
IHByZXZpb3VzRWZmZWN0LCBzdGF0aWNfY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPihm
aWx0ZXJPcGVyYXRpb24pKTsKKyAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiog
cmVmZXJlbmNlT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
Kj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNl
RmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgcmVmZXJlbmNlT3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgIHJlZmVyZW5jZU9wZXJhdGlvbi0+c2V0RmlsdGVyRWZmZWN0KGVmZmVjdCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6R1JBWVNDQUxFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA2OTkwOGFmNDIwMDI3NmNmNmE0NWU2MTM0MTA4Yzk0OTViN2QzNmIzLi40NWVhMjgwOTlh
MDNiMjI1NmI1MTJlZTYwMTg5MTg1ZTIzZjdlM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTUxMDIsNyArNTEwMiwxMiBAQCB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCgpCiAgICAgICAgIC8vIGZvciBsb2FkaW5nIENT
UyBzaGFkZXIgZmlsZXMuCiAgICAgICAgIGlmIChSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRl
ckluZm8gPSB0aGlzLT5maWx0ZXJJbmZvKCkpCiAgICAgICAgICAgICBmaWx0ZXJJbmZvLT5zZXRS
ZW5kZXJlcigwKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEVhcmx5LXJldHVybiBv
bmx5IGlmIHdlICpkb24ndCogaGF2ZSByZWZlcmVuY2UgZmlsdGVycy4KKyAgICAgICAgLy8gRm9y
IHJlZmVyZW5jZSBmaWx0ZXJzLCB3ZSBzdGlsbCB3YW50IHRoZSBGaWx0ZXJFZmZlY3QgZ3JhcGgg
YnVpbHQKKyAgICAgICAgLy8gZm9yIHVzLCBldmVuIGlmIHdlJ3JlIGNvbXBvc2l0ZWQuCisgICAg
ICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkuaGFzUmVmZXJlbmNlRmlsdGVy
KCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJlbmRlckxheWVyRmls
dGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170739</attachid>
            <date>2012-10-25 15:04:51 -0700</date>
            <delta_ts>2012-10-29 16:52:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121025180324.patch</filename>
            <type>text/plain</type>
            <size>36287</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZGExZmViZGRiN2Zm
ZDUwOTgwYzViZTExZjA0NDYxNzA1YjZkMWU1Li5jYmVmOTlmYTkyM2JlNWFkNTg0OTliZTQ2MjZj
YmU3ODYzMmM0Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yNSAgSm9uYXRoYW4gQmFja2VyICA8YmFj
a2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDSFJPTUlVTTogQWRkIGEgbWV0aG9kIHRvIFdl
YkxheWVyVHJlZVZpZXcgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVhNzFiNTIxMWE0YWU4ZjBmZGJhMzY4
OGNlMGFhODQ0ZTdmNGI1NC4uZTg4MzhlMzVhMTQ0MjI3YjhkNzRjMGY5NDA5Zjk1ZDk4MDk5MjMw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTEwLTIzICBTdGVwaGVuIFdoaXRl
ICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtza2lhXSBJbXBsZW1lbnQg
cmVmZXJlbmNlICh1cmwpIGZpbHRlcnMgb24gY29tcG9zaXRlZCBsYXllcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGNzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgQWRkIG5ldyBmaWxl
cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IE1hcmsgRmlsdGVyRWZmZWN0LmggYXMgInByaXZhdGUiLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMpOgorICAgICAgICBVc2UgdGhl
IG5ldyBTa0ltYWdlRmlsdGVyIGJ1aWxkZXIgYW5kIHNldExheWVyKCkgaW5mcmFzdHJ1Y3R1cmUs
IGJ1dAorICAgICAgICBvbmx5IGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRoZSBj
aGFpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEFkZCBjcmVhdGVJ
bWFnZUZpbHRlcigpIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIFNrSW1hZ2VGaWx0ZXJz
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbjo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpzZXRGaWx0ZXJFZmZlY3QpOgorICAgICAgICBBZGQg
YSBGaWx0ZXJFZmZlY3QgbWVtYmVyIHRvIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiwgYW5kIGFj
Y2Vzc29ycworICAgICAgICBmb3IgaXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNy
ZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRp
bmcgZm9yIEZFQmxlbmQgZmlsdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVD
b2xvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U2tpYSk6CisgICAgICAgIFJlZmFjdG9yIGNyZWF0aW9uIG9mIFNrQ29sb3JGaWx0ZXIgZnJv
bSBhbiBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRy
aXg6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFQ29sb3JNYXRyaXggZmlsdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVt
ZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFR2F1c3NpYW5CbHVyIGZpbHRlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKToK
KyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9n
eSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJ
bWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFn
ZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIElt
cGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZvciBidWlsZGluZyBhbiBTa0ltYWdlRmlsdGVyIERB
RyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZmZWN0IERBRy4gIENhbiBhbHNvIGJ1aWxkIGZyb20g
RmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5nIEZpbHRlckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5j
ZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisgICAgICAgIGdlbmVyYXRlZCBEQUcgb24gdGhlIFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNlbGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92
ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2ZW4gd2hlbiBpbiBjb21wb3NpdGVkIG1vZGUsIGlm
IHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRoZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxk
IHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20gaXQuCisKIDIwMTItMTAtMjUgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMzIyNjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmgKaW5kZXggN2VjNTE2NTU1ZWQzOWQ4MWVkMDk4MjllM2JmMjE0MzA0ZDQ0ZjBmZi4uYWE2
MDhhYmZhNWI4YjIwNTdjYjgzNWVjNWY5YzkxZjM3NjNjMTBhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IldlYlZlY3Rvci5oIgogCiBjbGFzcyBTa01hdHJpeDQ0OworY2xhc3MgU2tJbWFnZUZpbHRlcjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKQEAgLTEy
NSw2ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBvYmplY3Qu
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYp
ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXIoU2tJbWFnZUZpbHRlciopID0gMDsK
KwogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4ZWxzIHRoYXQgc2hvdyB0aHJvdWdoIHRoZSBi
YWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCiAgICAgLy8gTm90ZTogVGhlc2UgZmlsdGVycyBhcmUg
b25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBhcmUgZHJhd24gZGlyZWN0bHkKICAgICAvLyB0
byBhIHJvb3QgcmVuZGVyIHN1cmZhY2Ugd2l0aCBhbiBvcGFxdWUgYmFja2dyb3VuZC4gVGhpcyBt
ZWFucyBpZiBhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCAyMjY5
YmU3MmNmMzM5NTAxNThhZWU5ZDdmOWFmYTRlZDBiYTM5NGUyLi4zYzA3MGQyMWY2MTBhOTMwZDc0
MjIxYjlmY2U0MWMxZjRmMDAwZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cApAQCAtMTEzLDYgKzExMyw3IEBACiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMnLAogICAgICAg
Jy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtJywKKyAgICAgICcuLi9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2dwdScs
CiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUnLAogICAgICAgJy4uL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5MjA0MTMyMDMyMmU4Mzlk
NDIxOGVkNWNkYTYzMGNjZTgyOWNhNjIuLjBiYzVjZjA3ZTkxMzg0NjY0ODkzNDJmYjJjOTgwYmNi
MDdiMzRkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUwNTUsNiArNTA1NSw4IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBo
b2xvZ3lTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjA2OTVkNDc1YTEwNjE4OTkz
Mjg5ZTAyYWNlNjJiM2M1NTAyZGJlNS4uYzU4ZDBkNDFkNGEzOTY1N2EzOTZkNTNiZTliYTk2YzYz
ODg3ODBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjA5LDcgKzIwOSw3IEBACiAJCTA4QzdBMkM3MTBEQzc0NjIwMDJEMzY4
QiAvKiBTVkdOYW1lcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTkwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR05hbWVz
LmggKi87IH07CiAJCTA4Qzg1OUMwMTI3NDU3NTQwMEE1NzI4RCAvKiBTVkdBbmltYXRlZFJlY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Qzg1OUJG
MTI3NDU3NTMwMEE1NzI4RCAvKiBTVkdBbmltYXRlZFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEM5MjUxOTBGQ0M3QzRBMDA0ODBERUMg
LyogRmlsdGVyRWZmZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICov
OyB9OwotCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRB
MDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi87IH07CisJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4
MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOENBM0Q0
NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50VGVhck9mZi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDQTNENDMx
Mjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmYuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEQ0NkNF
MzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhENDZDRTIxMjdBRDVGQzAwODk2
OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEU0RkU0NjBFMkJENDE0MDBGNENBRTAgLyogSlNT
VkdMZW5ndGhDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDhFNEZFNDUwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNw
cCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGE1OTVk
ZjI4ZGExNmE0MDVlNGZjNDgzNDY3NzMwYzcyZjVjZWE2ZWYuLmYwZDA0NzNmZDdiMmU2NTQ2ODBj
MmRiMjk3ODJmZTljZDBjZjhiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIK
ICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKKyNp
bmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5o
IgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmlt
YXRpb24uaD4KQEAgLTM3OSwxNSArMzgwLDI1IEBAIHN0YXRpYyBib29sIGNvcHlXZWJDb3JlRmls
dGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpCiAK
IGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgV2ViRmlsdGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOwot
ICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25z
KGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVy
cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKLSAgICAg
ICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXll
ci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwotICAgICAgICBH
cmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgd2Ugb25seSB1c2UgU2tJbWFnZUZp
bHRlcnMgaWYgdGhlcmUgaXMgYSByZWZlcmVuY2UKKyAgICAvLyBmaWx0ZXIgaW4gdGhlIGNoYWlu
LiBPbmNlIGFsbCBpc3N1ZXMgaGF2ZSBiZWVuIGlyb25lZCBvdXQsIHdlIHNob3VsZAorICAgIC8v
IHN3aXRjaCBhbGwgZmlsdGVyaW5nIG92ZXIgdG8gdGhpcyBwYXRoLCBhbmQgcmVtb3ZlIHNldEZp
bHRlcnMoKSBhbmQKKyAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIGFsdG9nZXRoZXIuCisgICAg
aWYgKGZpbHRlcnMuaGFzUmVmZXJlbmNlRmlsdGVyKCkpIHsKKyAgICAgICAgU2tpYUltYWdlRmls
dGVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBTa0ltYWdlRmlsdGVyKiBpbWFnZUZpbHRlciA9
IGJ1aWxkZXIuYnVpbGQoZmlsdGVycyk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZp
bHRlcihpbWFnZUZpbHRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0
aW9ucyB3ZWJGaWx0ZXJzOworICAgICAgICBpZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9u
c1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0ZXJzLCB3ZWJGaWx0ZXJzKSkgeworICAgICAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRmb3Jt
IGxheWVyLCBhcyB0aGV5IGFyZQorICAgICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8g
c29mdHdhcmUgbW9kZS4KKyAgICAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMo
V2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZp
bHRlcnMoRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMp
OwogICAgIH0KLSAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwog
ICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmlu
ZGV4IGU1OGM4YTNkMDFlZGM0YTdkYzgzZjAwYmQ4MjAyZDIxYTllOTYwMjQuLjVjNzFjMmI3MjUw
NjY0NzFiYzczODJhZGYyY2NkMTJjOTc1ZTA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5n
dGgpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgp
OworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdl
RmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCmluZGV4IDI3YTRhYzg0MzhmOWE5ZTI2ODQzOWJj
MzJkMmRmZDg5MjFjZTQxYzMuLjk5YjY1MGI5YzFkODQ1YzI0NDk3OTkyYmRkMWJiNDkxZmNjYmMz
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVy
KiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggN2IzYmRjZTI5
MTczMzY3MTYwYjIxMGUzZjAzNTIyMDU3ZWE2OWVkNy4uZGFmM2VmMTdhMmMyZjc5Nzg5MTBlYjAx
NDE5YmFhOWY4YWJhOWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNzUsNiArNzUsNyBAQCBw
cml2YXRlOgogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwg
dW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWlu
dFNpemUpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tp
YSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUlt
YWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAKICAgICBmbG9hdCBtX3N0ZFg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xv
Z3kuaAppbmRleCAxOWRhNjM1YTJlMDNhNjFhZjA0MDhlY2Q0ZjkwZmRlNGIwZTA0NzMxLi5iMzhl
NjczYzM4MjIyYzY0YjdlZGY4MzM2ODlkZWM2MzA3MGNhZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKQEAg
LTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNr
aWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIqKTsKKwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggMTYyMGFiZjFlM2Q1ZTY2ZDE3ZDQ1MTZlNDQ4Zjc1MTk5YWI4
ZDA0ZC4uMDY5ZWRlM2VlYWQzYWY3MDIzZDllOWU5ZDFjYWI3M2U4OWUwMGU3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC0zNSw2ICszNSwxMCBAQAogCiBzdGF0aWMgY29uc3QgZmxvYXQga01heEZpbHRl
clNpemUgPSA1MDAwLjBmOwogCisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa0ltYWdlRmlsdGVyOwor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwpAQCAtNDIsNiAr
NDYsMTAgQEAgY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBU
ZXh0U3RyZWFtOwogCisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVy
OworI2VuZGlmCisKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVy
RWZmZWN0VmVjdG9yOwogCiBlbnVtIEZpbHRlckVmZmVjdFR5cGUgewpAQCAtOTUsNiArMTAzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7
CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmls
dGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYWY0NGUz
NjAyZjcwMTgyZDE4ZTA3NTIxMGU5NmZhZGRmNWE0YjY5Ni4uYjQ5YWZkNjEyNzE0NTYzNTY2ZTNi
YTE0NTIxNmEzN2Q4OTk1YTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUg
Ikxlbmd0aC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBw
dWJsaWM6CiAKICAgICBEYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CiAgICAgdm9pZCBzZXREYXRhKFBhc3NPd25QdHI8RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRh
OyB9CisgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlckVmZmVjdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0ZXJFZmZlY3QgPSBmaWx0ZXJFZmZl
Y3Q7IH0KIAogcHJpdmF0ZToKIApAQCAtMTk1LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fdXJsOwogICAgIFN0cmluZyBtX2ZyYWdtZW50OwogICAgIE93blB0cjxEYXRhPiBtX2Rh
dGE7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9maWx0ZXJFZmZlY3Q7CiB9OwogCiAvLyBH
UkFZU0NBTEUsIFNFUElBLCBTQVRVUkFURSBhbmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBv
biBhIGJhc2ljIGNvbG9yIG1hdHJpeCBlZmZlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcApp
bmRleCBmZGNhNDMyZjRkMzQ4YTFiOTdkNDg3MmY1YWI2YzMxNWI1NjQ3MDQxLi44MDg5ZjNiNTBk
NjA1OTZmZmI4NDY5YTU0YjViM2U0Zjg4ZjFiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNs
dWRlICJTa0JpdG1hcFNvdXJjZS5oIgogI2luY2x1ZGUgIlNrQmxlbmRJbWFnZUZpbHRlci5oIgor
I2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC04NCw2ICs4NSwxNCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVCbGVuZDo6Y3JlYXRlSW1h
Z2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0ltYWdl
RmlsdGVyKiBmb3JlZ3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpOworICAg
IFNrSW1hZ2VGaWx0ZXIqIGJhY2tncm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgx
KSk7CisgICAgU2tCbGVuZEltYWdlRmlsdGVyOjpNb2RlIG1vZGUgPSB0b1NraWFNb2RlKG1fbW9k
ZSk7CisgICAgcmV0dXJuIG5ldyBTa0JsZW5kSW1hZ2VGaWx0ZXIobW9kZSwgYmFja2dyb3VuZCwg
Zm9yZWdyb3VuZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXgg
MGZkMDc3NzZlMDMwNzMwOGExMThhNjMwOTYwNDNlMGY5YTUwNTNlYi4uZGYwMTNiYjc3YjBkMGRh
ZGFjNGU3YTUxN2UwYmZkYmYwOTM3ZTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJp
eFNraWEuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgog
CiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlcklt
YWdlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgorI2luY2x1ZGUg
IlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04
MCwyNCArODIsMTUgQEAgc3RhdGljIHZvaWQgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChTa1NjYWxh
ciBtYXRyaXhbMjBdKQogICAgIG1hdHJpeFsxN10gPSAwLjA3MjFmOwogfQogCi1ib29sIEZFQ29s
b3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK3N0YXRpYyBTa0NvbG9yRmlsdGVyKiBjcmVh
dGVDb2xvckZpbHRlcihDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgZmxvYXQqIHZhbHVlcykK
IHsKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3Vs
dCgpOwotICAgIGlmICghcmVzdWx0SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKLQotICAgIEludFJlY3QgaW1hZ2VS
ZWN0KEludFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLQogICAgIFNrU2Nh
bGFyIG1hdHJpeFsyMF07Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAyMDsgKytpKQotICAgICAgICAgICAgbWF0cml4W2ldID0gbV92YWx1ZXNbaV07
CisgICAgICAgICAgICBtYXRyaXhbaV0gPSB2YWx1ZXNbaV07CiAKICAgICAgICAgbWF0cml4WzRd
ICo9IFNrU2NhbGFyKDI1NSk7CiAgICAgICAgIG1hdHJpeFs5XSAqPSBTa1NjYWxhcigyNTUpOwpA
QCAtMTA1LDE1ICs5OCwyOSBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKICAgICAgICAgbWF0cml4WzE5XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURTogCi0gICAgICAgIHNhdHVyYXRl
TWF0cml4KG1fdmFsdWVzWzBdLCBtYXRyaXgpOworICAgICAgICBzYXR1cmF0ZU1hdHJpeCh2YWx1
ZXNbMF0sIG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9U
WVBFX0hVRVJPVEFURToKLSAgICAgICAgaHVlUm90YXRlTWF0cml4KG1fdmFsdWVzWzBdLCBtYXRy
aXgpOworICAgICAgICBodWVSb3RhdGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgog
ICAgICAgICBsdW1pbmFuY2VUb0FscGhhTWF0cml4KG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICByZXR1cm4gbmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KTsKK30KKwor
Ym9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCit7CisgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBpZiAoIXJl
c3VsdEltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGlu
ID0gaW5wdXRFZmZlY3QoMCk7CisKKyAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CisKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZp
bHRlcj4gZmlsdGVyKGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7
CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMjIsMTIgKzEy
OSwxOSBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNr
Q2FudmFzKiBjYW52YXMgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCk7CiAgICAgU2tQYWludCBwYWludDsKLSAgICBwYWludC5zZXRDb2xvckZpbHRl
cihuZXcgU2tDb2xvck1hdHJpeEZpbHRlcihtYXRyaXgpKS0+dW5yZWYoKTsKKyAgICBwYWludC5z
ZXRDb2xvckZpbHRlcihmaWx0ZXIpOwogICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJt
b2RlOjprU3JjX01vZGUpOwogICAgIGNhbnZhcy0+ZHJhd0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0
bWFwKCksIDAsIDAsICZwYWludCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0
ZXIqIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCit7CisgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1
aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKSk7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JG
aWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkp
OworICAgIHJldHVybiBuZXcgU2tDb2xvckZpbHRlckltYWdlRmlsdGVyKGZpbHRlciwgaW5wdXQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVS
UykgJiYgVVNFKFNLSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCmlu
ZGV4IGI2OTRjOWIxYzU1YTgzOGNlNDNhY2JlNDk4NWE0ZGQ4OTM3OTA2NTUuLmY1ZjQ2ZGFlZGNh
M2I1M2VmMTM0ZjU3ZDZkNjkxODE1YWUzZjliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNz
aWFuQmx1clNraWEuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS5oIgogI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5j
bHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYxLDUgKzYyLDExIEBAIGJvb2wgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVHYXVzc2lhbkJsdXI6
OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7Cisg
ICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0
RWZmZWN0KDApKSk7CisgICAgcmV0dXJuIG5ldyBTa0JsdXJJbWFnZUZpbHRlcihTa0Zsb2F0VG9T
Y2FsYXIobV9zdGRYKSwgU2tGbG9hdFRvU2NhbGFyKG1fc3RkWSksIGlucHV0KTsKK30KKwogfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCmluZGV4IGU3MjkwYmVj
N2UyZGU0YTgyOTNjZmE1YWUxM2U5YjI4ZmYzMmRiMDUuLmIyZTlmNGZjZmI3ZTNlYWYyMjE5YWM0
NTZjNTdmMjg1ZTgzNzU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGRU1vcnBob2xvZ3kuaCIKIAogI2luY2x1ZGUg
IlNrTW9ycGhvbG9neUltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVp
bGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDUgKzYzLDE1IEBAIGJvb2wg
RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K1NrSW1hZ2VGaWx0ZXIqIEZFTW9ycGhvbG9neTo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdl
RmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRl
cj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsKKyAgICBTa1NjYWxhciBy
YWRpdXNYID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWCk7CisgICAgU2tTY2FsYXIgcmFkaXVz
WSA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1kpOworICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQ
SE9MT0dZX09QRVJBVE9SX0RJTEFURSkKKyAgICAgICAgcmV0dXJuIG5ldyBTa0RpbGF0ZUltYWdl
RmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsKKyAgICByZXR1cm4gbmV3IFNrRXJvZGVJ
bWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7Cit9CisKIH07CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9T
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OGUwMjdiODAyN2RhZTMxY2EyMDg3ZmM5YjY2M2JjZTBjMjA2NmViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFn
ZUZpbHRlckJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKKworI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRl
ICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRl
ci5oIgorI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa01hdHJp
eC5oIgorCituYW1lc3BhY2UgeworCit2b2lkIGdldEJyaWdodG5lc3NNYXRyaXgoZmxvYXQgYW1v
dW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICog
c2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgLy8gICAgT2xkIGltcGxlbWVudGF0aW9uLCBhIGxhIHRo
ZSBkcmFmdCBzcGVjLCBhIHN0cmFpZ2h0LXVwIHNjYWxlLAorICAgIC8vICAgIHJlcHJlc2VudGlu
ZyA8ZmVGdW5jW1J8R3xCXSB0eXBlPSJsaW5lYXIiIHNsb3BlPSJbYW1vdW50XSI+CisgICAgLy8g
ICAgKFNlZSBodHRwOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9p
bmRleC5odG1sI2JyaWdodG5lc3NFcXVpdmFsZW50KQorICAgIC8vIG1hdHJpeFswXSA9IG1hdHJp
eFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAgLy8gbWF0cml4WzE4XSA9IDE7CisgICAg
Ly8gICAgTmV3IGltcGxlbWVudGF0aW9uLCBhIHRyYW5zbGF0aW9uIGluIGNvbG9yIHNwYWNlLCBy
ZXByZXNlbnRpbmcKKyAgICAvLyAgICA8ZmVGdW5jW1J8R3xCXSB0eXBlPSJsaW5lYXIiIGludGVy
Y2VwdD0iW2Ftb3VudF0iLz4KKyAgICAvLyAgICAoU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdz
L1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDcpCisgICAgbWF0cml4WzBdID0gbWF0cml4WzZd
ID0gbWF0cml4WzEyXSA9IG1hdHJpeFsxOF0gPSAxOworICAgIG1hdHJpeFs0XSA9IG1hdHJpeFs5
XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7Cit9CisKK3ZvaWQgZ2V0Q29udHJhc3RNYXRy
aXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRy
aXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4WzZd
ID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRy
aXhbMTRdID0gKC0wLjVmICogYW1vdW50ICsgMC41ZikgKiAyNTU7CisgICAgbWF0cml4WzE4XSA9
IDE7Cit9CisKK3ZvaWQgZ2V0U2F0dXJhdGVNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBt
YXRyaXhbMjBdKQoreworICAgIC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8g
ZW5zdXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFsc2UKKyAgICAvLyBmb3IgYW1vdW50IGlu
IFswLi4xXQorICAgIG1hdHJpeFswXSA9IDAuMjEzZiArIDAuNzg3ZiAqIGFtb3VudDsKKyAgICBt
YXRyaXhbMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMS5m
IC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRdID0g
MDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7CisgICAgbWF0cml4
WzZdID0gMC43MTVmICsgMC4yODVmICogYW1vdW50OworICAgIG1hdHJpeFs3XSA9IDEuZiAtICht
YXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7Cisg
ICAgbWF0cml4WzEwXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTFd
ID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0
cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsK
KyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0g
MDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRIdWVSb3RhdGVNYXRyaXgoZmxv
YXQgaHVlLCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIGZsb2F0IGNvc0h1ZSA9IGNvc2Yo
aHVlICogcGlGbG9hdCAvIDE4MCk7CisgICAgZmxvYXQgc2luSHVlID0gc2luZihodWUgKiBwaUZs
b2F0IC8gMTgwKTsKKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBz
aW5IdWUgKiAwLjIxM2Y7CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVm
IC0gc2luSHVlICogMC43MTVmOworICAgIG1hdHJpeFsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAu
MDcyZiArIHNpbkh1ZSAqIDAuOTI4ZjsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOwor
ICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQz
ZjsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAw
LjE0MGY7CisgICAgbWF0cml4WzddID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVl
ICogMC4yODNmOworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisgICAgbWF0cml4WzEw
XSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAtIHNpbkh1ZSAqIDAuNzg3ZjsKKyAgICBtYXRy
aXhbMTFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVmOworICAg
IG1hdHJpeFsxMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBzaW5IdWUgKiAwLjA3MmY7
CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsxNV0gPSBtYXRy
aXhbMTZdID0gbWF0cml4WzE3XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7CisgICAgbWF0cml4
WzE5XSA9IDA7Cit9CisKK3ZvaWQgZ2V0SW52ZXJ0TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2Fs
YXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1Nj
YWxhcikpOworICAgIG1hdHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSAxIC0gMiAq
IGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gYW1vdW50
ICogMjU1OworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldE9wYWNpdHlNYXRyaXgo
ZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgs
IDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0g
bWF0cml4WzEyXSA9IDE7CisgICAgbWF0cml4WzE4XSA9IGFtb3VudDsKK30KKwordm9pZCBnZXRH
cmF5c2NhbGVNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAg
IC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8gZW5zdXJlIG1hdHJpeE5lZWRz
Q2xhbXBpbmcgaXMgZmFsc2UKKyAgICAvLyBmb3IgYW1vdW50IGluIFswLi4xXQorICAgIG1hdHJp
eFswXSA9IDAuMjEyNmYgKyAwLjc4NzRmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzE1
MmYgLSAwLjcxNTJmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDEuZiAtIChtYXRyaXhbMF0g
KyBtYXRyaXhbMV0pOworICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisKKyAgICBtYXRy
aXhbNV0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcx
NTJmICsgMC4yODQ4ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAxLmYgLSAobWF0cml4WzVd
ICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0gPSAwOworCisgICAgbWF0
cml4WzEwXSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAw
LjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMS5mIC0gKG1hdHJp
eFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9IDA7CisK
KyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0g
MDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTZXBpYU1hdHJpeChmbG9hdCBh
bW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWF0cml4WzBdID0gMC4zOTNmICsg
MC42MDdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzY5ZiAtIDAuNzY5ZiAqIGFtb3Vu
dDsKKyAgICBtYXRyaXhbMl0gPSAwLjE4OWYgLSAwLjE4OWYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzNdID0gbWF0cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMzQ5ZiAtIDAuMzQ5ZiAq
IGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjY4NmYgKyAwLjMxNGYgKiBhbW91bnQ7CisgICAg
bWF0cml4WzddID0gMC4xNjhmIC0gMC4xNjhmICogYW1vdW50OworICAgIG1hdHJpeFs4XSA9IG1h
dHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yNzJmIC0gMC4yNzJmICogYW1vdW50
OworICAgIG1hdHJpeFsxMV0gPSAwLjUzNGYgLSAwLjUzNGYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzEyXSA9IDAuMTMxZiArIDAuODY5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4
WzE0XSA9IDA7CisKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBt
YXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKworU2tJbWFnZUZpbHRlciog
Y3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIoU2tTY2FsYXIgbWF0cml4WzIwXSwgU2tJbWFnZUZpbHRl
ciogaW5wdXQpCit7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGNvbG9yRmlsdGVy
KG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCkpOworICAgIHJldHVybiBuZXcgU2tDb2xv
ckZpbHRlckltYWdlRmlsdGVyKGNvbG9yRmlsdGVyLCBpbnB1dCk7Cit9CisKK307CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6U2tpYUltYWdlRmlsdGVy
QnVpbGRlcigpCit7Cit9CisKK1NrSW1hZ2VGaWx0ZXIqIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6
OmJ1aWxkKEZpbHRlckVmZmVjdCogZWZmZWN0KQoreworICAgIGlmICghZWZmZWN0KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEZpbHRlckJ1aWxkZXJIYXNoTWFwOjppdGVyYXRvciBpdCA9IG1f
bWFwLmZpbmQoZWZmZWN0KTsKKyAgICBpZiAoaXQgIT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiBpdC0+dmFsdWU7CisKKyAgICBTa0ltYWdlRmlsdGVyKiBmaWx0ZXIgPSBlZmZlY3QtPmNy
ZWF0ZUltYWdlRmlsdGVyKHRoaXMpOworICAgIG1fbWFwLnNldChlZmZlY3QsIGZpbHRlcik7Cisg
ICAgcmV0dXJuIGZpbHRlcjsKK30KKworU2tJbWFnZUZpbHRlciogU2tpYUltYWdlRmlsdGVyQnVp
bGRlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKK3sKKyAgICBT
a0ltYWdlRmlsdGVyKiBmaWx0ZXIgPSAwOworICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3AgPSAqb3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAg
c3dpdGNoIChvcC5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlJFRkVSRU5DRTogeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QgPSBzdGF0aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5m
aWx0ZXJFZmZlY3QoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBob29rIHVwIHBhcmVudCBmaWx0
ZXIgdG8gaW1hZ2Ugc291cmNlCisgICAgICAgICAgICBmaWx0ZXIgPSBTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyOjpidWlsZChmaWx0ZXJFZmZlY3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogeworICAgICAgICAg
ICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0R3JheXNjYWxlTWF0
cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeElt
YWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogeworICAgICAgICAgICAgZmxv
YXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0U2VwaWFNYXRyaXgoYW1vdW50
LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIo
bWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91
bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4o
Jm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRTYXR1cmF0ZU1hdHJpeChhbW91bnQsIG1h
dHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRy
aXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZv
cCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0SHVlUm90YXRlTWF0cml4KGFtb3VudCwgbWF0
cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJp
eCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0
YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigm
b3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEludmVydE1hdHJpeChhbW91bnQsIG1hdHJp
eCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgs
IGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZv
cCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0T3BhY2l0eU1hdHJpeChhbW91bnQsIG1hdHJp
eCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgs
IGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+
KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0QnJpZ2h0bmVzc01hdHJpeChhbW91bnQs
IG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlciht
YXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3Vu
dCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldENvbnRyYXN0TWF0cml4KGFtb3Vu
dCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVy
KG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CisgICAgICAgICAgICBmbG9hdCBwaXhlbFJh
ZGl1cyA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5zdGRE
ZXZpYXRpb24oKS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgU2tC
bHVySW1hZ2VGaWx0ZXIocGl4ZWxSYWRpdXMsIHBpeGVsUmFkaXVzLCBmaWx0ZXIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRS
T1BfU0hBRE9XOiB7CisvLyAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24mIGRyb3BTaGFkb3dPcCA9ICpzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKj4oJm9wKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyBvZmZzZXQgYW5kIGJsdXIK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOgorICAgICAgICAgICAgLy8gTm90
IHN1cHBvcnRlZC4KKyNlbmRpZgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UEFTU1RI
Uk9VR0g6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpOT05FOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9T
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3YmQ2
ODMyMGI2YTkyOWM2MTAwOTg2OGI1NzE0NmQxZGY2MjU5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmls
dGVyQnVpbGRlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNraWFJbWFnZUZp
bHRlckJ1aWxkZXJfaAorI2RlZmluZSBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyX2gKKworI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEZpbHRlck9wZXJhdGlvbnM7CisK
K2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXIgeworcHVibGljOgorICAgIFNraWFJbWFnZUZp
bHRlckJ1aWxkZXIoKTsKKworICAgIFNrSW1hZ2VGaWx0ZXIqIGJ1aWxkKEZpbHRlckVmZmVjdCop
OworICAgIFNrSW1hZ2VGaWx0ZXIqIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKK3By
aXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlckVmZmVjdCosIFNrSW1hZ2VGaWx0ZXIq
PiBGaWx0ZXJCdWlsZGVySGFzaE1hcDsKKyAgICBGaWx0ZXJCdWlsZGVySGFzaE1hcCBtX21hcDsK
K307CisKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggYjQ5MmE2YWQzOWM2NmU5OWYyZmVjYzEzMmY0Y2M0
NTI1ZDE5MDBkZi4uYThhZmUwZjBlNTk1NWJlN2U3YjM0OTc4YzAwOGEyZTc4ODQ1MGUxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CkBAIC0yMTYsNyArMjE2LDkgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGUKICAgICAgICAgRmls
dGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5h
dChpKS5nZXQoKTsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlv
blR5cGUoKSkgewogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7Ci0g
ICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJldmlv
dXNFZmZlY3QsIHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbikpOworICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiByZWZlcmVu
Y2VPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VGaWx0ZXIo
ZG9jdW1lbnQsIHByZXZpb3VzRWZmZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOworICAgICAgICAg
ICAgcmVmZXJlbmNlT3BlcmF0aW9uLT5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDY5
OTA4YWY0MjAwMjc2Y2Y2YTQ1ZTYxMzQxMDhjOTQ5NWI3ZDM2YjMuLjQ1ZWEyODA5OWEwM2IyMjU2
YjUxMmVlNjAxODkxODVlMjNmN2UzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtNTEwMiw3ICs1MTAyLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKICAgICAgICAgLy8gZm9yIGxvYWRpbmcgQ1NTIHNoYWRl
ciBmaWxlcy4KICAgICAgICAgaWYgKFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9
IHRoaXMtPmZpbHRlckluZm8oKSkKICAgICAgICAgICAgIGZpbHRlckluZm8tPnNldFJlbmRlcmVy
KDApOwotICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRWFybHktcmV0dXJuIG9ubHkgaWYg
d2UgKmRvbid0KiBoYXZlIHJlZmVyZW5jZSBmaWx0ZXJzLgorICAgICAgICAvLyBGb3IgcmVmZXJl
bmNlIGZpbHRlcnMsIHdlIHN0aWxsIHdhbnQgdGhlIEZpbHRlckVmZmVjdCBncmFwaCBidWlsdAor
ICAgICAgICAvLyBmb3IgdXMsIGV2ZW4gaWYgd2UncmUgY29tcG9zaXRlZC4KKyAgICAgICAgaWYg
KCFyZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0ZXIoKS5oYXNSZWZlcmVuY2VGaWx0ZXIoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
KiBmaWx0ZXJJbmZvID0gZW5zdXJlRmlsdGVySW5mbygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171338</attachid>
            <date>2012-10-29 16:52:40 -0700</date>
            <delta_ts>2012-10-29 17:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121029195055.patch</filename>
            <type>text/plain</type>
            <size>43148</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi4xOGNlZTIxMWM4MGEwMWY2MDJmMzAyYmMzZGUw
NTA3OGU4Njg5Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yNiAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAg
PGNjYW1lcm9uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBhZGRpdGlv
bmFsIG1lbW9yeSBtYW5hZ2VtZW50IGZpZWxkcyB0byBXZWJHcmFwaGljc0NvbnRleHQzRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI5MmMzMzY0Nzc5YjJiNzNhNzFiNjQzYzQ4Mjk2Mzc3MGFmMDBiODkuLmJlMTBj
YTUzYzg1YzM5OWZjMjUwOWVmZWFjZmQ5ZDNmYTEwZDg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2NyBAQAorMjAxMi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJz
IG9uIGNvbXBvc2l0ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFz
ICJwcml2YXRlIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWls
ZGVyIGFuZCBzZXRMYXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0
aGVyZSdzIGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUZp
bHRlcik6CisgICAgICAgIEFkZCBjcmVhdGVJbWFnZUZpbHRlcigpIGZhY3RvcnkgZnVuY3Rpb24g
Zm9yIGJ1aWxkaW5nIFNrSW1hZ2VGaWx0ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpzZXRG
aWx0ZXJFZmZlY3QpOgorICAgICAgICBBZGQgYSBGaWx0ZXJFZmZlY3QgbWVtYmVyIHRvIFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbiwgYW5kIGFjY2Vzc29ycworICAgICAgICBmb3IgaXQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1w
bGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQmxlbmQgZmlsdGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb2xvckZpbHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgIFJlZmFjdG9yIGNy
ZWF0aW9uIG9mIFNrQ29sb3JGaWx0ZXIgZnJvbSBhbiBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAg
ICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFQ29sb3JNYXRyaXggZmls
dGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFu
Qmx1clNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNyZWF0ZUlt
YWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9y
IEZFR2F1c3NpYW5CbHVyIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5n
OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1
aWxkaW5nIGZvciBGRUxpZ2h0aW5nIGZpbHRlcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVNb3JwaG9sb2d5OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0lt
YWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRU1vcnBob2xvZ3kgZmlsdGVyLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpTa2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXI6OmJ1aWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tp
YUltYWdlRmlsdGVyQnVpbGRlci5oOgorICAgICAgICBJbXBsZW1lbnQgbmV3IGhlbHBlciBjbGFz
cyBmb3IgYnVpbGRpbmcgYW4gU2tJbWFnZUZpbHRlciBEQUcgZnJvbQorICAgICAgICBhIEZpbHRl
ckVmZmVjdCBEQUcuICBDYW4gYWxzbyBidWlsZCBmcm9tIEZpbHRlck9wZXJhdGlvbnMgbGlzdC4K
KyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgV2hlbiBidWls
ZGluZyBGaWx0ZXJFZmZlY3RzIGZyb20gYSByZWZlcmVuY2UgZmlsdGVyLCBhbHNvIHN0b3JlIHRo
ZQorICAgICAgICBnZW5lcmF0ZWQgREFHIG9uIHRoZSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24g
aXRzZWxmLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QpOgorICAgICAg
ICBFdmVuIHdoZW4gaW4gY29tcG9zaXRlZCBtb2RlLCBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIGZp
bHRlciBpbiB0aGUgCisgICAgICAgIGNoYWluLCBidWlsZCB0aGUgRmlsdGVyRWZmZWN0IERBRyBm
cm9tIGl0LgorCiAyMDEyLTEwLTI4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2ltcGxpZnkgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IHVzZWQgdG8g
dmFyeSBiZXR3ZWVuIE9TIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCmluZGV4IDdlYzUxNjU1NWVkMzlkODFlZDA5ODI5ZTNiZjIxNDMwNGQ0NGYw
ZmYuLjZhMzdkMjc4YzEyMDU1MjQ3ZTA1MTQxZDg3NjJlMmMxM2ZkNjIxNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKIAogY2xhc3MgU2tNYXRyaXg0NDsKK2NsYXNzIFNrSW1hZ2VG
aWx0ZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7
CkBAIC0xMjUsNiArMTI2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25z
IG9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVy
YXRpb25zJikgPSAwOwogCisgICAgLy8gU2V0IHRoZSByb290IG9mIHRoZSBpbWFnZSBmaWx0ZXIg
Z3JhcGggZm9yIHRoaXMgbGF5ZXIuIFRoZSAKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
Z3JhYiBhIHJlZiBvbiB0aGUgcGFzc2VkLWluIGZpbHRlciBpbiBvcmRlcgorICAgIC8vIHRvIHJl
dGFpbiBvd25lcnNoaXAuIFRoZSBwYXNzZWQtaW4gZ3JhcGggd2lsbCBiZSB1bnJlZidlZCBieSB0
aGUKKyAgICAvLyBjYWxsZXIgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIHZpcnR1YWwgdm9pZCBzZXRG
aWx0ZXIoU2tJbWFnZUZpbHRlciopID0gMDsKKwogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4
ZWxzIHRoYXQgc2hvdyB0aHJvdWdoIHRoZSBiYWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCiAgICAg
Ly8gTm90ZTogVGhlc2UgZmlsdGVycyBhcmUgb25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBh
cmUgZHJhd24gZGlyZWN0bHkKICAgICAvLyB0byBhIHJvb3QgcmVuZGVyIHN1cmZhY2Ugd2l0aCBh
biBvcGFxdWUgYmFja2dyb3VuZC4gVGhpcyBtZWFucyBpZiBhbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCA1OWY2NDc0MWQ4ZTI1OWU1YzMwNDc1OTRlOTI4YmZhOGZj
OTViOWYxLi4zMjMzY2FjNzllM2E3NTU1MzFjMzVkNDJiNTk3YjVlMmM5OWRiMTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTEzLDYgKzExMyw3IEBACiAgICAg
ICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MnLAogICAgICAgJy4uL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
YXJtJywKKyAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEnLAogICAgICAg
Jy4uL3BsYXRmb3JtL2dyYXBoaWNzL2dwdScsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGE1MmE0MzFjZDhmMjg5OWU5N2IyNjYzNDkyMzQ3OGI0ZmEyYjExNzAuLmI5MWY5
MzUxOWM2OTRkODBhZmRlNTg3Mzg0OTBjNWQ3MzE3ZjI2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTUwNTcsNiArNTA1Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1
aWxkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
U2tpYUltYWdlRmlsdGVyQnVpbGRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYTc2MmY4ZTFjMGI0NzgzMDc4MjlhY2MwOWFjMjY4MjRhZWM1MGI4YS4uNDA3OWUw
YmYxMTg0ZGNlNzM5Nzk2MGM4ZDk1ZDczMWEwZjQ3OWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA5LDcgKzIwOSw3IEBA
CiAJCTA4QzdBMkM3MTBEQzc0NjIwMDJEMzY4QiAvKiBTVkdOYW1lcy5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTkw
OUQxNTA4RDAwMEU2MUQ3IC8qIFNWR05hbWVzLmggKi87IH07CiAJCTA4Qzg1OUMwMTI3NDU3NTQw
MEE1NzI4RCAvKiBTVkdBbmltYXRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4Qzg1OUJGMTI3NDU3NTMwMEE1NzI4RCAvKiBTVkdBbmltYXRl
ZFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEM5MjUxOTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE3MEZDQzdDNEEwMDQ4
MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovOyB9OwotCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBE
RUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi87
IH07CisJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEw
MDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOENBM0Q0NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGlj
UHJvcGVydHlXaXRoUGFyZW50VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1By
b3BlcnR5V2l0aFBhcmVudFRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhENDZDRTIxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEU0
RkU0NjBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFNEZFNDUwRTJCRDQxNDAwRjRD
QUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGE1OTVkZjI4ZGExNmE0MDVlNGZjNDgzNDY3NzMwYzcyZjVj
ZWE2ZWYuLmYwZDA0NzNmZDdiMmU2NTQ2ODBjMmRiMjk3ODJmZTljZDBjZjhiMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgog
I2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb24uaD4KQEAgLTM3OSwxNSArMzgwLDI1IEBA
IHN0YXRpYyBib29sIGNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0
aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpCiAKIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgV2ViRmls
dGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOwotICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVy
YXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7Ci0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9y
bSBsYXllciwgYXMgdGhleSBhcmUKLSAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29m
dHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0
ZXJPcGVyYXRpb25zKCkpOwotICAgICAgICBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRl
ck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogRm9y
IG5vdywgd2Ugb25seSB1c2UgU2tJbWFnZUZpbHRlcnMgaWYgdGhlcmUgaXMgYSByZWZlcmVuY2UK
KyAgICAvLyBmaWx0ZXIgaW4gdGhlIGNoYWluLiBPbmNlIGFsbCBpc3N1ZXMgaGF2ZSBiZWVuIGly
b25lZCBvdXQsIHdlIHNob3VsZAorICAgIC8vIHN3aXRjaCBhbGwgZmlsdGVyaW5nIG92ZXIgdG8g
dGhpcyBwYXRoLCBhbmQgcmVtb3ZlIHNldEZpbHRlcnMoKSBhbmQKKyAgICAvLyBXZWJGaWx0ZXJP
cGVyYXRpb25zIGFsdG9nZXRoZXIuCisgICAgaWYgKGZpbHRlcnMuaGFzUmVmZXJlbmNlRmlsdGVy
KCkpIHsKKyAgICAgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBT
a0ltYWdlRmlsdGVyKiBpbWFnZUZpbHRlciA9IGJ1aWxkZXIuYnVpbGQoZmlsdGVycyk7CisgICAg
ICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcihpbWFnZUZpbHRlcik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOworICAgICAgICBpZiAo
IWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0ZXJz
LCB3ZWJGaWx0ZXJzKSkgeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFy
ZSByZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQorICAgICAgICAg
ICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KKyAgICAgICAgICAgIG1f
bGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAg
ICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIH0KLSAgICBtX2xheWVyLT5sYXllcigp
LT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRG
aWx0ZXJzKGZpbHRlcnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4IGU1OGM4YTNkMDFlZGM0YTdkYzgzZjAwYmQ4
MjAyZDIxYTllOTYwMjQuLjVjNzFjMmI3MjUwNjY0NzFiYzczODJhZGYyY2NkMTJjOTc1ZTA4YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciog
Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCmlu
ZGV4IDI3YTRhYzg0MzhmOWE5ZTI2ODQzOWJjMzJkMmRmZDg5MjFjZTQxYzMuLjk5YjY1MGI5YzFk
ODQ1YzI0NDk3OTkyYmRkMWJiNDkxZmNjYmMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC01MSw2
ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7
CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmgKaW5kZXggN2IzYmRjZTI5MTczMzY3MTYwYjIxMGUzZjAzNTIyMDU3ZWE2OWVk
Ny4uZGFmM2VmMTdhMmMyZjc5Nzg5MTBlYjAxNDE5YmFhOWY4YWJhOWQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuaApAQCAtNzUsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSB2b2lkIHBsYXRm
b3JtQXBwbHlHZW5lcmljKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENs
YW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVk
IGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwogI2lmIFVTRShTS0lBKQogICAgIHZp
cnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRl
ciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAK
ICAgICBmbG9hdCBtX3N0ZFg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDQ0ODc4MzVlOGMwZWYzMDI2ZThlOWZj
YjY4YWY0ODM5MjJlN2NhYTUuLjI4ODk4NWQ0Mjg4ZTI5MzBkZDg2MmY3NDgyMTU4NmFlYWExOTEw
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEZFTGlnaHRpbmcgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBj
cmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAgICAgdmlydHVhbCBi
b29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggMTlk
YTYzNWEyZTAzYTYxYWYwNDA4ZWNkNGY5MGZkZTRiMGUwNDczMS4uYjM4ZTY3M2MzODIyMmM2NGI3
ZWRmODMzNjg5ZGVjNjMwNzBjYWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC00OSw2ICs0OSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYg
VVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmly
dHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyKik7CisKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
CmluZGV4IDE2MjBhYmYxZTNkNWU2NmQxN2Q0NTE2ZTQ0OGY3NTE5OWFiOGQwNGQuLjA2OWVkZTNl
ZWFkM2FmNzAyM2Q5ZTllOWQxY2FiNzNlODllMDBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtMzUs
NiArMzUsMTAgQEAKIAogc3RhdGljIGNvbnN0IGZsb2F0IGtNYXhGaWx0ZXJTaXplID0gNTAwMC4w
ZjsKIAorI2lmIFVTRShTS0lBKQorY2xhc3MgU2tJbWFnZUZpbHRlcjsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKQEAgLTQyLDYgKzQ2LDEwIEBAIGNsYXNz
IEZpbHRlckVmZmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgVGV4dFN0cmVhbTsKIAor
I2lmIFVTRShTS0lBKQorY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlcjsKKyNlbmRpZgorCiB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdFZlY3RvcjsK
IAogZW51bSBGaWx0ZXJFZmZlY3RUeXBlIHsKQEAgLTk1LDYgKzEwMyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogI2lmIFVTRShTS0lB
KQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyKikgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1
bXAoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGFmNDRlMzYwMmY3MDE4MmQxOGUw
NzUyMTBlOTZmYWRkZjVhNGI2OTYuLmI0OWFmZDYxMjcxNDU2MzU2NmUzYmExNDUyMTZhMzdkODk5
NWEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xNzQsNiArMTc1LDggQEAgcHVibGljOgogCiAgICAg
RGF0YSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogICAgIHZvaWQgc2V0
RGF0YShQYXNzT3duUHRyPERhdGE+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIEZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZmlsdGVyRWZmZWN0KSB7IG1fZmlsdGVyRWZmZWN0ID0gZmlsdGVyRWZmZWN0OyB9CiAKIHByaXZh
dGU6CiAKQEAgLTE5NSw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VybDsKICAg
ICBTdHJpbmcgbV9mcmFnbWVudDsKICAgICBPd25QdHI8RGF0YT4gbV9kYXRhOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IG1fZmlsdGVyRWZmZWN0OwogfTsKIAogLy8gR1JBWVNDQUxFLCBTRVBJ
QSwgU0FUVVJBVEUgYW5kIEhVRV9ST1RBVEUgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xv
ciBtYXRyaXggZWZmZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKaW5kZXggZmRjYTQzMmY0
ZDM0OGExYjk3ZDQ4NzJmNWFiNmMzMTViNTY0NzA0MS4uODA4OWYzYjUwZDYwNTk2ZmZiODQ2OWE1
NGI1YjNlNGY4OGYxYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiU2tCaXRtYXBT
b3VyY2UuaCIKICNpbmNsdWRlICJTa0JsZW5kSW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODQsNiAr
ODUsMTQgQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQmxlbmQ6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tJbWFnZUZpbHRlciogZm9yZWdy
b3VuZCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKTsKKyAgICBTa0ltYWdlRmlsdGVy
KiBiYWNrZ3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMSkpOworICAgIFNrQmxl
bmRJbWFnZUZpbHRlcjo6TW9kZSBtb2RlID0gdG9Ta2lhTW9kZShtX21vZGUpOworICAgIHJldHVy
biBuZXcgU2tCbGVuZEltYWdlRmlsdGVyKG1vZGUsIGJhY2tncm91bmQsIGZvcmVncm91bmQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbG9yTWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDBmZDA3Nzc2ZTAzMDcz
MDhhMTE4YTYzMDk2MDQzZTBmOWE1MDUzZWIuLmFmZmJhZWFkMDQ4MDU5N2VmYTljMDNhYmZlN2Ni
ZTIzNTZmMmMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAt
MjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlci5oIgog
I2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsMjQgKzgyLDE1IEBA
IHN0YXRpYyB2b2lkIGx1bWluYW5jZVRvQWxwaGFNYXRyaXgoU2tTY2FsYXIgbWF0cml4WzIwXSkK
ICAgICBtYXRyaXhbMTddID0gMC4wNzIxZjsKIH0KIAotYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0
Zm9ybUFwcGx5U2tpYSgpCitzdGF0aWMgU2tDb2xvckZpbHRlciogY3JlYXRlQ29sb3JGaWx0ZXIo
Q29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IGZsb2F0KiB2YWx1ZXMpCiB7Ci0gICAgSW1hZ2VC
dWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAo
IXJlc3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgp
LCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0KICAgICBTa1NjYWxhciBtYXRyaXhbMjBd
OwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjA7
ICsraSkKLSAgICAgICAgICAgIG1hdHJpeFtpXSA9IG1fdmFsdWVzW2ldOworICAgICAgICAgICAg
bWF0cml4W2ldID0gdmFsdWVzW2ldOwogCiAgICAgICAgIG1hdHJpeFs0XSAqPSBTa1NjYWxhcigy
NTUpOwogICAgICAgICBtYXRyaXhbOV0gKj0gU2tTY2FsYXIoMjU1KTsKQEAgLTEwNSwxNSArOTgs
MjkgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgICAgIG1h
dHJpeFsxOV0gKj0gU2tTY2FsYXIoMjU1KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNP
TE9STUFUUklYX1RZUEVfU0FUVVJBVEU6IAotICAgICAgICBzYXR1cmF0ZU1hdHJpeChtX3ZhbHVl
c1swXSwgbWF0cml4KTsKKyAgICAgICAgc2F0dXJhdGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEU6
Ci0gICAgICAgIGh1ZVJvdGF0ZU1hdHJpeChtX3ZhbHVlc1swXSwgbWF0cml4KTsKKyAgICAgICAg
aHVlUm90YXRlTWF0cml4KHZhbHVlc1swXSwgbWF0cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQToKICAgICAgICAgbHVtaW5h
bmNlVG9BbHBoYU1hdHJpeChtYXRyaXgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgcmV0
dXJuIG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCk7Cit9CisKK2Jvb2wgRkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOworCisgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCkpOworCisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihj
cmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkpOwogCiAgICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CiAgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMTIyLDEyICsxMjksMTkgQEAgYm9vbCBG
RUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAKICAgICBTa0NhbnZhcyogY2FudmFz
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwog
ICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3JGaWx0ZXIobmV3IFNrQ29sb3JN
YXRyaXhGaWx0ZXIobWF0cml4KSktPnVucmVmKCk7CisgICAgcGFpbnQuc2V0Q29sb3JGaWx0ZXIo
ZmlsdGVyKTsKICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2Rl
KTsKICAgICBjYW52YXMtPmRyYXdCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpLCAwLCAwLCAm
cGFpbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUNvbG9yTWF0
cml4OjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQor
eworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChp
bnB1dEVmZmVjdCgwKSkpOworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIo
Y3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKKyAgICByZXR1cm4g
U2tDb2xvckZpbHRlckltYWdlRmlsdGVyOjpDcmVhdGUoZmlsdGVyLCBpbnB1dCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKSAmJiBVU0Uo
U0tJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKaW5kZXggYjY5NGM5
YjFjNTVhODM4Y2U0M2FjYmU0OTg1YTRkZDg5Mzc5MDY1NS4uZjVmNDZkYWVkY2EzYjUzZWYxMzRm
NTdkNmQ2OTE4MTVhZTNmOWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tp
YS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhLmgiCiAjaW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNSAr
NjIsMTEgQEAgYm9vbCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJl
dHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlSW1h
Z2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9U
VW5yZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkp
KTsKKyAgICByZXR1cm4gbmV3IFNrQmx1ckltYWdlRmlsdGVyKFNrRmxvYXRUb1NjYWxhcihtX3N0
ZFgpLCBTa0Zsb2F0VG9TY2FsYXIobV9zdGRZKSwgaW5wdXQpOworfQorCiB9OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVMaWdodGluZ1NraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcAppbmRleCAxYTZhMmQ3MGVlNzA2MzgxZThiZGNi
YzBhOWE5YTM3NDVmMzg2NmUzLi5kOTIxMjJlMGMwZmQ5MWYwZjVhN2YxNGEwOWE0ODZmN2Y3YWQw
NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKQEAgLTMxLDMyICszMSwxNCBA
QAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3Vy
Y2UuaCIKICNpbmNsdWRlICJTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSgp
CitTa0ltYWdlRmlsdGVyKiBGRUxpZ2h0aW5nOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyKiBidWlsZGVyKQogewotICAgIC8vIEZvciBub3csIG9ubHkgdXNlIHRoZSBz
a2lhIGltcGxlbWVudGF0aW9uIGZvciBhY2NlbGVyYXRlZCByZW5kZXJpbmcuCi0gICAgaWYgKGZp
bHRlcigpLT5yZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwotCi0gICAgSW50UmVjdCBk
cmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSk7Ci0KLSAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKLQot
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLQotICAgIEdyYXBoaWNzQ29u
dGV4dCogZHN0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7Ci0KLSAgICBTa1BhaW50
IHBhaW50OworICAgIFNrSW1hZ2VGaWx0ZXIqIGlucHV0ID0gYnVpbGRlciA/IGJ1aWxkZXItPmJ1
aWxkKGlucHV0RWZmZWN0KDApKSA6IDA7CiAgICAgc3dpdGNoIChtX2xpZ2h0U291cmNlLT50eXBl
KCkpIHsKICAgICBjYXNlIExTX0RJU1RBTlQ6IHsKICAgICAgICAgRGlzdGFudExpZ2h0U291cmNl
KiBkaXN0YW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxEaXN0YW50TGlnaHRTb3VyY2UqPiht
X2xpZ2h0U291cmNlLmdldCgpKTsKQEAgLTY2LDIwICs0OCwxOCBAQCBib29sIEZFTGlnaHRpbmc6
OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmYoYXpp
bXV0aFJhZCkgKiBjb3NmKGVsZXZhdGlvblJhZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaW5mKGVsZXZhdGlvblJhZCkpOwogICAgICAgICBpZiAobV9zcGVjdWxhckNvbnN0YW50ID4g
MCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRl
cjo6Q3JlYXRlRGlzdGFudExpdFNwZWN1bGFyKGRpcmVjdGlvbiwgbV9saWdodGluZ0NvbG9yLnJn
YigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25l
bnQpKS0+dW5yZWYoKTsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6
OkNyZWF0ZURpc3RhbnRMaXRTcGVjdWxhcihkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2Io
KSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50
LCBpbnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVy
KFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdERpZmZ1c2UoZGlyZWN0aW9u
LCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFu
dCkpLT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0
aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZURpc3RhbnRMaXREaWZmdXNlKGRpcmVjdGlvbiwgbV9saWdo
dGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQsIGlucHV0
KTsKICAgICB9CiAgICAgY2FzZSBMU19QT0lOVDogewogICAgICAgICBQb2ludExpZ2h0U291cmNl
KiBwb2ludExpZ2h0U291cmNlID0gc3RhdGljX2Nhc3Q8UG9pbnRMaWdodFNvdXJjZSo+KG1fbGln
aHRTb3VyY2UuZ2V0KCkpOwogICAgICAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24gPSBwb2ludExp
Z2h0U291cmNlLT5wb3NpdGlvbigpOwogICAgICAgICBTa1BvaW50MyBza1Bvc2l0aW9uKHBvc2l0
aW9uLngoKSwgcG9zaXRpb24ueSgpLCBwb3NpdGlvbi56KCkpOwogICAgICAgICBpZiAobV9zcGVj
dWxhckNvbnN0YW50ID4gMCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGln
aHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXRTcGVjdWxhcihza1Bvc2l0aW9uLCBtX2xp
Z2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1f
c3BlY3VsYXJFeHBvbmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRp
bmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXRTcGVjdWxhcihza1Bvc2l0aW9uLCBtX2xpZ2h0
aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3Bl
Y3VsYXJFeHBvbmVudCwgaW5wdXQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludC5z
ZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVBvaW50TGl0RGlmZnVz
ZShza1Bvc2l0aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2Rp
ZmZ1c2VDb25zdGFudCkpLT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJl
dHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVBvaW50TGl0RGlmZnVzZShza1Bvc2l0
aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25z
dGFudCwgaW5wdXQpOwogICAgIH0KICAgICBjYXNlIExTX1NQT1Q6IHsKICAgICAgICAgU3BvdExp
Z2h0U291cmNlKiBzcG90TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxTcG90TGlnaHRTb3VyY2Uq
PihtX2xpZ2h0U291cmNlLmdldCgpKTsKQEAgLTkwLDE1ICs3MCwzOSBAQCBib29sIEZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgaWYgKCFsaW1pdGluZ0NvbmVBbmdsZSB8
fCBsaW1pdGluZ0NvbmVBbmdsZSA+IDkwIHx8IGxpbWl0aW5nQ29uZUFuZ2xlIDwgLTkwKQogICAg
ICAgICAgICAgbGltaXRpbmdDb25lQW5nbGUgPSA5MDsKICAgICAgICAgaWYgKG1fc3BlY3VsYXJD
b25zdGFudCA+IDApCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5n
SW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXRTcGVjdWxhcihsb2NhdGlvbiwgdGFyZ2V0LCBzcGVj
dWxhckV4cG9uZW50LCBsaW1pdGluZ0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBt
X3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQpKS0+
dW5yZWYoKTsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0
ZVNwb3RMaXRTcGVjdWxhcihsb2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50LCBsaW1p
dGluZ0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9z
cGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQsIGlucHV0KTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVy
OjpDcmVhdGVTcG90TGl0RGlmZnVzZShsb2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50
LCBsaW1pdGluZ0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2Fs
ZSwgbV9kaWZmdXNlQ29uc3RhbnQpKS0+dW5yZWYoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVTcG90TGl0RGlmZnVzZShs
b2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50LCBsaW1pdGluZ0NvbmVBbmdsZSwgbV9s
aWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQsIGlu
cHV0KTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorfQorCiti
b29sIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK3sKKyAgICAvLyBGb3Igbm93LCBv
bmx5IHVzZSB0aGUgc2tpYSBpbXBsZW1lbnRhdGlvbiBmb3IgYWNjZWxlcmF0ZWQgcmVuZGVyaW5n
LgorLy8gICAgaWYgKGZpbHRlcigpLT5yZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxlcmF0ZWQpCisv
LyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CisKKyAgICBJbnRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKworICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNB
bHBoYUltYWdlKCkpOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVm
ZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgTmF0aXZlSW1hZ2VT
a2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
CisgICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKKworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoY3JlYXRl
SW1hZ2VGaWx0ZXIoMCkpLT51bnJlZigpOwogICAgIGRzdENvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jYW52YXMoKS0+ZHJhd0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCksIGRyYXdpbmdS
ZWdpb24ubG9jYXRpb24oKS54KCksIGRyYXdpbmdSZWdpb24ubG9jYXRpb24oKS55KCksICZwYWlu
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5j
cHAKaW5kZXggZTcyOTBiZWM3ZTJkZTRhODI5M2NmYTVhZTEzZTliMjhmZjMyZGIwNS4uYjJlOWY0
ZmNmYjdlM2VhZjIyMTlhYzQ1NmM1N2YyODVlODM3NTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1v
cnBob2xvZ3lTa2lhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZFTW9ycGhvbG9n
eS5oIgogCiAjaW5jbHVkZSAiU2tNb3JwaG9sb2d5SW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJT
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIs
NSArNjMsMTUgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVNb3JwaG9sb2d5OjpjcmVhdGVJbWFn
ZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RV
bnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkp
OworICAgIFNrU2NhbGFyIHJhZGl1c1ggPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRpdXNYKTsKKyAg
ICBTa1NjYWxhciByYWRpdXNZID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWSk7CisgICAgaWYg
KG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFKQorICAgICAgICByZXR1cm4g
bmV3IFNrRGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQpOworICAgIHJl
dHVybiBuZXcgU2tFcm9kZUltYWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsKK30K
KwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwYmVmNjgwM2I4MzYzMWE3MzQwZmZhNGU5Y2M5ZGQ4ZTJjZjU3NmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAKQEAgLTAsMCArMSwyNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRl
ci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0
aW9ucy5oIgorI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tDb2xv
ckZpbHRlckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgor
I2luY2x1ZGUgIlNrTWF0cml4LmgiCisKK25hbWVzcGFjZSB7CisKK3ZvaWQgZ2V0QnJpZ2h0bmVz
c01hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0
KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICAvLyAgICBPbGQgaW1wbGVt
ZW50YXRpb24sIGEgbGEgdGhlIGRyYWZ0IHNwZWMsIGEgc3RyYWlnaHQtdXAgc2NhbGUsCisgICAg
Ly8gICAgcmVwcmVzZW50aW5nIDxmZUZ1bmNbUnxHfEJdIHR5cGU9ImxpbmVhciIgc2xvcGU9Ilth
bW91bnRdIj4KKyAgICAvLyAgICAoU2VlIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1m
aWxlL3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwjYnJpZ2h0bmVzc0VxdWl2YWxlbnQpCisgICAgLy8g
bWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAgICAvLyBtYXRy
aXhbMThdID0gMTsKKyAgICAvLyAgICBOZXcgaW1wbGVtZW50YXRpb24sIGEgdHJhbnNsYXRpb24g
aW4gY29sb3Igc3BhY2UsIHJlcHJlc2VudGluZworICAgIC8vICAgIDxmZUZ1bmNbUnxHfEJdIHR5
cGU9ImxpbmVhciIgaW50ZXJjZXB0PSJbYW1vdW50XSIvPgorICAgIC8vICAgIChTZWUgaHR0cHM6
Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNTY0NykKKyAgICBtYXRy
aXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gbWF0cml4WzE4XSA9IDE7CisgICAgbWF0
cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0XSA9IGFtb3VudCAqIDI1NTsKK30KKwordm9p
ZCBnZXRDb250cmFzdE1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7
CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRy
aXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIG1hdHJpeFs0XSA9
IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSAoLTAuNWYgKiBhbW91bnQgKyAwLjVmKSAqIDI1NTsK
KyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTYXR1cmF0ZU1hdHJpeChmbG9hdCBh
bW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhlc2UgdmFsdWVz
IGFyZSBjb21wdXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBmYWxzZQorICAg
IC8vIGZvciBhbW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTNmICsgMC43ODdm
ICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKKyAg
ICBtYXRyaXhbMl0gPSAxLmYgLSAobWF0cml4WzBdICsgbWF0cml4WzFdKTsKKyAgICBtYXRyaXhb
M10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFt
b3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyAwLjI4NWYgKiBhbW91bnQ7CisgICAgbWF0
cml4WzddID0gMS5mIC0gKG1hdHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0cml4WzhdID0g
bWF0cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50
OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzEyXSA9IDEuZiAtIChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0cml4WzEzXSA9
IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3
XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldEh1
ZVJvdGF0ZU1hdHJpeChmbG9hdCBodWUsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgZmxv
YXQgY29zSHVlID0gY29zZihodWUgKiBwaUZsb2F0IC8gMTgwKTsKKyAgICBmbG9hdCBzaW5IdWUg
PSBzaW5mKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIG1hdHJpeFswXSA9IDAuMjEzZiArIGNv
c0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsKKyAgICBtYXRyaXhbMV0gPSAwLjcxNWYg
LSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4WzJdID0gMC4w
NzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVlICogMC45MjhmOworICAgIG1hdHJpeFszXSA9
IG1hdHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNm
ICsgc2luSHVlICogMC4xNDNmOworICAgIG1hdHJpeFs2XSA9IDAuNzE1ZiArIGNvc0h1ZSAqIDAu
Mjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKKyAgICBtYXRyaXhbN10gPSAwLjA3MmYgLSBjb3NIdWUg
KiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0g
MDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmIC0gc2luSHVlICog
MC43ODdmOworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgKyBzaW5I
dWUgKiAwLjcxNWY7CisgICAgbWF0cml4WzEyXSA9IDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiAr
IHNpbkh1ZSAqIDAuMDcyZjsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9IDA7CisgICAg
bWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gMDsKKyAgICBtYXRyaXhbMThd
ID0gMTsKKyAgICBtYXRyaXhbMTldID0gMDsKK30KKwordm9pZCBnZXRJbnZlcnRNYXRyaXgoZmxv
YXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAs
IDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0
cml4WzEyXSA9IDEgLSAyICogYW1vdW50OworICAgIG1hdHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1h
dHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQg
Z2V0T3BhY2l0eU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7Cisg
ICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhb
MF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gMTsKKyAgICBtYXRyaXhbMThdID0gYW1vdW50
OworfQorCit2b2lkIGdldEdyYXlzY2FsZU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1h
dHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhlc2UgdmFsdWVzIGFyZSBjb21wdXRlZCB0byBl
bnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBmYWxzZQorICAgIC8vIGZvciBhbW91bnQgaW4g
WzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTI2ZiArIDAuNzg3NGYgKiBhbW91bnQ7CisgICAg
bWF0cml4WzFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0g
MS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRd
ID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1vdW50OworICAg
IG1hdHJpeFs2XSA9IDAuNzE1MmYgKyAwLjI4NDhmICogYW1vdW50OworICAgIG1hdHJpeFs3XSA9
IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5
XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBhbW91bnQ7Cisg
ICAgbWF0cml4WzExXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogYW1vdW50OworICAgIG1hdHJpeFsx
Ml0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJpeFsxM10gPSBt
YXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3
XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldFNl
cGlhTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtYXRy
aXhbMF0gPSAwLjM5M2YgKyAwLjYwN2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzFdID0gMC43Njlm
IC0gMC43NjlmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDAuMTg5ZiAtIDAuMTg5ZiAqIGFt
b3VudDsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworCisgICAgbWF0cml4WzVdID0g
MC4zNDlmIC0gMC4zNDlmICogYW1vdW50OworICAgIG1hdHJpeFs2XSA9IDAuNjg2ZiArIDAuMzE0
ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAwLjE2OGYgLSAwLjE2OGYgKiBhbW91bnQ7Cisg
ICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKworICAgIG1hdHJpeFsxMF0gPSAwLjI3MmYg
LSAwLjI3MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNTM0ZiAtIDAuNTM0ZiAqIGFt
b3VudDsKKyAgICBtYXRyaXhbMTJdID0gMC4xMzFmICsgMC44NjlmICogYW1vdW50OworICAgIG1h
dHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZd
ID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOworfQor
CitTa0ltYWdlRmlsdGVyKiBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihTa1NjYWxhciBtYXRyaXhb
MjBdLCBTa0ltYWdlRmlsdGVyKiBpbnB1dCkKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZp
bHRlcj4gY29sb3JGaWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KSk7CisgICAg
cmV0dXJuIFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlcjo6Q3JlYXRlKGNvbG9yRmlsdGVyLCBpbnB1
dCk7Cit9CisKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2tpYUltYWdlRmlsdGVyQnVp
bGRlcjo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcigpCit7Cit9CisKK1NrSW1hZ2VGaWx0ZXIqIFNr
aWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKEZpbHRlckVmZmVjdCogZWZmZWN0KQoreworICAg
IGlmICghZWZmZWN0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZpbHRlckJ1aWxkZXJIYXNo
TWFwOjppdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoZWZmZWN0KTsKKyAgICBpZiAoaXQgIT0gbV9t
YXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisKKyAgICBTa0ltYWdlRmlsdGVy
KiBmaWx0ZXIgPSBlZmZlY3QtPmNyZWF0ZUltYWdlRmlsdGVyKHRoaXMpOworICAgIG1fbWFwLnNl
dChlZmZlY3QsIGZpbHRlcik7CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKworU2tJbWFnZUZpbHRl
ciogU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlcmF0aW9ucykKK3sKKyAgICBTa0ltYWdlRmlsdGVyKiBmaWx0ZXIgPSAwOworICAgIFNrU2Nh
bGFyIG1hdHJpeFsyMF07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3AgPSAqb3BlcmF0
aW9ucy5hdChpKTsKKyAgICAgICAgc3dpdGNoIChvcC5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTogeworICAgICAgICAgICAgRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24qPigmb3ApLT5maWx0ZXJFZmZlY3QoKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBob29rIHVwIHBhcmVudCBmaWx0ZXIgdG8gaW1hZ2Ugc291cmNlCisgICAgICAgICAgICBmaWx0
ZXIgPSBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChmaWx0ZXJFZmZlY3QpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdS
QVlTQ0FMRTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAg
ICAgICAgZ2V0R3JheXNjYWxlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZp
bHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJ
QTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAg
Z2V0U2VwaWFNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3Jl
YXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRTYXR1
cmF0ZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVN
YXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAg
ICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0SHVlUm90
YXRlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1h
dHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAg
ICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEludmVy
dE1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRy
aXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAg
ICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0T3BhY2l0
eU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRy
aXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogeworICAgICAg
ICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0QnJp
Z2h0bmVzc01hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVh
dGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKKyAg
ICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dENvbnRyYXN0TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNy
ZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CisgICAg
ICAgICAgICBmbG9hdCBwaXhlbFJhZGl1cyA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJP
cGVyYXRpb24qPigmb3ApLT5zdGREZXZpYXRpb24oKS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAg
ICAgICBmaWx0ZXIgPSBuZXcgU2tCbHVySW1hZ2VGaWx0ZXIocGl4ZWxSYWRpdXMsIHBpeGVsUmFk
aXVzLCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisvLyAgICAgICAgICAgIGNvbnN0IERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24mIGRyb3BTaGFkb3dPcCA9ICpzdGF0aWNfY2FzdDxjb25z
dCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oJm9wKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBkbyBvZmZzZXQgYW5kIGJsdXIKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9N
OgorICAgICAgICAgICAgLy8gTm90IHN1cHBvcnRlZC4KKyNlbmRpZgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6UEFTU1RIUk9VR0g6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpOT05FOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGZpbHRlcjsKK30KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3YmQ2ODMyMGI2YTkyOWM2MTAwOTg2OGI1NzE0NmQxZGY2MjU5NDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNraWFJbWFnZUZpbHRlckJ1aWxkZXJfaAorI2RlZmluZSBTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK2NsYXNzIFNrSW1hZ2VG
aWx0ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNz
IEZpbHRlck9wZXJhdGlvbnM7CisKK2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXIgeworcHVi
bGljOgorICAgIFNraWFJbWFnZUZpbHRlckJ1aWxkZXIoKTsKKworICAgIFNrSW1hZ2VGaWx0ZXIq
IGJ1aWxkKEZpbHRlckVmZmVjdCopOworICAgIFNrSW1hZ2VGaWx0ZXIqIGJ1aWxkKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlckVm
ZmVjdCosIFNrSW1hZ2VGaWx0ZXIqPiBGaWx0ZXJCdWlsZGVySGFzaE1hcDsKKyAgICBGaWx0ZXJC
dWlsZGVySGFzaE1hcCBtX21hcDsKK307CisKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggYjQ5MmE2YWQz
OWM2NmU5OWYyZmVjYzEzMmY0Y2M0NTI1ZDE5MDBkZi4uYThhZmUwZjBlNTk1NWJlN2U3YjM0OTc4
YzAwOGEyZTc4ODQ1MGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0yMTYsNyArMjE2LDkgQEAgYm9vbCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBvcGUKICAgICAgICAgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBvcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5hdChpKS5nZXQoKTsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJP
cGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFOiB7Ci0gICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZp
bHRlcihkb2N1bWVudCwgcHJldmlvdXNFZmZlY3QsIHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbikpOworICAgICAgICAgICAgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKiByZWZlcmVuY2VPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgZWZmZWN0ID0g
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoZG9jdW1lbnQsIHByZXZpb3VzRWZmZWN0LCByZWZlcmVuY2VP
cGVyYXRpb24pOworICAgICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLT5zZXRGaWx0ZXJFZmZl
Y3QoZWZmZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDk1NzlkZDBhZTZjZTNkZDZlNmU4MGYxYzBjN2Y5NWI4OGY3OWU4
ZTcuLjdkMTRkMGE1ZDlkNzQzNGZjNGEwY2E0Yjc3ZTQ0MzVlMDJjYTdkNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTEwMiw3ICs1MTAyLDEyIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkKICAgICAgICAgLy8g
Zm9yIGxvYWRpbmcgQ1NTIHNoYWRlciBmaWxlcy4KICAgICAgICAgaWYgKFJlbmRlckxheWVyRmls
dGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8oKSkKICAgICAgICAgICAgIGZp
bHRlckluZm8tPnNldFJlbmRlcmVyKDApOwotICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8g
RWFybHktcmV0dXJuIG9ubHkgaWYgd2UgKmRvbid0KiBoYXZlIHJlZmVyZW5jZSBmaWx0ZXJzLgor
ICAgICAgICAvLyBGb3IgcmVmZXJlbmNlIGZpbHRlcnMsIHdlIHN0aWxsIHdhbnQgdGhlIEZpbHRl
ckVmZmVjdCBncmFwaCBidWlsdAorICAgICAgICAvLyBmb3IgdXMsIGV2ZW4gaWYgd2UncmUgY29t
cG9zaXRlZC4KKyAgICAgICAgaWYgKCFyZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0ZXIoKS5oYXNS
ZWZlcmVuY2VGaWx0ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gZW5zdXJlRmlsdGVySW5mbygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171343</attachid>
            <date>2012-10-29 17:14:33 -0700</date>
            <delta_ts>2012-10-29 17:20:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121029201247.patch</filename>
            <type>text/plain</type>
            <size>43150</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi4xOGNlZTIxMWM4MGEwMWY2MDJmMzAyYmMzZGUw
NTA3OGU4Njg5Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yNiAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAg
PGNjYW1lcm9uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBhZGRpdGlv
bmFsIG1lbW9yeSBtYW5hZ2VtZW50IGZpZWxkcyB0byBXZWJHcmFwaGljc0NvbnRleHQzRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI5MmMzMzY0Nzc5YjJiNzNhNzFiNjQzYzQ4Mjk2Mzc3MGFmMDBiODkuLjQ1ZTVh
MzZiOWVlN2IzNDBjZWMzM2I3YjAwMGE0NzllMmYzNTA2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2NyBAQAorMjAxMi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJz
IG9uIGNvbXBvc2l0ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFz
ICJwcml2YXRlIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWls
ZGVyIGFuZCBzZXRMYXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0
aGVyZSdzIGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VG
aWx0ZXIpOgorICAgICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9u
IGZvciBidWlsZGluZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0
RmlsdGVyRWZmZWN0KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIElt
cGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBj
cmVhdGlvbiBvZiBTa0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAg
ICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZp
bHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJ
bWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZv
ciBGRUdhdXNzaWFuQmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRp
bmc6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNr
SW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVp
bGRlcjo6YnVpbGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9T
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNs
YXNzIGZvciBidWlsZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmls
dGVyRWZmZWN0IERBRy4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0
LgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1
aWxkaW5nIEZpbHRlckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUg
dGhlCisgICAgICAgIGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biBpdHNlbGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAg
ICAgIEV2ZW4gd2hlbiBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2Ug
ZmlsdGVyIGluIHRoZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFH
IGZyb20gaXQuCisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRoYXQgdXNlZCB0
byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKaW5kZXggN2VjNTE2NTU1ZWQzOWQ4MWVkMDk4MjllM2JmMjE0MzA0ZDQ0
ZjBmZi4uNmEzN2QyNzhjMTIwNTUyNDdlMDUxNDFkODc2MmUyYzEzZmQ2MjE1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBjbGFzcyBTa01hdHJpeDQ0OworY2xhc3MgU2tJbWFn
ZUZpbHRlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0
ZTsKQEAgLTEyNSw2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlv
bnMgb2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9w
ZXJhdGlvbnMmKSA9IDA7CiAKKyAgICAvLyBTZXQgdGhlIHJvb3Qgb2YgdGhlIGltYWdlIGZpbHRl
ciBncmFwaCBmb3IgdGhpcyBsYXllci4gVGhlIAorICAgIC8vIGltcGxlbWVudGF0aW9uIHNob3Vs
ZCBncmFiIGEgcmVmIG9uIHRoZSBwYXNzZWQtaW4gZmlsdGVyIGluIG9yZGVyCisgICAgLy8gdG8g
cmV0YWluIG93bmVyc2hpcC4gVGhlIHBhc3NlZC1pbiBncmFwaCB3aWxsIGJlIHVucmVmJ2VkIGJ5
IHRoZQorICAgIC8vIGNhbGxlciBhZnRlciB0aGlzIGNhbGwuCisgICAgdmlydHVhbCB2b2lkIHNl
dEZpbHRlcihTa0ltYWdlRmlsdGVyKikgPSAwOworCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBw
aXhlbHMgdGhhdCBzaG93IHRocm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAg
ICAvLyBOb3RlOiBUaGVzZSBmaWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0
IGFyZSBkcmF3biBkaXJlY3RseQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRo
IGFuIG9wYXF1ZSBiYWNrZ3JvdW5kLiBUaGlzIG1lYW5zIGlmIGFuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDU5ZjY0NzQxZDhlMjU5ZTVjMzA0NzU5NGU5MjhiZmE4
ZmM5NWI5ZjEuLjMyMzNjYWM3OWUzYTc1NTUzMWMzNWQ0MmI1OTdiNWUyYzk5ZGIxNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTMsNiArMTEzLDcgQEAKICAg
ICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYycsCiAgICAgICAnLi4vcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycycsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9hcm0nLAorICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYScsCiAgICAg
ICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1JywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZScsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYScsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggYTUyYTQzMWNkOGYyODk5ZTk3YjI2NjM0OTIzNDc4YjRmYTJiMTE3MC4uYjkx
ZjkzNTE5YzY5NGQ4MGFmZGU1ODczODQ5MGM1ZDczMTdmMjZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNTA1Nyw2ICs1MDU3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVy
QnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhNzYyZjhlMWMwYjQ3ODMwNzgyOWFjYzA5YWMyNjgyNGFlYzUwYjhhLi40MDc5
ZTBiZjExODRkY2U3Mzk3OTYwYzhkOTVkNzMxYTBmNDc5YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDksNyArMjA5LDcg
QEAKIAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5l
cmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFF
OTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDODU5QzAxMjc0NTc1
NDAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1h
dGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA4QzkyNTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTcwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi87IH07Ci0JCTA4QzkyNTFBMEZDQzdDNEEwMDQ4
MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAq
LzsgfTsKKwkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0
QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4Q0EzRDQ0MTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdTdGF0
aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGlj
UHJvcGVydHlXaXRoUGFyZW50VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4RDQ2Q0UzMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4
RTRGRTQ2MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU0RkU0NTBFMkJENDE0MDBG
NENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2YTQwNWU0ZmM0ODM0Njc3MzBjNzJm
NWNlYTZlZi4uZjBkMDQ3M2ZkN2IyZTY1NDY4MGMyZGIyOTc4MmZlOWNkMGNmOGIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgi
CiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5oPgpAQCAtMzc5LDE1ICszODAsMjUg
QEAgc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVy
YXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGkKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBXZWJG
aWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7Ci0gICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9w
ZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKLSAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRm
b3JtIGxheWVyLCBhcyB0aGV5IGFyZQotICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBz
b2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKFdlYkZp
bHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoRmls
dGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBG
b3Igbm93LCB3ZSBvbmx5IHVzZSBTa0ltYWdlRmlsdGVycyBpZiB0aGVyZSBpcyBhIHJlZmVyZW5j
ZQorICAgIC8vIGZpbHRlciBpbiB0aGUgY2hhaW4uIE9uY2UgYWxsIGlzc3VlcyBoYXZlIGJlZW4g
aXJvbmVkIG91dCwgd2Ugc2hvdWxkCisgICAgLy8gc3dpdGNoIGFsbCBmaWx0ZXJpbmcgb3ZlciB0
byB0aGlzIHBhdGgsIGFuZCByZW1vdmUgc2V0RmlsdGVycygpIGFuZAorICAgIC8vIFdlYkZpbHRl
ck9wZXJhdGlvbnMgYWx0b2dldGhlci4KKyAgICBpZiAoZmlsdGVycy5oYXNSZWZlcmVuY2VGaWx0
ZXIoKSkgeworICAgICAgICBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAg
IFNrSW1hZ2VGaWx0ZXIqIGltYWdlRmlsdGVyID0gYnVpbGRlci5idWlsZChmaWx0ZXJzKTsKKyAg
ICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVyKGltYWdlRmlsdGVyKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CisgICAgICAgIGlm
ICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRl
cnMsIHdlYkZpbHRlcnMpKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZpbHRlcnMg
YXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFzIHRoZXkgYXJlCisgICAgICAg
ICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgorICAgICAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOworICAg
ICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgfQotICAgIG1fbGF5ZXItPmxheWVy
KCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OnNl
dEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5kZXggZTU4YzhhM2QwMWVkYzRhN2RjODNmMDBi
ZDgyMDJkMjFhOWU5NjAyNC4uNWM3MWMyYjcyNTA2NjQ3MWJjNzM4MmFkZjJjY2QxMmM5NzVlMDhh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVy
KiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgK
aW5kZXggMjdhNGFjODQzOGY5YTllMjY4NDM5YmMzMmQyZGZkODkyMWNlNDFjMy4uOTliNjUwYjlj
MWQ4NDVjMjQ0OTc5OTJiZGQxYmI0OTFmY2NiYzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTUx
LDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEo
KTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaAppbmRleCA3YjNiZGNlMjkxNzMzNjcxNjBiMjEwZTNmMDM1MjIwNTdlYTY5
ZWQ3Li5kYWYzZWYxN2EyYzJmNzk3ODkxMGViMDE0MTliYWE5ZjhhYmE5ZDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgcGxh
dGZvcm1BcHBseUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4
Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmls
dGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYK
IAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggNDQ4NzgzNWU4YzBlZjMwMjZlOGU5
ZmNiNjhhZjQ4MzkyMmU3Y2FhNS4uMjg4OTg1ZDQyODhlMjkzMGRkODYyZjc0ODIxNTg2YWVhYTE5
MTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRkVMaWdodGluZyA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIq
IGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICAgICB2aXJ0dWFs
IGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAppbmRleCAx
OWRhNjM1YTJlMDNhNjFhZjA0MDhlY2Q0ZjkwZmRlNGIwZTA0NzMxLi5iMzhlNjczYzM4MjIyYzY0
YjdlZGY4MzM2ODlkZWM2MzA3MGNhZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKQEAgLTQ5LDYgKzQ5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICNp
ZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2
aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1
aWxkZXIqKTsKKwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKaW5kZXggMTYyMGFiZjFlM2Q1ZTY2ZDE3ZDQ1MTZlNDQ4Zjc1MTk5YWI4ZDA0ZC4uMDY5ZWRl
M2VlYWQzYWY3MDIzZDllOWU5ZDFjYWI3M2U4OWUwMGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0z
NSw2ICszNSwxMCBAQAogCiBzdGF0aWMgY29uc3QgZmxvYXQga01heEZpbHRlclNpemUgPSA1MDAw
LjBmOwogCisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa0ltYWdlRmlsdGVyOworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwpAQCAtNDIsNiArNDYsMTAgQEAgY2xh
c3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBUZXh0U3RyZWFtOwog
CisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOworI2VuZGlmCisK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0VmVjdG9y
OwogCiBlbnVtIEZpbHRlckVmZmVjdFR5cGUgewpAQCAtOTUsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAjaWYgVVNFKFNL
SUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYWY0NGUzNjAyZjcwMTgyZDE4
ZTA3NTIxMGU5NmZhZGRmNWE0YjY5Ni4uYjQ5YWZkNjEyNzE0NTYzNTY2ZTNiYTE0NTIxNmEzN2Q4
OTk1YTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAKICAg
ICBEYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXREYXRhKFBhc3NPd25QdHI8RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0ZXJFZmZlY3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJp
dmF0ZToKIApAQCAtMTk1LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwog
ICAgIFN0cmluZyBtX2ZyYWdtZW50OwogICAgIE93blB0cjxEYXRhPiBtX2RhdGE7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gbV9maWx0ZXJFZmZlY3Q7CiB9OwogCiAvLyBHUkFZU0NBTEUsIFNF
UElBLCBTQVRVUkFURSBhbmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNv
bG9yIG1hdHJpeCBlZmZlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAppbmRleCBmZGNhNDMy
ZjRkMzQ4YTFiOTdkNDg3MmY1YWI2YzMxNWI1NjQ3MDQxLi44MDg5ZjNiNTBkNjA1OTZmZmI4NDY5
YTU0YjViM2U0Zjg4ZjFiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJTa0JpdG1h
cFNvdXJjZS5oIgogI2luY2x1ZGUgIlNrQmxlbmRJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NCw2
ICs4NSwxNCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVCbGVuZDo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tp
YUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0ltYWdlRmlsdGVyKiBmb3Jl
Z3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpOworICAgIFNrSW1hZ2VGaWx0
ZXIqIGJhY2tncm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgxKSk7CisgICAgU2tC
bGVuZEltYWdlRmlsdGVyOjpNb2RlIG1vZGUgPSB0b1NraWFNb2RlKG1fbW9kZSk7CisgICAgcmV0
dXJuIG5ldyBTa0JsZW5kSW1hZ2VGaWx0ZXIobW9kZSwgYmFja2dyb3VuZCwgZm9yZWdyb3VuZCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMGZkMDc3NzZlMDMw
NzMwOGExMThhNjMwOTYwNDNlMGY5YTUwNTNlYi4uYWZmYmFlYWQwNDgwNTk3ZWZhOWMwM2FiZmU3
Y2JlMjM1NmYyYzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBA
IC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogCiAjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgi
CiAjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwyNCArODIsMTUg
QEAgc3RhdGljIHZvaWQgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChTa1NjYWxhciBtYXRyaXhbMjBd
KQogICAgIG1hdHJpeFsxN10gPSAwLjA3MjFmOwogfQogCi1ib29sIEZFQ29sb3JNYXRyaXg6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKK3N0YXRpYyBTa0NvbG9yRmlsdGVyKiBjcmVhdGVDb2xvckZpbHRl
cihDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgZmxvYXQqIHZhbHVlcykKIHsKLSAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlm
ICghcmVzdWx0SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKLQotICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50
KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLQogICAgIFNrU2NhbGFyIG1hdHJpeFsy
MF07Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAy
MDsgKytpKQotICAgICAgICAgICAgbWF0cml4W2ldID0gbV92YWx1ZXNbaV07CisgICAgICAgICAg
ICBtYXRyaXhbaV0gPSB2YWx1ZXNbaV07CiAKICAgICAgICAgbWF0cml4WzRdICo9IFNrU2NhbGFy
KDI1NSk7CiAgICAgICAgIG1hdHJpeFs5XSAqPSBTa1NjYWxhcigyNTUpOwpAQCAtMTA1LDE1ICs5
OCwyOSBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAg
bWF0cml4WzE5XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURTogCi0gICAgICAgIHNhdHVyYXRlTWF0cml4KG1fdmFs
dWVzWzBdLCBtYXRyaXgpOworICAgICAgICBzYXR1cmF0ZU1hdHJpeCh2YWx1ZXNbMF0sIG1hdHJp
eCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFU
RToKLSAgICAgICAgaHVlUm90YXRlTWF0cml4KG1fdmFsdWVzWzBdLCBtYXRyaXgpOworICAgICAg
ICBodWVSb3RhdGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgogICAgICAgICBsdW1p
bmFuY2VUb0FscGhhTWF0cml4KG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBy
ZXR1cm4gbmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KTsKK30KKworYm9vbCBGRUNvbG9y
TWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCit7CisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZl
Y3QoMCk7CisKKyAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50
UmVjdCgpLnNpemUoKSk7CisKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVy
KGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAKICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMjIsMTIgKzEyOSwxOSBAQCBib29s
IEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrQ2FudmFzKiBjYW52
YXMgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7
CiAgICAgU2tQYWludCBwYWludDsKLSAgICBwYWludC5zZXRDb2xvckZpbHRlcihuZXcgU2tDb2xv
ck1hdHJpeEZpbHRlcihtYXRyaXgpKS0+dW5yZWYoKTsKKyAgICBwYWludC5zZXRDb2xvckZpbHRl
cihmaWx0ZXIpOwogICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01v
ZGUpOwogICAgIGNhbnZhcy0+ZHJhd0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCksIDAsIDAs
ICZwYWludCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIp
Cit7CisgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxk
KGlucHV0RWZmZWN0KDApKSk7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRl
cihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkpOworICAgIHJldHVy
biBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShmaWx0ZXIsIGlucHV0KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpICYmIFVT
RShTS0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRleCBiNjk0
YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1Li5mNWY0NmRhZWRjYTNiNTNlZjEz
NGY1N2Q2ZDY5MTgxNWFlM2Y5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJT
a2lhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWEuaCIKICNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw1
ICs2MiwxMSBAQCBib29sIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJ
bWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0
b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgw
KSkpOworICAgIHJldHVybiBuZXcgU2tCbHVySW1hZ2VGaWx0ZXIoU2tGbG9hdFRvU2NhbGFyKG1f
c3RkWCksIFNrRmxvYXRUb1NjYWxhcihtX3N0ZFkpLCBpbnB1dCk7Cit9CisKIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IDFhNmEyZDcwZWU3MDYzODFlOGJk
Y2JjMGE5YTlhMzc0NWYzODY2ZTMuLmQ5MjEyMmUwYzBmZDkxZjBmNWE3ZjE0YTA5YTQ4NmY3Zjdh
ZDA2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtMzEsMzIgKzMxLDE0
IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUG9pbnRMaWdodFNv
dXJjZS5oIgogI2luY2x1ZGUgIlNrTGlnaHRpbmdJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKK1NrSW1hZ2VGaWx0ZXIqIEZFTGlnaHRpbmc6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCiB7Ci0gICAgLy8gRm9yIG5vdywgb25seSB1c2UgdGhl
IHNraWEgaW1wbGVtZW50YXRpb24gZm9yIGFjY2VsZXJhdGVkIHJlbmRlcmluZy4KLSAgICBpZiAo
ZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSAhPSBBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0
IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKTsKLQotICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwot
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLQotICAgIFNrUGFp
bnQgcGFpbnQ7CisgICAgU2tJbWFnZUZpbHRlciogaW5wdXQgPSBidWlsZGVyID8gYnVpbGRlci0+
YnVpbGQoaW5wdXRFZmZlY3QoMCkpIDogMDsKICAgICBzd2l0Y2ggKG1fbGlnaHRTb3VyY2UtPnR5
cGUoKSkgewogICAgIGNhc2UgTFNfRElTVEFOVDogewogICAgICAgICBEaXN0YW50TGlnaHRTb3Vy
Y2UqIGRpc3RhbnRMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PERpc3RhbnRMaWdodFNvdXJjZSo+
KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtNjYsMjAgKzQ4LDE4IEBAIGJvb2wgRkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZihh
emltdXRoUmFkKSAqIGNvc2YoZWxldmF0aW9uUmFkKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpbmYoZWxldmF0aW9uUmFkKSk7CiAgICAgICAgIGlmIChtX3NwZWN1bGFyQ29uc3RhbnQg
PiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmls
dGVyOjpDcmVhdGVEaXN0YW50TGl0U3BlY3VsYXIoZGlyZWN0aW9uLCBtX2xpZ2h0aW5nQ29sb3Iu
cmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBv
bmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRl
cjo6Q3JlYXRlRGlzdGFudExpdFNwZWN1bGFyKGRpcmVjdGlvbiwgbV9saWdodGluZ0NvbG9yLnJn
YigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25l
bnQsIGlucHV0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0
ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50TGl0RGlmZnVzZShkaXJlY3Rp
b24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0
YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFNrTGln
aHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdERpZmZ1c2UoZGlyZWN0aW9uLCBtX2xp
Z2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwgaW5w
dXQpOwogICAgIH0KICAgICBjYXNlIExTX1BPSU5UOiB7CiAgICAgICAgIFBvaW50TGlnaHRTb3Vy
Y2UqIHBvaW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxQb2ludExpZ2h0U291cmNlKj4obV9s
aWdodFNvdXJjZS5nZXQoKSk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbiA9IHBvaW50
TGlnaHRTb3VyY2UtPnBvc2l0aW9uKCk7CiAgICAgICAgIFNrUG9pbnQzIHNrUG9zaXRpb24ocG9z
aXRpb24ueCgpLCBwb3NpdGlvbi55KCksIHBvc2l0aW9uLnooKSk7CiAgICAgICAgIGlmIChtX3Nw
ZWN1bGFyQ29uc3RhbnQgPiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tM
aWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1f
bGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwg
bV9zcGVjdWxhckV4cG9uZW50KSktPnVucmVmKCk7CisgICAgICAgICAgICByZXR1cm4gU2tMaWdo
dGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1fbGln
aHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9z
cGVjdWxhckV4cG9uZW50LCBpbnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50
LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZm
dXNlKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1f
ZGlmZnVzZUNvbnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAg
cmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZmdXNlKHNrUG9z
aXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNv
bnN0YW50LCBpbnB1dCk7CiAgICAgfQogICAgIGNhc2UgTFNfU1BPVDogewogICAgICAgICBTcG90
TGlnaHRTb3VyY2UqIHNwb3RMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PFNwb3RMaWdodFNvdXJj
ZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtOTAsMTUgKzcwLDM5IEBAIGJvb2wgRkVMaWdo
dGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICBpZiAoIWxpbWl0aW5nQ29uZUFuZ2xl
IHx8IGxpbWl0aW5nQ29uZUFuZ2xlID4gOTAgfHwgbGltaXRpbmdDb25lQW5nbGUgPCAtOTApCiAg
ICAgICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZSA9IDkwOwogICAgICAgICBpZiAobV9zcGVjdWxh
ckNvbnN0YW50ID4gMCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRp
bmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNw
ZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCks
IG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCkp
LT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3Jl
YXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxp
bWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBt
X3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCwgaW5wdXQpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0
ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNlKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25l
bnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNj
YWxlLCBtX2RpZmZ1c2VDb25zdGFudCkpLT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNl
KGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBt
X2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwg
aW5wdXQpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gMDsKICAgICB9Cit9CisK
K2Jvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIC8vIEZvciBub3cs
IG9ubHkgdXNlIHRoZSBza2lhIGltcGxlbWVudGF0aW9uIGZvciBhY2NlbGVyYXRlZCByZW5kZXJp
bmcuCisvLyAgICBpZiAoZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSAhPSBBY2NlbGVyYXRlZCkK
Ky8vICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgw
KTsKKworICAgIEludFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworCisgICAgc2V0SXNBbHBoYUltYWdlKGluLT5p
c0FscGhhSW1hZ2UoKSk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VC
dWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBOYXRpdmVJbWFn
ZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGRzdENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4
dCgpOworCisgICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRJbWFnZUZpbHRlcihjcmVh
dGVJbWFnZUZpbHRlcigwKSktPnVucmVmKCk7CiAgICAgZHN0Q29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpLT5kcmF3Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSwgZHJhd2lu
Z1JlZ2lvbi5sb2NhdGlvbigpLngoKSwgZHJhd2luZ1JlZ2lvbi5sb2NhdGlvbigpLnkoKSwgJnBh
aW50KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lh
LmNwcAppbmRleCBlNzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJkYjA1Li5iMmU5
ZjRmY2ZiN2UzZWFmMjIxOWFjNDU2YzU3ZjI4NWU4Mzc1OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
TW9ycGhvbG9neVNraWEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRkVNb3JwaG9s
b2d5LmgiCiAKICNpbmNsdWRlICJTa01vcnBob2xvZ3lJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUg
IlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02
Miw1ICs2MywxNSBAQCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNraWEoKQogICAg
IHJldHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRU1vcnBob2xvZ3k6OmNyZWF0ZUlt
YWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tBdXRv
VFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDAp
KSk7CisgICAgU2tTY2FsYXIgcmFkaXVzWCA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1gpOwor
ICAgIFNrU2NhbGFyIHJhZGl1c1kgPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRpdXNZKTsKKyAgICBp
ZiAobV90eXBlID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUpCisgICAgICAgIHJldHVy
biBuZXcgU2tEaWxhdGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7CisgICAg
cmV0dXJuIG5ldyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQpOwor
fQorCiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDBiZWY2ODAzYjgzNjMxYTczNDBmZmE0ZTljYzlkZDhlMmNmNTc2
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcApAQCAtMCwwICsxLDI3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb25zLmgiCisjaW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0Nv
bG9yRmlsdGVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgi
CisjaW5jbHVkZSAiU2tNYXRyaXguaCIKKworbmFtZXNwYWNlIHsKKwordm9pZCBnZXRCcmlnaHRu
ZXNzTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1z
ZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIC8vICAgIE9sZCBpbXBs
ZW1lbnRhdGlvbiwgYSBsYSB0aGUgZHJhZnQgc3BlYywgYSBzdHJhaWdodC11cCBzY2FsZSwKKyAg
ICAvLyAgICByZXByZXNlbnRpbmcgPGZlRnVuY1tSfEd8Ql0gdHlwZT0ibGluZWFyIiBzbG9wZT0i
W2Ftb3VudF0iPgorICAgIC8vICAgIChTZWUgaHR0cDovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3
LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNicmlnaHRuZXNzRXF1aXZhbGVudCkKKyAgICAv
LyBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIC8vIG1h
dHJpeFsxOF0gPSAxOworICAgIC8vICAgIE5ldyBpbXBsZW1lbnRhdGlvbiwgYSB0cmFuc2xhdGlv
biBpbiBjb2xvciBzcGFjZSwgcmVwcmVzZW50aW5nCisgICAgLy8gICAgPGZlRnVuY1tSfEd8Ql0g
dHlwZT0ibGluZWFyIiBpbnRlcmNlcHQ9IlthbW91bnRdIi8+CisgICAgLy8gICAgKFNlZSBodHRw
czovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTE1NjQ3KQorICAgIG1h
dHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBtYXRyaXhbMThdID0gMTsKKyAgICBt
YXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gYW1vdW50ICogMjU1OworfQorCit2
b2lkIGdldENvbnRyYXN0TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkK
K3sKKyAgICBtZW1zZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1h
dHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAgbWF0cml4WzRd
ID0gbWF0cml4WzldID0gbWF0cml4WzE0XSA9ICgtMC41ZiAqIGFtb3VudCArIDAuNWYpICogMjU1
OworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldFNhdHVyYXRlTWF0cml4KGZsb2F0
IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1
ZXMgYXJlIGNvbXB1dGVkIHRvIGVuc3VyZSBtYXRyaXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisg
ICAgLy8gZm9yIGFtb3VudCBpbiBbMC4uMV0KKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyAwLjc4
N2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50Owor
ICAgIG1hdHJpeFsyXSA9IDEuZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhbMV0pOworICAgIG1hdHJp
eFszXSA9IG1hdHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gMC4yMTNmICog
YW1vdW50OworICAgIG1hdHJpeFs2XSA9IDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudDsKKyAgICBt
YXRyaXhbN10gPSAxLmYgLSAobWF0cml4WzVdICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0g
PSBtYXRyaXhbOV0gPSAwOworICAgIG1hdHJpeFsxMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91
bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKKyAgICBtYXRy
aXhbMTJdID0gMS5mIC0gKG1hdHJpeFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNd
ID0gbWF0cml4WzE0XSA9IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhb
MTddID0gbWF0cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0
SHVlUm90YXRlTWF0cml4KGZsb2F0IGh1ZSwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBm
bG9hdCBjb3NIdWUgPSBjb3NmKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIGZsb2F0IHNpbkh1
ZSA9IHNpbmYoaHVlICogcGlGbG9hdCAvIDE4MCk7CisgICAgbWF0cml4WzBdID0gMC4yMTNmICsg
Y29zSHVlICogMC43ODdmIC0gc2luSHVlICogMC4yMTNmOworICAgIG1hdHJpeFsxXSA9IDAuNzE1
ZiAtIGNvc0h1ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZjsKKyAgICBtYXRyaXhbMl0gPSAw
LjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgKyBzaW5IdWUgKiAwLjkyOGY7CisgICAgbWF0cml4WzNd
ID0gbWF0cml4WzRdID0gMDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIx
M2YgKyBzaW5IdWUgKiAwLjE0M2Y7CisgICAgbWF0cml4WzZdID0gMC43MTVmICsgY29zSHVlICog
MC4yODVmICsgc2luSHVlICogMC4xNDBmOworICAgIG1hdHJpeFs3XSA9IDAuMDcyZiAtIGNvc0h1
ZSAqIDAuMDcyZiAtIHNpbkh1ZSAqIDAuMjgzZjsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0g
PSAwOworICAgIG1hdHJpeFsxMF0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUg
KiAwLjc4N2Y7CisgICAgbWF0cml4WzExXSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiArIHNp
bkh1ZSAqIDAuNzE1ZjsKKyAgICBtYXRyaXhbMTJdID0gMC4wNzJmICsgY29zSHVlICogMC45Mjhm
ICsgc2luSHVlICogMC4wNzJmOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKyAg
ICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSAwOworICAgIG1hdHJpeFsx
OF0gPSAxOworICAgIG1hdHJpeFsxOV0gPSAwOworfQorCit2b2lkIGdldEludmVydE1hdHJpeChm
bG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwg
MCwgMjAgKiBzaXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBt
YXRyaXhbMTJdID0gMSAtIDIgKiBhbW91bnQ7CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0g
bWF0cml4WzE0XSA9IGFtb3VudCAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9p
ZCBnZXRPcGFjaXR5TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sK
KyAgICBtZW1zZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJp
eFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSAxOworICAgIG1hdHJpeFsxOF0gPSBhbW91
bnQ7Cit9CisKK3ZvaWQgZ2V0R3JheXNjYWxlTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIg
bWF0cml4WzIwXSkKK3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIHRv
IGVuc3VyZSBtYXRyaXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisgICAgLy8gZm9yIGFtb3VudCBp
biBbMC4uMV0KKyAgICBtYXRyaXhbMF0gPSAwLjIxMjZmICsgMC43ODc0ZiAqIGFtb3VudDsKKyAg
ICBtYXRyaXhbMV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0g
PSAxLmYgLSAobWF0cml4WzBdICsgbWF0cml4WzFdKTsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhb
NF0gPSAwOworCisgICAgbWF0cml4WzVdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBhbW91bnQ7Cisg
ICAgbWF0cml4WzZdID0gMC43MTUyZiArIDAuMjg0OGYgKiBhbW91bnQ7CisgICAgbWF0cml4Wzdd
ID0gMS5mIC0gKG1hdHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0cml4WzhdID0gbWF0cml4
WzldID0gMDsKKworICAgIG1hdHJpeFsxMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbMTFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzEyXSA9IDEuZiAtIChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0cml4WzEzXSA9
IG1hdHJpeFsxNF0gPSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhb
MTddID0gbWF0cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0
U2VwaWFNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1h
dHJpeFswXSA9IDAuMzkzZiArIDAuNjA3ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0gPSAwLjc2
OWYgLSAwLjc2OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMC4xODlmIC0gMC4xODlmICog
YW1vdW50OworICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisKKyAgICBtYXRyaXhbNV0g
PSAwLjM0OWYgLSAwLjM0OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzZdID0gMC42ODZmICsgMC4z
MTRmICogYW1vdW50OworICAgIG1hdHJpeFs3XSA9IDAuMTY4ZiAtIDAuMTY4ZiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0gPSAwOworCisgICAgbWF0cml4WzEwXSA9IDAuMjcy
ZiAtIDAuMjcyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTFdID0gMC41MzRmIC0gMC41MzRmICog
YW1vdW50OworICAgIG1hdHJpeFsxMl0gPSAwLjEzMWYgKyAwLjg2OWYgKiBhbW91bnQ7CisgICAg
bWF0cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsx
Nl0gPSBtYXRyaXhbMTddID0gbWF0cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9
CisKK1NrSW1hZ2VGaWx0ZXIqIGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKFNrU2NhbGFyIG1hdHJp
eFsyMF0sIFNrSW1hZ2VGaWx0ZXIqIGlucHV0KQoreworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9y
RmlsdGVyPiBjb2xvckZpbHRlcihuZXcgU2tDb2xvck1hdHJpeEZpbHRlcihtYXRyaXgpKTsKKyAg
ICByZXR1cm4gU2tDb2xvckZpbHRlckltYWdlRmlsdGVyOjpDcmVhdGUoY29sb3JGaWx0ZXIsIGlu
cHV0KTsKK30KKworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyOjpTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCkKK3sKK30KKworU2tJbWFnZUZpbHRlciog
U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCit7Cisg
ICAgaWYgKCFlZmZlY3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgRmlsdGVyQnVpbGRlckhh
c2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChlZmZlY3QpOworICAgIGlmIChpdCAhPSBt
X21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFNrSW1hZ2VGaWx0
ZXIqIGZpbHRlciA9IGVmZmVjdC0+Y3JlYXRlSW1hZ2VGaWx0ZXIodGhpcyk7CisgICAgbV9tYXAu
c2V0KGVmZmVjdCwgZmlsdGVyKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorCitTa0ltYWdlRmls
dGVyKiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBvcGVyYXRpb25zKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZpbHRlciA9IDA7CisgICAgU2tT
Y2FsYXIgbWF0cml4WzIwXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhdGlvbnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcCA9ICpvcGVy
YXRpb25zLmF0KGkpOworICAgICAgICBzd2l0Y2ggKG9wLmdldE9wZXJhdGlvblR5cGUoKSkgewor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAgICBG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbio+KCZvcCktPmZpbHRlckVmZmVjdCgpOworICAgICAgICAgICAgLy8gRklY
TUU6IGhvb2sgdXAgcGFyZW50IGZpbHRlciB0byBpbWFnZSBzb3VyY2UKKyAgICAgICAgICAgIGZp
bHRlciA9IFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGZpbHRlckVmZmVjdCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
R1JBWVNDQUxFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25z
dCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAg
ICAgICAgICBnZXRHcmF5c2NhbGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAg
ZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNF
UElBOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAg
ICBnZXRTZXBpYU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBj
cmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsK
KyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldFNh
dHVyYXRlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRIdWVS
b3RhdGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRl
TWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogeworICAgICAg
ICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0SW52
ZXJ0TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1h
dHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAg
ICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRPcGFj
aXR5TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1h
dHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7CisgICAg
ICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRC
cmlnaHRuZXNzTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNy
ZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewor
ICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAg
Z2V0Q29udHJhc3RNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0g
Y3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKKyAg
ICAgICAgICAgIGZsb2F0IHBpeGVsUmFkaXVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRl
ck9wZXJhdGlvbio+KCZvcCktPnN0ZERldmlhdGlvbigpLmdldEZsb2F0VmFsdWUoKTsKKyAgICAg
ICAgICAgIGZpbHRlciA9IG5ldyBTa0JsdXJJbWFnZUZpbHRlcihwaXhlbFJhZGl1cywgcGl4ZWxS
YWRpdXMsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKy8vICAgICAgICAgICAgY29uc3Qg
RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wID0gKnN0YXRpY19jYXN0PGNv
bnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmb3ApOworICAgICAgICAgICAgLy8gRklY
TUU6IGRvIG9mZnNldCBhbmQgYmx1cgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNU
T006CisgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkLgorI2VuZGlmCisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246Ok5PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZmlsdGVyOworfQorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjdiZDY4MzIwYjZhOTI5YzYxMDA5ODY4YjU3MTQ2ZDFkZjYyNTk0
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisjZGVmaW5lIFNraWFJbWFnZUZp
bHRlckJ1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworY2xhc3MgU2tJbWFn
ZUZpbHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmlsdGVyRWZmZWN0OworY2xh
c3MgRmlsdGVyT3BlcmF0aW9uczsKKworY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlciB7Citw
dWJsaWM6CisgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlcigpOworCisgICAgU2tJbWFnZUZpbHRl
ciogYnVpbGQoRmlsdGVyRWZmZWN0Kik7CisgICAgU2tJbWFnZUZpbHRlciogYnVpbGQoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYpOworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8RmlsdGVy
RWZmZWN0KiwgU2tJbWFnZUZpbHRlcio+IEZpbHRlckJ1aWxkZXJIYXNoTWFwOworICAgIEZpbHRl
ckJ1aWxkZXJIYXNoTWFwIG1fbWFwOworfTsKKworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBiNDkyYTZh
ZDM5YzY2ZTk5ZjJmZWNjMTMyZjRjYzQ1MjVkMTkwMGRmLi5hOGFmZTBmMGU1OTU1YmU3ZTdiMzQ5
NzhjMDA4YTJlNzg4NDUwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTIxNiw3ICsyMTYsOSBAQCBib29sIEZpbHRlckVm
ZmVjdFJlbmRlcmVyOjpidWlsZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIG9wZQogICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IG9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwogICAgICAgICBzd2l0Y2ggKGZpbHRl
ck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNl
RmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKSk7CisgICAgICAgICAgICBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBlZmZlY3Qg
PSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJldmlvdXNFZmZlY3QsIHJlZmVyZW5j
ZU9wZXJhdGlvbik7CisgICAgICAgICAgICByZWZlcmVuY2VPcGVyYXRpb24tPnNldEZpbHRlckVm
ZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggOTU3OWRkMGFlNmNlM2RkNmU2ZTgwZjFjMGM3Zjk1Yjg4Zjc5
ZThlNy4uN2QxNGQwYTVkOWQ3NDM0ZmM0YTBjYTRiNzdlNDQzNWUwMmNhN2Q1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MTAyLDcgKzUxMDIsMTIgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3QoKQogICAgICAgICAv
LyBmb3IgbG9hZGluZyBDU1Mgc2hhZGVyIGZpbGVzLgogICAgICAgICBpZiAoUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygpKQogICAgICAgICAgICAg
ZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoMCk7Ci0gICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBFYXJseS1yZXR1cm4gb25seSBpZiB3ZSAqZG9uJ3QqIGhhdmUgcmVmZXJlbmNlIGZpbHRlcnMu
CisgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZmlsdGVycywgd2Ugc3RpbGwgd2FudCB0aGUgRmls
dGVyRWZmZWN0IGdyYXBoIGJ1aWx0CisgICAgICAgIC8vIGZvciB1cywgZXZlbiBpZiB3ZSdyZSBj
b21wb3NpdGVkLgorICAgICAgICBpZiAoIXJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLmhh
c1JlZmVyZW5jZUZpbHRlcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSBlbnN1cmVGaWx0ZXJJbmZvKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171345</attachid>
            <date>2012-10-29 17:21:03 -0700</date>
            <delta_ts>2012-11-03 16:53:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121029201917.patch</filename>
            <type>text/plain</type>
            <size>43146</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi4xOGNlZTIxMWM4MGEwMWY2MDJmMzAyYmMzZGUw
NTA3OGU4Njg5Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMC0yNiAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAg
PGNjYW1lcm9uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBhZGRpdGlv
bmFsIG1lbW9yeSBtYW5hZ2VtZW50IGZpZWxkcyB0byBXZWJHcmFwaGljc0NvbnRleHQzRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI5MmMzMzY0Nzc5YjJiNzNhNzFiNjQzYzQ4Mjk2Mzc3MGFmMDBiODkuLjQ1ZTVh
MzZiOWVlN2IzNDBjZWMzM2I3YjAwMGE0NzllMmYzNTA2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2NyBAQAorMjAxMi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJz
IG9uIGNvbXBvc2l0ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFz
ICJwcml2YXRlIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWls
ZGVyIGFuZCBzZXRMYXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0
aGVyZSdzIGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VG
aWx0ZXIpOgorICAgICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9u
IGZvciBidWlsZGluZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0
RmlsdGVyRWZmZWN0KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIElt
cGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBj
cmVhdGlvbiBvZiBTa0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAg
ICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZp
bHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJ
bWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZv
ciBGRUdhdXNzaWFuQmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRp
bmc6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNr
SW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVp
bGRlcjo6YnVpbGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9T
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNs
YXNzIGZvciBidWlsZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmls
dGVyRWZmZWN0IERBRy4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0
LgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1
aWxkaW5nIEZpbHRlckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUg
dGhlCisgICAgICAgIGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biBpdHNlbGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAg
ICAgIEV2ZW4gd2hlbiBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2Ug
ZmlsdGVyIGluIHRoZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFH
IGZyb20gaXQuCisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRoYXQgdXNlZCB0
byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKaW5kZXggN2VjNTE2NTU1ZWQzOWQ4MWVkMDk4MjllM2JmMjE0MzA0ZDQ0
ZjBmZi4uNmEzN2QyNzhjMTIwNTUyNDdlMDUxNDFkODc2MmUyYzEzZmQ2MjE1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBjbGFzcyBTa01hdHJpeDQ0OworY2xhc3MgU2tJbWFn
ZUZpbHRlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0
ZTsKQEAgLTEyNSw2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlv
bnMgb2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9w
ZXJhdGlvbnMmKSA9IDA7CiAKKyAgICAvLyBTZXQgdGhlIHJvb3Qgb2YgdGhlIGltYWdlIGZpbHRl
ciBncmFwaCBmb3IgdGhpcyBsYXllci4gVGhlIAorICAgIC8vIGltcGxlbWVudGF0aW9uIHNob3Vs
ZCBncmFiIGEgcmVmIG9uIHRoZSBwYXNzZWQtaW4gZmlsdGVyIGluIG9yZGVyCisgICAgLy8gdG8g
cmV0YWluIG93bmVyc2hpcC4gVGhlIHBhc3NlZC1pbiBncmFwaCB3aWxsIGJlIHVucmVmJ2VkIGJ5
IHRoZQorICAgIC8vIGNhbGxlciBhZnRlciB0aGlzIGNhbGwuCisgICAgdmlydHVhbCB2b2lkIHNl
dEZpbHRlcihTa0ltYWdlRmlsdGVyKikgPSAwOworCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBw
aXhlbHMgdGhhdCBzaG93IHRocm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAg
ICAvLyBOb3RlOiBUaGVzZSBmaWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0
IGFyZSBkcmF3biBkaXJlY3RseQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRo
IGFuIG9wYXF1ZSBiYWNrZ3JvdW5kLiBUaGlzIG1lYW5zIGlmIGFuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDU5ZjY0NzQxZDhlMjU5ZTVjMzA0NzU5NGU5MjhiZmE4
ZmM5NWI5ZjEuLjMyMzNjYWM3OWUzYTc1NTUzMWMzNWQ0MmI1OTdiNWUyYzk5ZGIxNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTMsNiArMTEzLDcgQEAKICAg
ICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYycsCiAgICAgICAnLi4vcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycycsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9hcm0nLAorICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYScsCiAgICAg
ICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1JywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZScsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYScsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggYTUyYTQzMWNkOGYyODk5ZTk3YjI2NjM0OTIzNDc4YjRmYTJiMTE3MC4uYjkx
ZjkzNTE5YzY5NGQ4MGFmZGU1ODczODQ5MGM1ZDczMTdmMjZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNTA1Nyw2ICs1MDU3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVy
QnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhNzYyZjhlMWMwYjQ3ODMwNzgyOWFjYzA5YWMyNjgyNGFlYzUwYjhhLi40MDc5
ZTBiZjExODRkY2U3Mzk3OTYwYzhkOTVkNzMxYTBmNDc5YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDksNyArMjA5LDcg
QEAKIAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5l
cmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFF
OTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDODU5QzAxMjc0NTc1
NDAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1h
dGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA4QzkyNTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTcwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi87IH07Ci0JCTA4QzkyNTFBMEZDQzdDNEEwMDQ4
MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAq
LzsgfTsKKwkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0
QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4Q0EzRDQ0MTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdTdGF0
aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGlj
UHJvcGVydHlXaXRoUGFyZW50VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4RDQ2Q0UzMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4
RTRGRTQ2MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU0RkU0NTBFMkJENDE0MDBG
NENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2YTQwNWU0ZmM0ODM0Njc3MzBjNzJm
NWNlYTZlZi4uZjBkMDQ3M2ZkN2IyZTY1NDY4MGMyZGIyOTc4MmZlOWNkMGNmOGIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgi
CiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5oPgpAQCAtMzc5LDE1ICszODAsMjUg
QEAgc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVy
YXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGkKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBXZWJG
aWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7Ci0gICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9w
ZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKLSAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRm
b3JtIGxheWVyLCBhcyB0aGV5IGFyZQotICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBz
b2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKFdlYkZp
bHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoRmls
dGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBG
b3Igbm93LCB3ZSBvbmx5IHVzZSBTa0ltYWdlRmlsdGVycyBpZiB0aGVyZSBpcyBhIHJlZmVyZW5j
ZQorICAgIC8vIGZpbHRlciBpbiB0aGUgY2hhaW4uIE9uY2UgYWxsIGlzc3VlcyBoYXZlIGJlZW4g
aXJvbmVkIG91dCwgd2Ugc2hvdWxkCisgICAgLy8gc3dpdGNoIGFsbCBmaWx0ZXJpbmcgb3ZlciB0
byB0aGlzIHBhdGgsIGFuZCByZW1vdmUgc2V0RmlsdGVycygpIGFuZAorICAgIC8vIFdlYkZpbHRl
ck9wZXJhdGlvbnMgYWx0b2dldGhlci4KKyAgICBpZiAoZmlsdGVycy5oYXNSZWZlcmVuY2VGaWx0
ZXIoKSkgeworICAgICAgICBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAg
IFNrSW1hZ2VGaWx0ZXIqIGltYWdlRmlsdGVyID0gYnVpbGRlci5idWlsZChmaWx0ZXJzKTsKKyAg
ICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVyKGltYWdlRmlsdGVyKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CisgICAgICAgIGlm
ICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRl
cnMsIHdlYkZpbHRlcnMpKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZpbHRlcnMg
YXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFzIHRoZXkgYXJlCisgICAgICAg
ICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgorICAgICAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOworICAg
ICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgfQotICAgIG1fbGF5ZXItPmxheWVy
KCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OnNl
dEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5kZXggZTU4YzhhM2QwMWVkYzRhN2RjODNmMDBi
ZDgyMDJkMjFhOWU5NjAyNC4uNWM3MWMyYjcyNTA2NjQ3MWJjNzM4MmFkZjJjY2QxMmM5NzVlMDhh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVy
KiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgK
aW5kZXggMjdhNGFjODQzOGY5YTllMjY4NDM5YmMzMmQyZGZkODkyMWNlNDFjMy4uOTliNjUwYjlj
MWQ4NDVjMjQ0OTc5OTJiZGQxYmI0OTFmY2NiYzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTUx
LDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEo
KTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaAppbmRleCA3YjNiZGNlMjkxNzMzNjcxNjBiMjEwZTNmMDM1MjIwNTdlYTY5
ZWQ3Li5kYWYzZWYxN2EyYzJmNzk3ODkxMGViMDE0MTliYWE5ZjhhYmE5ZDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgcGxh
dGZvcm1BcHBseUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4
Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmls
dGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYK
IAogICAgIGZsb2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggNDQ4NzgzNWU4YzBlZjMwMjZlOGU5
ZmNiNjhhZjQ4MzkyMmU3Y2FhNS4uMjg4OTg1ZDQyODhlMjkzMGRkODYyZjc0ODIxNTg2YWVhYTE5
MTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRkVMaWdodGluZyA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIq
IGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICAgICB2aXJ0dWFs
IGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAppbmRleCAx
OWRhNjM1YTJlMDNhNjFhZjA0MDhlY2Q0ZjkwZmRlNGIwZTA0NzMxLi5iMzhlNjczYzM4MjIyYzY0
YjdlZGY4MzM2ODlkZWM2MzA3MGNhZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKQEAgLTQ5LDYgKzQ5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICNp
ZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2
aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1
aWxkZXIqKTsKKwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKaW5kZXggMTYyMGFiZjFlM2Q1ZTY2ZDE3ZDQ1MTZlNDQ4Zjc1MTk5YWI4ZDA0ZC4uMDY5ZWRl
M2VlYWQzYWY3MDIzZDllOWU5ZDFjYWI3M2U4OWUwMGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0z
NSw2ICszNSwxMCBAQAogCiBzdGF0aWMgY29uc3QgZmxvYXQga01heEZpbHRlclNpemUgPSA1MDAw
LjBmOwogCisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa0ltYWdlRmlsdGVyOworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwpAQCAtNDIsNiArNDYsMTAgQEAgY2xh
c3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBUZXh0U3RyZWFtOwog
CisjaWYgVVNFKFNLSUEpCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOworI2VuZGlmCisK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0VmVjdG9y
OwogCiBlbnVtIEZpbHRlckVmZmVjdFR5cGUgewpAQCAtOTUsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAjaWYgVVNFKFNL
SUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYWY0NGUzNjAyZjcwMTgyZDE4
ZTA3NTIxMGU5NmZhZGRmNWE0YjY5Ni4uYjQ5YWZkNjEyNzE0NTYzNTY2ZTNiYTE0NTIxNmEzN2Q4
OTk1YTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAKICAg
ICBEYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXREYXRhKFBhc3NPd25QdHI8RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0ZXJFZmZlY3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJp
dmF0ZToKIApAQCAtMTk1LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwog
ICAgIFN0cmluZyBtX2ZyYWdtZW50OwogICAgIE93blB0cjxEYXRhPiBtX2RhdGE7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gbV9maWx0ZXJFZmZlY3Q7CiB9OwogCiAvLyBHUkFZU0NBTEUsIFNF
UElBLCBTQVRVUkFURSBhbmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNv
bG9yIG1hdHJpeCBlZmZlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAppbmRleCBmZGNhNDMy
ZjRkMzQ4YTFiOTdkNDg3MmY1YWI2YzMxNWI1NjQ3MDQxLi44MDg5ZjNiNTBkNjA1OTZmZmI4NDY5
YTU0YjViM2U0Zjg4ZjFiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJTa0JpdG1h
cFNvdXJjZS5oIgogI2luY2x1ZGUgIlNrQmxlbmRJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NCw2
ICs4NSwxNCBAQCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVCbGVuZDo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tp
YUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0ltYWdlRmlsdGVyKiBmb3Jl
Z3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpOworICAgIFNrSW1hZ2VGaWx0
ZXIqIGJhY2tncm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgxKSk7CisgICAgU2tC
bGVuZEltYWdlRmlsdGVyOjpNb2RlIG1vZGUgPSB0b1NraWFNb2RlKG1fbW9kZSk7CisgICAgcmV0
dXJuIG5ldyBTa0JsZW5kSW1hZ2VGaWx0ZXIobW9kZSwgYmFja2dyb3VuZCwgZm9yZWdyb3VuZCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMGZkMDc3NzZlMDMw
NzMwOGExMThhNjMwOTYwNDNlMGY5YTUwNTNlYi4uYWZmYmFlYWQwNDgwNTk3ZWZhOWMwM2FiZmU3
Y2JlMjM1NmYyYzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBA
IC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogCiAjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgi
CiAjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwyNCArODIsMTUg
QEAgc3RhdGljIHZvaWQgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChTa1NjYWxhciBtYXRyaXhbMjBd
KQogICAgIG1hdHJpeFsxN10gPSAwLjA3MjFmOwogfQogCi1ib29sIEZFQ29sb3JNYXRyaXg6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKK3N0YXRpYyBTa0NvbG9yRmlsdGVyKiBjcmVhdGVDb2xvckZpbHRl
cihDb2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgZmxvYXQqIHZhbHVlcykKIHsKLSAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlm
ICghcmVzdWx0SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKLQotICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50
KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLQogICAgIFNrU2NhbGFyIG1hdHJpeFsy
MF07Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAy
MDsgKytpKQotICAgICAgICAgICAgbWF0cml4W2ldID0gbV92YWx1ZXNbaV07CisgICAgICAgICAg
ICBtYXRyaXhbaV0gPSB2YWx1ZXNbaV07CiAKICAgICAgICAgbWF0cml4WzRdICo9IFNrU2NhbGFy
KDI1NSk7CiAgICAgICAgIG1hdHJpeFs5XSAqPSBTa1NjYWxhcigyNTUpOwpAQCAtMTA1LDE1ICs5
OCwyOSBAQCBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAg
bWF0cml4WzE5XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURTogCi0gICAgICAgIHNhdHVyYXRlTWF0cml4KG1fdmFs
dWVzWzBdLCBtYXRyaXgpOworICAgICAgICBzYXR1cmF0ZU1hdHJpeCh2YWx1ZXNbMF0sIG1hdHJp
eCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFU
RToKLSAgICAgICAgaHVlUm90YXRlTWF0cml4KG1fdmFsdWVzWzBdLCBtYXRyaXgpOworICAgICAg
ICBodWVSb3RhdGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgogICAgICAgICBsdW1p
bmFuY2VUb0FscGhhTWF0cml4KG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBy
ZXR1cm4gbmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KTsKK30KKworYm9vbCBGRUNvbG9y
TWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCit7CisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZl
Y3QoMCk7CisKKyAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50
UmVjdCgpLnNpemUoKSk7CisKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVy
KGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAKICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMjIsMTIgKzEyOSwxOSBAQCBib29s
IEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrQ2FudmFzKiBjYW52
YXMgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7
CiAgICAgU2tQYWludCBwYWludDsKLSAgICBwYWludC5zZXRDb2xvckZpbHRlcihuZXcgU2tDb2xv
ck1hdHJpeEZpbHRlcihtYXRyaXgpKS0+dW5yZWYoKTsKKyAgICBwYWludC5zZXRDb2xvckZpbHRl
cihmaWx0ZXIpOwogICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01v
ZGUpOwogICAgIGNhbnZhcy0+ZHJhd0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCksIDAsIDAs
ICZwYWludCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIp
Cit7CisgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxk
KGlucHV0RWZmZWN0KDApKSk7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRl
cihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkpOworICAgIHJldHVy
biBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShmaWx0ZXIsIGlucHV0KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpICYmIFVT
RShTS0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRleCBiNjk0
YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1Li5mNWY0NmRhZWRjYTNiNTNlZjEz
NGY1N2Q2ZDY5MTgxNWFlM2Y5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJT
a2lhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWEuaCIKICNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw1
ICs2MiwxMSBAQCBib29sIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJ
bWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0
b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgw
KSkpOworICAgIHJldHVybiBuZXcgU2tCbHVySW1hZ2VGaWx0ZXIoU2tGbG9hdFRvU2NhbGFyKG1f
c3RkWCksIFNrRmxvYXRUb1NjYWxhcihtX3N0ZFkpLCBpbnB1dCk7Cit9CisKIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IDFhNmEyZDcwZWU3MDYzODFlOGJk
Y2JjMGE5YTlhMzc0NWYzODY2ZTMuLjE2NzIzNGQzYjM1OWEwZWE1MGM3MzIyMWIyMzNkYjYwOGU4
YmFkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtMzEsMzIgKzMxLDE0
IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUG9pbnRMaWdodFNv
dXJjZS5oIgogI2luY2x1ZGUgIlNrTGlnaHRpbmdJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lh
KCkKK1NrSW1hZ2VGaWx0ZXIqIEZFTGlnaHRpbmc6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCiB7Ci0gICAgLy8gRm9yIG5vdywgb25seSB1c2UgdGhl
IHNraWEgaW1wbGVtZW50YXRpb24gZm9yIGFjY2VsZXJhdGVkIHJlbmRlcmluZy4KLSAgICBpZiAo
ZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSAhPSBBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0
IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKTsKLQotICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwot
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLQotICAgIFNrUGFp
bnQgcGFpbnQ7CisgICAgU2tJbWFnZUZpbHRlciogaW5wdXQgPSBidWlsZGVyID8gYnVpbGRlci0+
YnVpbGQoaW5wdXRFZmZlY3QoMCkpIDogMDsKICAgICBzd2l0Y2ggKG1fbGlnaHRTb3VyY2UtPnR5
cGUoKSkgewogICAgIGNhc2UgTFNfRElTVEFOVDogewogICAgICAgICBEaXN0YW50TGlnaHRTb3Vy
Y2UqIGRpc3RhbnRMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PERpc3RhbnRMaWdodFNvdXJjZSo+
KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtNjYsMjAgKzQ4LDE4IEBAIGJvb2wgRkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZihh
emltdXRoUmFkKSAqIGNvc2YoZWxldmF0aW9uUmFkKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpbmYoZWxldmF0aW9uUmFkKSk7CiAgICAgICAgIGlmIChtX3NwZWN1bGFyQ29uc3RhbnQg
PiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmls
dGVyOjpDcmVhdGVEaXN0YW50TGl0U3BlY3VsYXIoZGlyZWN0aW9uLCBtX2xpZ2h0aW5nQ29sb3Iu
cmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBv
bmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRl
cjo6Q3JlYXRlRGlzdGFudExpdFNwZWN1bGFyKGRpcmVjdGlvbiwgbV9saWdodGluZ0NvbG9yLnJn
YigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25l
bnQsIGlucHV0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0
ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50TGl0RGlmZnVzZShkaXJlY3Rp
b24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0
YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFNrTGln
aHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdERpZmZ1c2UoZGlyZWN0aW9uLCBtX2xp
Z2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwgaW5w
dXQpOwogICAgIH0KICAgICBjYXNlIExTX1BPSU5UOiB7CiAgICAgICAgIFBvaW50TGlnaHRTb3Vy
Y2UqIHBvaW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxQb2ludExpZ2h0U291cmNlKj4obV9s
aWdodFNvdXJjZS5nZXQoKSk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbiA9IHBvaW50
TGlnaHRTb3VyY2UtPnBvc2l0aW9uKCk7CiAgICAgICAgIFNrUG9pbnQzIHNrUG9zaXRpb24ocG9z
aXRpb24ueCgpLCBwb3NpdGlvbi55KCksIHBvc2l0aW9uLnooKSk7CiAgICAgICAgIGlmIChtX3Nw
ZWN1bGFyQ29uc3RhbnQgPiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tM
aWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1f
bGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwg
bV9zcGVjdWxhckV4cG9uZW50KSktPnVucmVmKCk7CisgICAgICAgICAgICByZXR1cm4gU2tMaWdo
dGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1fbGln
aHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9z
cGVjdWxhckV4cG9uZW50LCBpbnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50
LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZm
dXNlKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1f
ZGlmZnVzZUNvbnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAg
cmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZmdXNlKHNrUG9z
aXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNv
bnN0YW50LCBpbnB1dCk7CiAgICAgfQogICAgIGNhc2UgTFNfU1BPVDogewogICAgICAgICBTcG90
TGlnaHRTb3VyY2UqIHNwb3RMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PFNwb3RMaWdodFNvdXJj
ZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtOTAsMTUgKzcwLDM5IEBAIGJvb2wgRkVMaWdo
dGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICBpZiAoIWxpbWl0aW5nQ29uZUFuZ2xl
IHx8IGxpbWl0aW5nQ29uZUFuZ2xlID4gOTAgfHwgbGltaXRpbmdDb25lQW5nbGUgPCAtOTApCiAg
ICAgICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZSA9IDkwOwogICAgICAgICBpZiAobV9zcGVjdWxh
ckNvbnN0YW50ID4gMCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRp
bmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNw
ZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCks
IG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCkp
LT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3Jl
YXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxp
bWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBt
X3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCwgaW5wdXQpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0
ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNlKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25l
bnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNj
YWxlLCBtX2RpZmZ1c2VDb25zdGFudCkpLT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNl
KGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBt
X2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwg
aW5wdXQpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gMDsKICAgICB9Cit9CisK
K2Jvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIC8vIEZvciBub3cs
IG9ubHkgdXNlIHRoZSBza2lhIGltcGxlbWVudGF0aW9uIGZvciBhY2NlbGVyYXRlZCByZW5kZXJp
bmcuCisgICAgaWYgKGZpbHRlcigpLT5yZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxlcmF0ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwor
CisgICAgSW50UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisKKyAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxw
aGFJbWFnZSgpKTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIE5hdGl2ZUltYWdlU2tp
YSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dCogZHN0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7
CisKKyAgICBTa1BhaW50IHBhaW50OworICAgIHBhaW50LnNldEltYWdlRmlsdGVyKGNyZWF0ZUlt
YWdlRmlsdGVyKDApKS0+dW5yZWYoKTsKICAgICBkc3RDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCktPmRyYXdCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpLCBkcmF3aW5nUmVn
aW9uLmxvY2F0aW9uKCkueCgpLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCkueSgpLCAmcGFpbnQp
OwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3Bw
CmluZGV4IGU3MjkwYmVjN2UyZGU0YTgyOTNjZmE1YWUxM2U5YjI4ZmYzMmRiMDUuLmIyZTlmNGZj
ZmI3ZTNlYWYyMjE5YWM0NTZjNTdmMjg1ZTgzNzU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3Jw
aG9sb2d5U2tpYS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGRU1vcnBob2xvZ3ku
aCIKIAogI2luY2x1ZGUgIlNrTW9ycGhvbG9neUltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tp
YUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDUg
KzYzLDE1IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFTW9ycGhvbG9neTo6Y3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5y
ZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsK
KyAgICBTa1NjYWxhciByYWRpdXNYID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWCk7CisgICAg
U2tTY2FsYXIgcmFkaXVzWSA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1kpOworICAgIGlmICht
X3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSkKKyAgICAgICAgcmV0dXJuIG5l
dyBTa0RpbGF0ZUltYWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsKKyAgICByZXR1
cm4gbmV3IFNrRXJvZGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7Cit9CisK
IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMGJlZjY4MDNiODM2MzFhNzM0MGZmYTRlOWNjOWRkOGUyY2Y1NzZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIu
aCIKKworI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlv
bnMuaCIKKyNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNrQ29sb3JG
aWx0ZXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNp
bmNsdWRlICJTa01hdHJpeC5oIgorCituYW1lc3BhY2UgeworCit2b2lkIGdldEJyaWdodG5lc3NN
YXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldCht
YXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgLy8gICAgT2xkIGltcGxlbWVu
dGF0aW9uLCBhIGxhIHRoZSBkcmFmdCBzcGVjLCBhIHN0cmFpZ2h0LXVwIHNjYWxlLAorICAgIC8v
ICAgIHJlcHJlc2VudGluZyA8ZmVGdW5jW1J8R3xCXSB0eXBlPSJsaW5lYXIiIHNsb3BlPSJbYW1v
dW50XSI+CisgICAgLy8gICAgKFNlZSBodHRwOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmls
ZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2JyaWdodG5lc3NFcXVpdmFsZW50KQorICAgIC8vIG1h
dHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAgLy8gbWF0cml4
WzE4XSA9IDE7CisgICAgLy8gICAgTmV3IGltcGxlbWVudGF0aW9uLCBhIHRyYW5zbGF0aW9uIGlu
IGNvbG9yIHNwYWNlLCByZXByZXNlbnRpbmcKKyAgICAvLyAgICA8ZmVGdW5jW1J8R3xCXSB0eXBl
PSJsaW5lYXIiIGludGVyY2VwdD0iW2Ftb3VudF0iLz4KKyAgICAvLyAgICAoU2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDcpCisgICAgbWF0cml4
WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IG1hdHJpeFsxOF0gPSAxOworICAgIG1hdHJp
eFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7Cit9CisKK3ZvaWQg
Z2V0Q29udHJhc3RNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQorewor
ICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4
WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBt
YXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gKC0wLjVmICogYW1vdW50ICsgMC41ZikgKiAyNTU7Cisg
ICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0U2F0dXJhdGVNYXRyaXgoZmxvYXQgYW1v
dW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBh
cmUgY29tcHV0ZWQgdG8gZW5zdXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFsc2UKKyAgICAv
LyBmb3IgYW1vdW50IGluIFswLi4xXQorICAgIG1hdHJpeFswXSA9IDAuMjEzZiArIDAuNzg3ZiAq
IGFtb3VudDsKKyAgICBtYXRyaXhbMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7CisgICAg
bWF0cml4WzJdID0gMS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNd
ID0gbWF0cml4WzRdID0gMDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91
bnQ7CisgICAgbWF0cml4WzZdID0gMC43MTVmICsgMC4yODVmICogYW1vdW50OworICAgIG1hdHJp
eFs3XSA9IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9IG1h
dHJpeFs5XSA9IDA7CisgICAgbWF0cml4WzEwXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbMTFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJpeFsx
Ml0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJpeFsxM10gPSBt
YXRyaXhbMTRdID0gMDsKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10g
PSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRIdWVS
b3RhdGVNYXRyaXgoZmxvYXQgaHVlLCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIGZsb2F0
IGNvc0h1ZSA9IGNvc2YoaHVlICogcGlGbG9hdCAvIDE4MCk7CisgICAgZmxvYXQgc2luSHVlID0g
c2luZihodWUgKiBwaUZsb2F0IC8gMTgwKTsKKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyBjb3NI
dWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2Y7CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0g
Y29zSHVlICogMC43MTVmIC0gc2luSHVlICogMC43MTVmOworICAgIG1hdHJpeFsyXSA9IDAuMDcy
ZiAtIGNvc0h1ZSAqIDAuMDcyZiArIHNpbkh1ZSAqIDAuOTI4ZjsKKyAgICBtYXRyaXhbM10gPSBt
YXRyaXhbNF0gPSAwOworICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAr
IHNpbkh1ZSAqIDAuMTQzZjsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4
NWYgKyBzaW5IdWUgKiAwLjE0MGY7CisgICAgbWF0cml4WzddID0gMC4wNzJmIC0gY29zSHVlICog
MC4wNzJmIC0gc2luSHVlICogMC4yODNmOworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7
CisgICAgbWF0cml4WzEwXSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAtIHNpbkh1ZSAqIDAu
Nzg3ZjsKKyAgICBtYXRyaXhbMTFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVl
ICogMC43MTVmOworICAgIG1hdHJpeFsxMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBz
aW5IdWUgKiAwLjA3MmY7CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1h
dHJpeFsxNV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IDA7CisgICAgbWF0cml4WzE4XSA9
IDE7CisgICAgbWF0cml4WzE5XSA9IDA7Cit9CisKK3ZvaWQgZ2V0SW52ZXJ0TWF0cml4KGZsb2F0
IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0cml4LCAwLCAy
MCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJp
eFsxMl0gPSAxIC0gMiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRy
aXhbMTRdID0gYW1vdW50ICogMjU1OworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdl
dE9wYWNpdHlNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAg
IG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBd
ID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IDE7CisgICAgbWF0cml4WzE4XSA9IGFtb3VudDsK
K30KKwordm9pZCBnZXRHcmF5c2NhbGVNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRy
aXhbMjBdKQoreworICAgIC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8gZW5z
dXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFsc2UKKyAgICAvLyBmb3IgYW1vdW50IGluIFsw
Li4xXQorICAgIG1hdHJpeFswXSA9IDAuMjEyNmYgKyAwLjc4NzRmICogYW1vdW50OworICAgIG1h
dHJpeFsxXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDEu
ZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhbMV0pOworICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9
IDA7CisKKyAgICBtYXRyaXhbNV0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsKKyAgICBt
YXRyaXhbNl0gPSAwLjcxNTJmICsgMC4yODQ4ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAx
LmYgLSAobWF0cml4WzVdICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0g
PSAwOworCisgICAgbWF0cml4WzEwXSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1vdW50OworICAg
IG1hdHJpeFsxMV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJd
ID0gMS5mIC0gKG1hdHJpeFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNdID0gbWF0
cml4WzE0XSA9IDA7CisKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10g
PSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTZXBp
YU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWF0cml4
WzBdID0gMC4zOTNmICsgMC42MDdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzY5ZiAt
IDAuNzY5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0gPSAwLjE4OWYgLSAwLjE4OWYgKiBhbW91
bnQ7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAu
MzQ5ZiAtIDAuMzQ5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjY4NmYgKyAwLjMxNGYg
KiBhbW91bnQ7CisgICAgbWF0cml4WzddID0gMC4xNjhmIC0gMC4xNjhmICogYW1vdW50OworICAg
IG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yNzJmIC0g
MC4yNzJmICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjUzNGYgLSAwLjUzNGYgKiBhbW91
bnQ7CisgICAgbWF0cml4WzEyXSA9IDAuMTMxZiArIDAuODY5ZiAqIGFtb3VudDsKKyAgICBtYXRy
aXhbMTNdID0gbWF0cml4WzE0XSA9IDA7CisKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9
IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwor
U2tJbWFnZUZpbHRlciogY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIoU2tTY2FsYXIgbWF0cml4WzIw
XSwgU2tJbWFnZUZpbHRlciogaW5wdXQpCit7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0
ZXI+IGNvbG9yRmlsdGVyKG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCkpOworICAgIHJl
dHVybiBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShjb2xvckZpbHRlciwgaW5wdXQp
OworfQorCit9OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NraWFJbWFnZUZpbHRlckJ1aWxk
ZXI6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXIoKQoreworfQorCitTa0ltYWdlRmlsdGVyKiBTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKK3sKKyAgICBp
ZiAoIWVmZmVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGaWx0ZXJCdWlsZGVySGFzaE1h
cDo6aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGVmZmVjdCk7CisgICAgaWYgKGl0ICE9IG1fbWFw
LmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgU2tJbWFnZUZpbHRlciog
ZmlsdGVyID0gZWZmZWN0LT5jcmVhdGVJbWFnZUZpbHRlcih0aGlzKTsKKyAgICBtX21hcC5zZXQo
ZWZmZWN0LCBmaWx0ZXIpOworICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK1NrSW1hZ2VGaWx0ZXIq
IFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9w
ZXJhdGlvbnMpCit7CisgICAgU2tJbWFnZUZpbHRlciogZmlsdGVyID0gMDsKKyAgICBTa1NjYWxh
ciBtYXRyaXhbMjBdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5zaXpl
KCk7ICsraSkgeworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG9wID0gKm9wZXJhdGlv
bnMuYXQoaSk7CisgICAgICAgIHN3aXRjaCAob3AuZ2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKKyAgICAgICAgICAgIEZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKj4oJm9wKS0+ZmlsdGVyRWZmZWN0KCk7CisgICAgICAgICAgICAvLyBGSVhNRTog
aG9vayB1cCBwYXJlbnQgZmlsdGVyIHRvIGltYWdlIHNvdXJjZQorICAgICAgICAgICAgZmlsdGVy
ID0gU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoZmlsdGVyRWZmZWN0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEU6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAg
ICAgIGdldEdyYXlzY2FsZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0
ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6
IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dFNlcGlhTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0
ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogeworICAg
ICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0U2F0dXJh
dGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0
cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAg
ICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEh1ZVJvdGF0
ZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRy
aXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7CisgICAgICAgICAg
ICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRJbnZlcnRN
YXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4
SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgICAg
IGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldE9wYWNpdHlN
YXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4
SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsKKyAgICAgICAg
ICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEJyaWdo
dG5lc3NNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRl
TWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7CisgICAg
ICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRD
b250cmFzdE1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVh
dGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAg
ICAgICAgZmxvYXQgcGl4ZWxSYWRpdXMgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3Bl
cmF0aW9uKj4oJm9wKS0+c3RkRGV2aWF0aW9uKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICAg
ICAgZmlsdGVyID0gbmV3IFNrQmx1ckltYWdlRmlsdGVyKHBpeGVsUmFkaXVzLCBwaXhlbFJhZGl1
cywgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworLy8gICAgICAgICAgICBjb25zdCBEcm9w
U2hhZG93RmlsdGVyT3BlcmF0aW9uJiBkcm9wU2hhZG93T3AgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qg
RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvcCk7CisgICAgICAgICAgICAvLyBGSVhNRTog
ZG8gb2Zmc2V0IGFuZCBibHVyCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTToK
KyAgICAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQuCisjZW5kaWYKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlBBU1NUSFJPVUdIOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
Tk9ORToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBm
aWx0ZXI7Cit9CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yN2JkNjgzMjBiNmE5MjljNjEwMDk4NjhiNTcxNDZkMWRmNjI1OTQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyX2gKKyNkZWZpbmUgU2tpYUltYWdlRmlsdGVy
QnVpbGRlcl9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitjbGFzcyBTa0ltYWdlRmls
dGVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGaWx0ZXJFZmZlY3Q7CitjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOworCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyIHsKK3B1Ymxp
YzoKKyAgICBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCk7CisKKyAgICBTa0ltYWdlRmlsdGVyKiBi
dWlsZChGaWx0ZXJFZmZlY3QqKTsKKyAgICBTa0ltYWdlRmlsdGVyKiBidWlsZChjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJik7Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxGaWx0ZXJFZmZl
Y3QqLCBTa0ltYWdlRmlsdGVyKj4gRmlsdGVyQnVpbGRlckhhc2hNYXA7CisgICAgRmlsdGVyQnVp
bGRlckhhc2hNYXAgbV9tYXA7Cit9OworCit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGI0OTJhNmFkMzlj
NjZlOTlmMmZlY2MxMzJmNGNjNDUyNWQxOTAwZGYuLmE4YWZlMGYwZTU5NTViZTdlN2IzNDk3OGMw
MDhhMmU3ODg0NTBlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMjE2LDcgKzIxNiw5IEBAIGJvb2wgRmlsdGVyRWZmZWN0
UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgb3BlCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uID0gb3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkuYXQoaSkuZ2V0KCk7CiAgICAgICAgIHN3aXRjaCAoZmlsdGVyT3Bl
cmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OlJFRkVSRU5DRTogewotICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VGaWx0
ZXIoZG9jdW1lbnQsIHByZXZpb3VzRWZmZWN0LCBzdGF0aWNfY2FzdDxSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pKTsKKyAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbiogcmVmZXJlbmNlT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGVmZmVjdCA9IGJ1
aWxkUmVmZXJlbmNlRmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgcmVmZXJlbmNlT3Bl
cmF0aW9uKTsKKyAgICAgICAgICAgIHJlZmVyZW5jZU9wZXJhdGlvbi0+c2V0RmlsdGVyRWZmZWN0
KGVmZmVjdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCA5NTc5ZGQwYWU2Y2UzZGQ2ZTZlODBmMWMwYzdmOTViODhmNzllOGU3
Li43ZDE0ZDBhNWQ5ZDc0MzRmYzRhMGNhNGI3N2U0NDM1ZTAyY2E3ZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUxMDIsNyArNTEwMiwxMiBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCgpCiAgICAgICAgIC8vIGZv
ciBsb2FkaW5nIENTUyBzaGFkZXIgZmlsZXMuCiAgICAgICAgIGlmIChSZW5kZXJMYXllckZpbHRl
ckluZm8qIGZpbHRlckluZm8gPSB0aGlzLT5maWx0ZXJJbmZvKCkpCiAgICAgICAgICAgICBmaWx0
ZXJJbmZvLT5zZXRSZW5kZXJlcigwKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEVh
cmx5LXJldHVybiBvbmx5IGlmIHdlICpkb24ndCogaGF2ZSByZWZlcmVuY2UgZmlsdGVycy4KKyAg
ICAgICAgLy8gRm9yIHJlZmVyZW5jZSBmaWx0ZXJzLCB3ZSBzdGlsbCB3YW50IHRoZSBGaWx0ZXJF
ZmZlY3QgZ3JhcGggYnVpbHQKKyAgICAgICAgLy8gZm9yIHVzLCBldmVuIGlmIHdlJ3JlIGNvbXBv
c2l0ZWQuCisgICAgICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkuaGFzUmVm
ZXJlbmNlRmlsdGVyKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJl
bmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172233</attachid>
            <date>2012-11-03 16:53:15 -0700</date>
            <delta_ts>2012-11-04 08:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100142-20121103195117.patch</filename>
            <type>text/plain</type>
            <size>50514</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiZTYzM2Y4NmRlNmMx
ZDg4ZWNjZmUxM2YyOTMzY2M1MDBjYjY0YzhhLi42OGVjYjcyYjM4YzUxZjRiNmE4Y2Q2YTkxNTFj
N2ExNjA4NDJlN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMS0wMSAgUm9iZXJ0IEtyb2VnZXIgIDxyamty
b2VnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBQcm92aWRlIFdlYktpdCBB
UEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1cnZlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg4
YWM3NTRmNzNkMzBiZDdjZDQxNzE1Y2FhODVjOTYwN2QyYzUxMTcuLjg1MTEzMjFlOTM2ZTVmMTg2
NmM0ZmJkY2U0NjdiNzY3MGE4NjNjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAx
Mi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0
ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFzICJwcml2YXRlIi4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0
ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWlsZGVyIGFuZCBzZXRM
YXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0aGVyZSdzIGEgcmVm
ZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VGaWx0ZXIpOgorICAg
ICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBidWlsZGlu
ZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0
KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0lt
YWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBjcmVhdGlvbiBvZiBT
a0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisgICAgICAgIChXZWJD
b3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVu
dCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZpbHRlcik6
CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUdhdXNzaWFu
Qmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
TGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OmNyZWF0ZUlt
YWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9y
IEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1
aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZvciBidWls
ZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZmZWN0IERB
Ry4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAgICAgICAq
IHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5nIEZpbHRl
ckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisgICAgICAg
IGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNlbGYuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2ZW4gd2hl
biBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRo
ZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20gaXQuCisK
IDIwMTItMTEtMDMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgU3BlY3VsYXRpdmUgZml4IHRvIGVsaW1pbmF0ZSBmbGFraW5lc3MgaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCA3ZWM1MTY1NTVlZDM5
ZDgxZWQwOTgyOWUzYmYyMTQzMDRkNDRmMGZmLi42YTM3ZDI3OGMxMjA1NTI0N2UwNTE0MWQ4NzYy
ZTJjMTNmZDYyMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIGNsYXNzIFNr
TWF0cml4NDQ7CitjbGFzcyBTa0ltYWdlRmlsdGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYkFuaW1hdGlvbkRlbGVnYXRlOwpAQCAtMTI1LDYgKzEyNiwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBvYmplY3QuCiAgICAgdmlydHVhbCB2b2lkIHNldEZp
bHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpID0gMDsKIAorICAgIC8vIFNldCB0aGUg
cm9vdCBvZiB0aGUgaW1hZ2UgZmlsdGVyIGdyYXBoIGZvciB0aGlzIGxheWVyLiBUaGUgCisgICAg
Ly8gaW1wbGVtZW50YXRpb24gc2hvdWxkIGdyYWIgYSByZWYgb24gdGhlIHBhc3NlZC1pbiBmaWx0
ZXIgaW4gb3JkZXIKKyAgICAvLyB0byByZXRhaW4gb3duZXJzaGlwLiBUaGUgcGFzc2VkLWluIGdy
YXBoIHdpbGwgYmUgdW5yZWYnZWQgYnkgdGhlCisgICAgLy8gY2FsbGVyIGFmdGVyIHRoaXMgY2Fs
bC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyKFNrSW1hZ2VGaWx0ZXIqKSA9IDA7CisKICAg
ICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBpeGVscyB0aGF0IHNob3cgdGhyb3VnaCB0aGUgYmFja2dy
b3VuZCBvZiB0aGlzIGxheWVyLgogICAgIC8vIE5vdGU6IFRoZXNlIGZpbHRlcnMgYXJlIG9ubHkg
cG9zc2libGUgb24gbGF5ZXJzIHRoYXQgYXJlIGRyYXduIGRpcmVjdGx5CiAgICAgLy8gdG8gYSBy
b290IHJlbmRlciBzdXJmYWNlIHdpdGggYW4gb3BhcXVlIGJhY2tncm91bmQuIFRoaXMgbWVhbnMg
aWYgYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNTlmNjQ3NDFk
OGUyNTllNWMzMDQ3NTk0ZTkyOGJmYThmYzk1YjlmMS4uMzIzM2NhYzc5ZTNhNzU1NTMxYzM1ZDQy
YjU5N2I1ZTJjOTlkYjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
QEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzJywKICAgICAgICcuLi9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybScsCisgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9ncHUnLAogICAg
ICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlJywKICAgICAgICcuLi9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxODIwNTQ5OTZlNmFhZWNiZmZhZDFh
Y2ZiYWJlMzBjYTliMTZlNWMyLi4wYWUwMmQ1NmNlNjYzNTE4NjNjZDBmYTdlOTcxNGRkMTg0NDM2
OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MDU2LDYgKzUwNTYsOCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5
U2tpYS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUxpZ2h0aW5nU2tpYS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlMThmMjk4MWYyYmQyYzYwZGViNTRj
ZTU1MmM2OTZiOThmNDg3NTUuLjk4YmExM2IwMjMxYjYzMTUwMWFlZjFjNjA5NmM5NzcwYmUxYTc1
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwOSw3ICsyMDksNyBAQAogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyog
U1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICov
OyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4NTlCRjEyNzQ1
NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZp
bHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEM5MjUxNzBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCAqLzsgfTsK
LQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgw
REVDIC8qIEZpbHRlckVmZmVjdC5oICovOyB9OworCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMg
LyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhDQTNENDQxMjg5
NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmYuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Q0EzRDQzMTI4OTRB
MzgwMEZGRjI2MCAvKiBTVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhENDZDRTMxMjdB
RDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RDQ2Q0UyMTI3QUQ1RkMwMDg5Njk0QiAv
KiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhFNEZFNDYwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVu
Z3RoQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgKi87
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCBkZjMzNWQ4MTAy
ZTEwZjVmMTIwMzAyN2Y4Mjg3ZGQ4NTAzNjYyMDFjLi4wMDc4NzRkY2MyNWVlNzVkMjczN2NjOTE2
YjRiZDExZmM4NGY0OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5jbHVk
ZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKICNp
bmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9u
Lmg+CkBAIC0zODAsMTUgKzM4MSwyNSBAQCBzdGF0aWMgYm9vbCBjb3B5V2ViQ29yZUZpbHRlck9w
ZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aQogCiBib29s
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKQogewotICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgd2ViRmlsdGVyczsKLSAgICBp
ZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0
ZXJzLCB3ZWJGaWx0ZXJzKSkgewotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZpbHRlcnMgYXJl
IHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFzIHRoZXkgYXJlCi0gICAgICAgIC8v
IGdvaW5nIHRvIGZhbGxiYWNrIHRvIHNvZnR3YXJlIG1vZGUuCi0gICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgR3JhcGhp
Y3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgLy8gRklYTUU6IEZvciBub3csIHdlIG9ubHkgdXNlIFNrSW1hZ2VGaWx0ZXJz
IGlmIHRoZXJlIGlzIGEgcmVmZXJlbmNlCisgICAgLy8gZmlsdGVyIGluIHRoZSBjaGFpbi4gT25j
ZSBhbGwgaXNzdWVzIGhhdmUgYmVlbiBpcm9uZWQgb3V0LCB3ZSBzaG91bGQKKyAgICAvLyBzd2l0
Y2ggYWxsIGZpbHRlcmluZyBvdmVyIHRvIHRoaXMgcGF0aCwgYW5kIHJlbW92ZSBzZXRGaWx0ZXJz
KCkgYW5kCisgICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBhbHRvZ2V0aGVyLgorICAgIGlmIChm
aWx0ZXJzLmhhc1JlZmVyZW5jZUZpbHRlcigpKSB7CisgICAgICAgIFNraWFJbWFnZUZpbHRlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgU2tJbWFnZUZpbHRlciogaW1hZ2VGaWx0ZXIgPSBidWls
ZGVyLmJ1aWxkKGZpbHRlcnMpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXIo
aW1hZ2VGaWx0ZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkZpbHRlck9wZXJhdGlvbnMg
d2ViRmlsdGVyczsKKyAgICAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dl
YkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKKyAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXll
ciwgYXMgdGhleSBhcmUKKyAgICAgICAgICAgIC8vIGdvaW5nIHRvIGZhbGxiYWNrIHRvIHNvZnR3
YXJlIG1vZGUuCisgICAgICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKFdlYkZp
bHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJz
KEZpbHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKICAg
ICB9Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhmaWx0ZXJzKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAppbmRleCBl
NThjOGEzZDAxZWRjNGE3ZGM4M2YwMGJkODIwMmQyMWE5ZTk2MDI0Li41YzcxYzJiNzI1MDY2NDcx
YmM3MzgyYWRmMmNjZDEyYzk3NWUwOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb2xvckFycmF5TGVuZ3RoKTsK
ICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAg
ICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRl
ckJ1aWxkZXIqKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAppbmRleCAyN2E0YWM4NDM4ZjlhOWUyNjg0MzliYzMyZDJk
ZmQ4OTIxY2U0MWMzLi45OWI2NTBiOWMxZDg0NWMyNDQ5Nzk5MmJkZDFiYjQ5MWZjY2JjMzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3Jl
YXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAppbmRleCAxODE4
M2U2Y2M1OGIwZDNmYjNmNGEwM2ZiMjk0NDQxZTJiZDdiNzk3Li42ODQ1NGZkMzU3ZGM1ZGFkMDRl
YmRkZDU3ZGQ1NmU1M2RjMjdlNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaApAQCAt
ODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tp
YSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUlt
YWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oCmluZGV4IDdiM2JkY2UyOTE3MzM2NzE2MGIyMTBlM2YwMzUyMjA1N2Vh
NjllZDcuLmRhZjNlZjE3YTJjMmY3OTc4OTEwZWIwMTQxOWJhYTlmOGFiYTlkN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBw
bGF0Zm9ybUFwcGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWlu
dDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNp
Z25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKICNpZiBVU0UoU0tJQSkKICAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VG
aWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRp
ZgogCiAgICAgZmxvYXQgbV9zdGRYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCA0NDg3ODM1ZThjMGVmMzAyNmU4
ZTlmY2I2OGFmNDgzOTIyZTdjYWE1Li4yODg5ODVkNDI4OGUyOTMwZGQ4NjJmNzQ4MjE1ODZhZWFh
MTkxMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBGRUxpZ2h0aW5nIDog
cHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpOwogI2lmIFVTRShTS0lBKQorICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRl
ciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4
IDE5ZGE2MzVhMmUwM2E2MWFmMDQwOGVjZDRmOTBmZGU0YjBlMDQ3MzEuLmIzOGU2NzNjMzgyMjJj
NjRiN2VkZjgzMzY4OWRlYzYzMDcwY2FmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtNDksNiArNDks
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOwog
I2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAg
IHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVy
QnVpbGRlciopOworCiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaAppbmRleCAxNjIwYWJmMWUzZDVlNjZkMTdkNDUxNmU0NDhmNzUxOTlhYjhkMDRkLi4wNjll
ZGUzZWVhZDNhZjcwMjNkOWU5ZTlkMWNhYjczZTg5ZTAwZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAg
LTM1LDYgKzM1LDEwIEBACiAKIHN0YXRpYyBjb25zdCBmbG9hdCBrTWF4RmlsdGVyU2l6ZSA9IDUw
MDAuMGY7CiAKKyNpZiBVU0UoU0tJQSkKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXI7CkBAIC00Miw2ICs0NiwxMCBAQCBj
bGFzcyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFRleHRTdHJlYW07
CiAKKyNpZiBVU0UoU0tJQSkKK2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI7CisjZW5kaWYK
KwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RWZWN0
b3I7CiAKIGVudW0gRmlsdGVyRWZmZWN0VHlwZSB7CkBAIC05NSw2ICsxMDMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKICNpZiBVU0Uo
U0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUlt
YWdlRmlsdGVyQnVpbGRlciopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBkdW1wKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3MTBkYmM5MTMwMzlmMzJm
YTc3YjA1M2E4OGM5OTY0YTJjMWZjOGM0Li45MDY3MDZiZWE3OTY4ZGYxN2VhZTg4ZDczNjEyYTgx
ZjdmOGRkNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgi
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMTc1LDYgKzE3Niw4IEBAIHB1YmxpYzoKIAog
ICAgIERhdGEqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KICAgICB2b2lk
IHNldERhdGEoUGFzc093blB0cjxEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KKyAgICBG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRWZmZWN0
LmdldCgpOyB9CisgICAgdm9pZCBzZXRGaWx0ZXJFZmZlY3QoUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGZpbHRlckVmZmVjdCkgeyBtX2ZpbHRlckVmZmVjdCA9IGZpbHRlckVmZmVjdDsgfQogCiBw
cml2YXRlOgogCkBAIC0xOTYsNiArMTk5LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV91cmw7
CiAgICAgU3RyaW5nIG1fZnJhZ21lbnQ7CiAgICAgT3duUHRyPERhdGE+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07CiAKIC8vIEdSQVlTQ0FMRSwg
U0VQSUEsIFNBVFVSQVRFIGFuZCBIVUVfUk9UQVRFIGFyZSB2YXJpYXRpb25zIG9uIGEgYmFzaWMg
Y29sb3IgbWF0cml4IGVmZmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCmluZGV4IGZkY2E0
MzJmNGQzNDhhMWI5N2Q0ODcyZjVhYjZjMzE1YjU2NDcwNDEuLjgwODlmM2I1MGQ2MDU5NmZmYjg0
NjlhNTRiNWIzZTRmODhmMWI4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlNrQml0
bWFwU291cmNlLmgiCiAjaW5jbHVkZSAiU2tCbGVuZEltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAi
U2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0
LDYgKzg1LDE0IEBAIGJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVy
biB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcihT
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZv
cmVncm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSk7CisgICAgU2tJbWFnZUZp
bHRlciogYmFja2dyb3VuZCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDEpKTsKKyAgICBT
a0JsZW5kSW1hZ2VGaWx0ZXI6Ok1vZGUgbW9kZSA9IHRvU2tpYU1vZGUobV9tb2RlKTsKKyAgICBy
ZXR1cm4gbmV3IFNrQmxlbmRJbWFnZUZpbHRlcihtb2RlLCBiYWNrZ3JvdW5kLCBmb3JlZ3JvdW5k
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRF
UlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAppbmRleCAwZmQwNzc3NmUw
MzA3MzA4YTExOGE2MzA5NjA0M2UwZjlhNTA1M2ViLi5hZmZiYWVhZDA0ODA1OTdlZmE5YzAzYWJm
ZTdjYmUyMzU2ZjJjMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAK
QEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCiAKICNpbmNsdWRl
ICJOYXRpdmVJbWFnZVNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXIu
aCIKICNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdl
RmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgwLDI0ICs4Miwx
NSBAQCBzdGF0aWMgdm9pZCBsdW1pbmFuY2VUb0FscGhhTWF0cml4KFNrU2NhbGFyIG1hdHJpeFsy
MF0pCiAgICAgbWF0cml4WzE3XSA9IDAuMDcyMWY7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6
cGxhdGZvcm1BcHBseVNraWEoKQorc3RhdGljIFNrQ29sb3JGaWx0ZXIqIGNyZWF0ZUNvbG9yRmls
dGVyKENvbG9yTWF0cml4VHlwZSB0eXBlLCBjb25zdCBmbG9hdCogdmFsdWVzKQogewotICAgIElt
YWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAg
aWYgKCFyZXN1bHRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwotCi0gICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9p
bnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotCiAgICAgU2tTY2FsYXIgbWF0cml4
WzIwXTsKLQotICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IDIwOyArK2kpCi0gICAgICAgICAgICBtYXRyaXhbaV0gPSBtX3ZhbHVlc1tpXTsKKyAgICAgICAg
ICAgIG1hdHJpeFtpXSA9IHZhbHVlc1tpXTsKIAogICAgICAgICBtYXRyaXhbNF0gKj0gU2tTY2Fs
YXIoMjU1KTsKICAgICAgICAgbWF0cml4WzldICo9IFNrU2NhbGFyKDI1NSk7CkBAIC0xMDUsMTUg
Kzk4LDI5IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAg
ICBtYXRyaXhbMTldICo9IFNrU2NhbGFyKDI1NSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFOiAKLSAgICAgICAgc2F0dXJhdGVNYXRyaXgobV92
YWx1ZXNbMF0sIG1hdHJpeCk7CisgICAgICAgIHNhdHVyYXRlTWF0cml4KHZhbHVlc1swXSwgbWF0
cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9U
QVRFOgotICAgICAgICBodWVSb3RhdGVNYXRyaXgobV92YWx1ZXNbMF0sIG1hdHJpeCk7CisgICAg
ICAgIGh1ZVJvdGF0ZU1hdHJpeCh2YWx1ZXNbMF0sIG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6CiAgICAgICAgIGx1
bWluYW5jZVRvQWxwaGFNYXRyaXgobWF0cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg
IHJldHVybiBuZXcgU2tDb2xvck1hdHJpeEZpbHRlcihtYXRyaXgpOworfQorCitib29sIEZFQ29s
b3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK3sKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0
SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1hZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKKworICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29sdXRlUGFp
bnRSZWN0KCkuc2l6ZSgpKTsKKworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0
ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKIAogICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOwogICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTEyMiwxMiArMTI5LDE5IEBAIGJv
b2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQogCiAgICAgU2tDYW52YXMqIGNh
bnZhcyA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMo
KTsKICAgICBTa1BhaW50IHBhaW50OwotICAgIHBhaW50LnNldENvbG9yRmlsdGVyKG5ldyBTa0Nv
bG9yTWF0cml4RmlsdGVyKG1hdHJpeCkpLT51bnJlZigpOworICAgIHBhaW50LnNldENvbG9yRmls
dGVyKGZpbHRlcik7CiAgICAgcGFpbnQuc2V0WGZlcm1vZGVNb2RlKFNrWGZlcm1vZGU6OmtTcmNf
TW9kZSk7CiAgICAgY2FudmFzLT5kcmF3Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSwgMCwg
MCwgJnBhaW50KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVDb2xv
ck1hdHJpeDo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRl
cikKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVp
bGQoaW5wdXRFZmZlY3QoMCkpKTsKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmls
dGVyKGNyZWF0ZUNvbG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CisgICAgcmV0
dXJuIFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlcjo6Q3JlYXRlKGZpbHRlciwgaW5wdXQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykgJiYg
VVNFKFNLSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNw
cAppbmRleCA1NzdhNWIwNjU1YmY1ZTNmN2YwOGEzMmMyNjg2MzIxNTc1Y2ZiNjc4Li44NmQ1ZDdl
NjYyYWY1ODI3OTIxYTg0MzQxNTJhMTBjYmU0NzA4MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRl
ICJGRUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIK
KyNpbmNsdWRlICJTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTa1RhYmxl
Q29sb3JGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNiArNTcsMTggQEAgYm9vbCBGRUNvbXBvbmVudFRy
YW5zZmVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1h
Z2VGaWx0ZXIqIEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tJbWFnZUZpbHRlciogaW5wdXQgPSBi
dWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSk7CisKKyAgICB1bnNpZ25lZCBjaGFyIHJWYWx1
ZXNbMjU2XSwgZ1ZhbHVlc1syNTZdLCBiVmFsdWVzWzI1Nl0sIGFWYWx1ZXNbMjU2XTsKKyAgICBn
ZXRWYWx1ZXMoclZhbHVlcywgZ1ZhbHVlcywgYlZhbHVlcywgYVZhbHVlcyk7CisKKyAgICBTa0F1
dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gY29sb3JGaWx0ZXIoU2tUYWJsZUNvbG9yRmlsdGVyOjpD
cmVhdGVBUkdCKGFWYWx1ZXMsIHJWYWx1ZXMsIGdWYWx1ZXMsIGJWYWx1ZXMpKTsKKworICAgIHJl
dHVybiBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShjb2xvckZpbHRlciwgaW5wdXQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVS
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKaW5kZXggYjY5NGM5YjFj
NTVhODM4Y2U0M2FjYmU0OTg1YTRkZDg5Mzc5MDY1NS4uZjVmNDZkYWVkY2EzYjUzZWYxMzRmNTdk
NmQ2OTE4MTVhZTNmOWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlU2luZ2xlRnJhbWVT
a2lhLmgiCiAjaW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNSArNjIs
MTEgQEAgYm9vbCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVy
biB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5y
ZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsK
KyAgICByZXR1cm4gbmV3IFNrQmx1ckltYWdlRmlsdGVyKFNrRmxvYXRUb1NjYWxhcihtX3N0ZFgp
LCBTa0Zsb2F0VG9TY2FsYXIobV9zdGRZKSwgaW5wdXQpOworfQorCiB9OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVM
aWdodGluZ1NraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcAppbmRleCAxYTZhMmQ3MGVlNzA2MzgxZThiZGNiYzBh
OWE5YTM3NDVmMzg2NmUzLi4xNjcyMzRkM2IzNTlhMGVhNTBjNzMyMjFiMjMzZGI2MDhlOGJhZDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nr
aWEvRkVMaWdodGluZ1NraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKQEAgLTMxLDMyICszMSwxNCBAQAog
I2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2Uu
aCIKICNpbmNsdWRlICJTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCitT
a0ltYWdlRmlsdGVyKiBGRUxpZ2h0aW5nOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyKiBidWlsZGVyKQogewotICAgIC8vIEZvciBub3csIG9ubHkgdXNlIHRoZSBza2lh
IGltcGxlbWVudGF0aW9uIGZvciBhY2NlbGVyYXRlZCByZW5kZXJpbmcuCi0gICAgaWYgKGZpbHRl
cigpLT5yZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxlcmF0ZWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVz
dWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwotCi0gICAgSW50UmVjdCBkcmF3
aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7Ci0KLSAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKLQotICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOwotICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4
dCogZHN0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7Ci0KLSAgICBTa1BhaW50IHBh
aW50OworICAgIFNrSW1hZ2VGaWx0ZXIqIGlucHV0ID0gYnVpbGRlciA/IGJ1aWxkZXItPmJ1aWxk
KGlucHV0RWZmZWN0KDApKSA6IDA7CiAgICAgc3dpdGNoIChtX2xpZ2h0U291cmNlLT50eXBlKCkp
IHsKICAgICBjYXNlIExTX0RJU1RBTlQ6IHsKICAgICAgICAgRGlzdGFudExpZ2h0U291cmNlKiBk
aXN0YW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxEaXN0YW50TGlnaHRTb3VyY2UqPihtX2xp
Z2h0U291cmNlLmdldCgpKTsKQEAgLTY2LDIwICs0OCwxOCBAQCBib29sIEZFTGlnaHRpbmc6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmYoYXppbXV0
aFJhZCkgKiBjb3NmKGVsZXZhdGlvblJhZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aW5mKGVsZXZhdGlvblJhZCkpOwogICAgICAgICBpZiAobV9zcGVjdWxhckNvbnN0YW50ID4gMCkK
LSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6
Q3JlYXRlRGlzdGFudExpdFNwZWN1bGFyKGRpcmVjdGlvbiwgbV9saWdodGluZ0NvbG9yLnJnYigp
LCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQp
KS0+dW5yZWYoKTsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNy
ZWF0ZURpc3RhbnRMaXRTcGVjdWxhcihkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwg
bV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50LCBp
bnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNr
TGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdERpZmZ1c2UoZGlyZWN0aW9uLCBt
X2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCkp
LT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5n
SW1hZ2VGaWx0ZXI6OkNyZWF0ZURpc3RhbnRMaXREaWZmdXNlKGRpcmVjdGlvbiwgbV9saWdodGlu
Z0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQsIGlucHV0KTsK
ICAgICB9CiAgICAgY2FzZSBMU19QT0lOVDogewogICAgICAgICBQb2ludExpZ2h0U291cmNlKiBw
b2ludExpZ2h0U291cmNlID0gc3RhdGljX2Nhc3Q8UG9pbnRMaWdodFNvdXJjZSo+KG1fbGlnaHRT
b3VyY2UuZ2V0KCkpOwogICAgICAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24gPSBwb2ludExpZ2h0
U291cmNlLT5wb3NpdGlvbigpOwogICAgICAgICBTa1BvaW50MyBza1Bvc2l0aW9uKHBvc2l0aW9u
LngoKSwgcG9zaXRpb24ueSgpLCBwb3NpdGlvbi56KCkpOwogICAgICAgICBpZiAobV9zcGVjdWxh
ckNvbnN0YW50ID4gMCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRp
bmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXRTcGVjdWxhcihza1Bvc2l0aW9uLCBtX2xpZ2h0
aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3Bl
Y3VsYXJFeHBvbmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJ
bWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXRTcGVjdWxhcihza1Bvc2l0aW9uLCBtX2xpZ2h0aW5n
Q29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3Vs
YXJFeHBvbmVudCwgaW5wdXQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludC5zZXRJ
bWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVBvaW50TGl0RGlmZnVzZShz
a1Bvc2l0aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1
c2VDb25zdGFudCkpLT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVy
biBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVBvaW50TGl0RGlmZnVzZShza1Bvc2l0aW9u
LCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFu
dCwgaW5wdXQpOwogICAgIH0KICAgICBjYXNlIExTX1NQT1Q6IHsKICAgICAgICAgU3BvdExpZ2h0
U291cmNlKiBzcG90TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxTcG90TGlnaHRTb3VyY2UqPiht
X2xpZ2h0U291cmNlLmdldCgpKTsKQEAgLTkwLDE1ICs3MCwzOSBAQCBib29sIEZFTGlnaHRpbmc6
OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgaWYgKCFsaW1pdGluZ0NvbmVBbmdsZSB8fCBs
aW1pdGluZ0NvbmVBbmdsZSA+IDkwIHx8IGxpbWl0aW5nQ29uZUFuZ2xlIDwgLTkwKQogICAgICAg
ICAgICAgbGltaXRpbmdDb25lQW5nbGUgPSA5MDsKICAgICAgICAgaWYgKG1fc3BlY3VsYXJDb25z
dGFudCA+IDApCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1h
Z2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXRTcGVjdWxhcihsb2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxh
ckV4cG9uZW50LCBsaW1pdGluZ0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1
cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQpKS0+dW5y
ZWYoKTsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVNw
b3RMaXRTcGVjdWxhcihsb2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50LCBsaW1pdGlu
Z0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVj
dWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQsIGlucHV0KTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpD
cmVhdGVTcG90TGl0RGlmZnVzZShsb2NhdGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50LCBs
aW1pdGluZ0NvbmVBbmdsZSwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwg
bV9kaWZmdXNlQ29uc3RhbnQpKS0+dW5yZWYoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVTcG90TGl0RGlmZnVzZShsb2Nh
dGlvbiwgdGFyZ2V0LCBzcGVjdWxhckV4cG9uZW50LCBsaW1pdGluZ0NvbmVBbmdsZSwgbV9saWdo
dGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQsIGlucHV0
KTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorfQorCitib29s
IEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK3sKKyAgICAvLyBGb3Igbm93LCBvbmx5
IHVzZSB0aGUgc2tpYSBpbXBsZW1lbnRhdGlvbiBmb3IgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nLgor
ICAgIGlmIChmaWx0ZXIoKS0+cmVuZGVyaW5nTW9kZSgpICE9IEFjY2VsZXJhdGVkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKworICAg
IEludFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpOworCisgICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1h
Z2UoKSk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBOYXRpdmVJbWFnZVNraWEqIG5h
dGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisKKyAgICBH
cmFwaGljc0NvbnRleHQqIGRzdENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworCisg
ICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRJbWFnZUZpbHRlcihjcmVhdGVJbWFnZUZp
bHRlcigwKSktPnVucmVmKCk7CiAgICAgZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpLT5kcmF3Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSwgZHJhd2luZ1JlZ2lvbi5s
b2NhdGlvbigpLngoKSwgZHJhd2luZ1JlZ2lvbi5sb2NhdGlvbigpLnkoKSwgJnBhaW50KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAppbmRl
eCBlNzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJkYjA1Li5iMmU5ZjRmY2ZiN2Uz
ZWFmMjIxOWFjNDU2YzU3ZjI4NWU4Mzc1OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9n
eVNraWEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCiAK
ICNpbmNsdWRlICJTa01vcnBob2xvZ3lJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFn
ZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Miw1ICs2Mywx
NSBAQCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0
cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRU1vcnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVy
KFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tBdXRvVFVucmVmPFNr
SW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKSk7CisgICAg
U2tTY2FsYXIgcmFkaXVzWCA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1gpOworICAgIFNrU2Nh
bGFyIHJhZGl1c1kgPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRpdXNZKTsKKyAgICBpZiAobV90eXBl
ID09IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUpCisgICAgICAgIHJldHVybiBuZXcgU2tE
aWxhdGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7CisgICAgcmV0dXJuIG5l
dyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQpOworfQorCiB9Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjY1ZDUxMWExYmYwZjZjMmUwMzQ2ZDgwZGMxNDdjNGJlY2U4NTk2NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcApAQCAtMCwwICsxLDI3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCisK
KyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgi
CisjaW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yRmlsdGVy
SW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCisjaW5jbHVk
ZSAiU2tNYXRyaXguaCIKKworbmFtZXNwYWNlIHsKKwordm9pZCBnZXRCcmlnaHRuZXNzTWF0cml4
KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0cml4
LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIC8vICAgIE9sZCBpbXBsZW1lbnRhdGlv
biwgYSBsYSB0aGUgZHJhZnQgc3BlYywgYSBzdHJhaWdodC11cCBzY2FsZSwKKyAgICAvLyAgICBy
ZXByZXNlbnRpbmcgPGZlRnVuY1tSfEd8Ql0gdHlwZT0ibGluZWFyIiBzbG9wZT0iW2Ftb3VudF0i
PgorICAgIC8vICAgIChTZWUgaHR0cDovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlw
L2ZpbHRlcnMvaW5kZXguaHRtbCNicmlnaHRuZXNzRXF1aXZhbGVudCkKKyAgICAvLyBtYXRyaXhb
MF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0gYW1vdW50OworICAgIC8vIG1hdHJpeFsxOF0g
PSAxOworICAgIC8vICAgIE5ldyBpbXBsZW1lbnRhdGlvbiwgYSB0cmFuc2xhdGlvbiBpbiBjb2xv
ciBzcGFjZSwgcmVwcmVzZW50aW5nCisgICAgLy8gICAgPGZlRnVuY1tSfEd8Ql0gdHlwZT0ibGlu
ZWFyIiBpbnRlcmNlcHQ9IlthbW91bnRdIi8+CisgICAgLy8gICAgKFNlZSBodHRwczovL3d3dy53
My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTE1NjQ3KQorICAgIG1hdHJpeFswXSA9
IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBtYXRyaXhbMThdID0gMTsKKyAgICBtYXRyaXhbNF0g
PSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gYW1vdW50ICogMjU1OworfQorCit2b2lkIGdldENv
bnRyYXN0TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBt
ZW1zZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9
IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAgbWF0cml4WzRdID0gbWF0cml4
WzldID0gbWF0cml4WzE0XSA9ICgtMC41ZiAqIGFtb3VudCArIDAuNWYpICogMjU1OworICAgIG1h
dHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldFNhdHVyYXRlTWF0cml4KGZsb2F0IGFtb3VudCwg
U2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1ZXMgYXJlIGNv
bXB1dGVkIHRvIGVuc3VyZSBtYXRyaXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisgICAgLy8gZm9y
IGFtb3VudCBpbiBbMC4uMV0KKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyAwLjc4N2YgKiBhbW91
bnQ7CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJp
eFsyXSA9IDEuZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhbMV0pOworICAgIG1hdHJpeFszXSA9IG1h
dHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVdID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50Owor
ICAgIG1hdHJpeFs2XSA9IDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10g
PSAxLmYgLSAobWF0cml4WzVdICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhb
OV0gPSAwOworICAgIG1hdHJpeFsxMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7CisgICAg
bWF0cml4WzExXSA9IDAuNzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0g
MS5mIC0gKG1hdHJpeFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4
WzE0XSA9IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gbWF0
cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0SHVlUm90YXRl
TWF0cml4KGZsb2F0IGh1ZSwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBmbG9hdCBjb3NI
dWUgPSBjb3NmKGh1ZSAqIHBpRmxvYXQgLyAxODApOworICAgIGZsb2F0IHNpbkh1ZSA9IHNpbmYo
aHVlICogcGlGbG9hdCAvIDE4MCk7CisgICAgbWF0cml4WzBdID0gMC4yMTNmICsgY29zSHVlICog
MC43ODdmIC0gc2luSHVlICogMC4yMTNmOworICAgIG1hdHJpeFsxXSA9IDAuNzE1ZiAtIGNvc0h1
ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZjsKKyAgICBtYXRyaXhbMl0gPSAwLjA3MmYgLSBj
b3NIdWUgKiAwLjA3MmYgKyBzaW5IdWUgKiAwLjkyOGY7CisgICAgbWF0cml4WzNdID0gbWF0cml4
WzRdID0gMDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgKyBzaW5I
dWUgKiAwLjE0M2Y7CisgICAgbWF0cml4WzZdID0gMC43MTVmICsgY29zSHVlICogMC4yODVmICsg
c2luSHVlICogMC4xNDBmOworICAgIG1hdHJpeFs3XSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcy
ZiAtIHNpbkh1ZSAqIDAuMjgzZjsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0gPSAwOworICAg
IG1hdHJpeFsxMF0gPSAwLjIxM2YgLSBjb3NIdWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2Y7
CisgICAgbWF0cml4WzExXSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiArIHNpbkh1ZSAqIDAu
NzE1ZjsKKyAgICBtYXRyaXhbMTJdID0gMC4wNzJmICsgY29zSHVlICogMC45MjhmICsgc2luSHVl
ICogMC4wNzJmOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKyAgICBtYXRyaXhb
MTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSAwOworICAgIG1hdHJpeFsxOF0gPSAxOwor
ICAgIG1hdHJpeFsxOV0gPSAwOworfQorCit2b2lkIGdldEludmVydE1hdHJpeChmbG9hdCBhbW91
bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBz
aXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJd
ID0gMSAtIDIgKiBhbW91bnQ7CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0
XSA9IGFtb3VudCAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRPcGFj
aXR5TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1z
ZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9IG1h
dHJpeFs2XSA9IG1hdHJpeFsxMl0gPSAxOworICAgIG1hdHJpeFsxOF0gPSBhbW91bnQ7Cit9CisK
K3ZvaWQgZ2V0R3JheXNjYWxlTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIw
XSkKK3sKKyAgICAvLyBOb3RlLCB0aGVzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIHRvIGVuc3VyZSBt
YXRyaXhOZWVkc0NsYW1waW5nIGlzIGZhbHNlCisgICAgLy8gZm9yIGFtb3VudCBpbiBbMC4uMV0K
KyAgICBtYXRyaXhbMF0gPSAwLjIxMjZmICsgMC43ODc0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhb
MV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0gPSAxLmYgLSAo
bWF0cml4WzBdICsgbWF0cml4WzFdKTsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOwor
CisgICAgbWF0cml4WzVdID0gMC4yMTI2ZiAtIDAuMjEyNmYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzZdID0gMC43MTUyZiArIDAuMjg0OGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzddID0gMS5mIC0g
KG1hdHJpeFs1XSArIG1hdHJpeFs2XSk7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsK
KworICAgIG1hdHJpeFsxMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsKKyAgICBtYXRy
aXhbMTFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEyXSA9IDEu
ZiAtIChtYXRyaXhbMTBdICsgbWF0cml4WzExXSk7CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsx
NF0gPSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRyaXhbMTddID0gbWF0
cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0U2VwaWFNYXRy
aXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1hdHJpeFswXSA9
IDAuMzkzZiArIDAuNjA3ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0gPSAwLjc2OWYgLSAwLjc2
OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMC4xODlmIC0gMC4xODlmICogYW1vdW50Owor
ICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisKKyAgICBtYXRyaXhbNV0gPSAwLjM0OWYg
LSAwLjM0OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzZdID0gMC42ODZmICsgMC4zMTRmICogYW1v
dW50OworICAgIG1hdHJpeFs3XSA9IDAuMTY4ZiAtIDAuMTY4ZiAqIGFtb3VudDsKKyAgICBtYXRy
aXhbOF0gPSBtYXRyaXhbOV0gPSAwOworCisgICAgbWF0cml4WzEwXSA9IDAuMjcyZiAtIDAuMjcy
ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTFdID0gMC41MzRmIC0gMC41MzRmICogYW1vdW50Owor
ICAgIG1hdHJpeFsxMl0gPSAwLjEzMWYgKyAwLjg2OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEz
XSA9IG1hdHJpeFsxNF0gPSAwOworCisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRy
aXhbMTddID0gbWF0cml4WzE5XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK1NrSW1h
Z2VGaWx0ZXIqIGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKFNrU2NhbGFyIG1hdHJpeFsyMF0sIFNr
SW1hZ2VGaWx0ZXIqIGlucHV0KQoreworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBj
b2xvckZpbHRlcihuZXcgU2tDb2xvck1hdHJpeEZpbHRlcihtYXRyaXgpKTsKKyAgICByZXR1cm4g
U2tDb2xvckZpbHRlckltYWdlRmlsdGVyOjpDcmVhdGUoY29sb3JGaWx0ZXIsIGlucHV0KTsKK30K
KworfTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpT
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCkKK3sKK30KKworU2tJbWFnZUZpbHRlciogU2tpYUltYWdl
RmlsdGVyQnVpbGRlcjo6YnVpbGQoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCit7CisgICAgaWYgKCFl
ZmZlY3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgRmlsdGVyQnVpbGRlckhhc2hNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChlZmZlY3QpOworICAgIGlmIChpdCAhPSBtX21hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKworICAgIFNrSW1hZ2VGaWx0ZXIqIGZpbHRl
ciA9IGVmZmVjdC0+Y3JlYXRlSW1hZ2VGaWx0ZXIodGhpcyk7CisgICAgbV9tYXAuc2V0KGVmZmVj
dCwgZmlsdGVyKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorCitTa0ltYWdlRmlsdGVyKiBTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRp
b25zKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGZpbHRlciA9IDA7CisgICAgU2tTY2FsYXIgbWF0
cml4WzIwXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcCA9ICpvcGVyYXRpb25zLmF0
KGkpOworICAgICAgICBzd2l0Y2ggKG9wLmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgICAgICBGaWx0ZXJFZmZl
Y3QqIGZpbHRlckVmZmVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbio+KCZvcCktPmZpbHRlckVmZmVjdCgpOworICAgICAgICAgICAgLy8gRklYTUU6IGhvb2sg
dXAgcGFyZW50IGZpbHRlciB0byBpbWFnZSBzb3VyY2UKKyAgICAgICAgICAgIGZpbHRlciA9IFNr
aWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGZpbHRlckVmZmVjdCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
OiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBn
ZXRHcmF5c2NhbGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0g
Y3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRTZXBp
YU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRy
aXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsKKyAgICAgICAg
ICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldFNhdHVyYXRlTWF0
cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeElt
YWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAg
ICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRIdWVSb3RhdGVNYXRy
aXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1h
Z2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDogeworICAgICAgICAgICAgZmxv
YXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0SW52ZXJ0TWF0cml4
KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdl
RmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBmbG9h
dCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRPcGFjaXR5TWF0cml4
KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdl
RmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7CisgICAgICAgICAgICBm
bG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRCcmlnaHRuZXNz
TWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJp
eEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogeworICAgICAgICAg
ICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0Q29udHJh
c3RNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0
cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKKyAgICAgICAgICAg
IGZsb2F0IHBpeGVsUmFkaXVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlv
bio+KCZvcCktPnN0ZERldmlhdGlvbigpLmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgICAgIGZp
bHRlciA9IG5ldyBTa0JsdXJJbWFnZUZpbHRlcihwaXhlbFJhZGl1cywgcGl4ZWxSYWRpdXMsIGZp
bHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKy8vICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRv
d0ZpbHRlck9wZXJhdGlvbiYgZHJvcFNoYWRvd09wID0gKnN0YXRpY19jYXN0PGNvbnN0IERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmb3ApOworICAgICAgICAgICAgLy8gRklYTUU6IGRvIG9m
ZnNldCBhbmQgYmx1cgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpWQUxJREFURURfQ1VT
VE9NOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOgorICAgICAgICAgICAg
Ly8gTm90IHN1cHBvcnRlZC4KKyNlbmRpZgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
UEFTU1RIUk9VR0g6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpOT05FOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3YmQ2ODMyMGI2YTkyOWM2MTAwOTg2OGI1NzE0NmQxZGY2MjU5NDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUlt
YWdlRmlsdGVyQnVpbGRlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXJfaAorI2RlZmluZSBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyX2gKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEZpbHRlck9wZXJhdGlv
bnM7CisKK2NsYXNzIFNraWFJbWFnZUZpbHRlckJ1aWxkZXIgeworcHVibGljOgorICAgIFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIoKTsKKworICAgIFNrSW1hZ2VGaWx0ZXIqIGJ1aWxkKEZpbHRlckVm
ZmVjdCopOworICAgIFNrSW1hZ2VGaWx0ZXIqIGJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KTsKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlckVmZmVjdCosIFNrSW1hZ2VG
aWx0ZXIqPiBGaWx0ZXJCdWlsZGVySGFzaE1hcDsKKyAgICBGaWx0ZXJCdWlsZGVySGFzaE1hcCBt
X21hcDsKK307CisKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMjFhZTE2ZmIwZmQ1MzEyOGJiYmRlZjM0
N2I5Y2ZjNGQyMzliMmFlMS4uM2JmZTUyYmY4MDJiMjM2YThhMDY1NGM0NGFmNjQ4Y2QzMmY1NTYz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwCkBAIC0yMDQsNyArMjA0LDkgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVp
bGQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGUKICAgICAg
ICAgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hdChpKS5nZXQoKTsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9w
ZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNF
OiB7Ci0gICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwg
cHJldmlvdXNFZmZlY3QsIHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZp
bHRlck9wZXJhdGlvbikpOworICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiBy
ZWZlcmVuY2VPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24q
PihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgZWZmZWN0ID0gYnVpbGRSZWZlcmVuY2VG
aWx0ZXIoZG9jdW1lbnQsIHByZXZpb3VzRWZmZWN0LCByZWZlcmVuY2VPcGVyYXRpb24pOworICAg
ICAgICAgICAgcmVmZXJlbmNlT3BlcmF0aW9uLT5zZXRGaWx0ZXJFZmZlY3QoZWZmZWN0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpHUkFZU0NBTEU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDM5OTdiZGUzYTUyYzMxZDc4ZGE3MzNmMzE5YjdiY2NmMWNkYjVlZjkuLjNhOGMwMjhhNGUy
M2E0YzU2ZWQ2NzYyNzg4OGRmY2E4NGVjYjM0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtNTE3MCw3ICs1MTcwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0UmVuZGVyZXIoKQogICAgICAgICAvLyBmb3IgbG9h
ZGluZyBDU1Mgc2hhZGVyIGZpbGVzLgogICAgICAgICBpZiAoUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
KiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygpKQogICAgICAgICAgICAgZmlsdGVySW5m
by0+c2V0UmVuZGVyZXIoMCk7Ci0gICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBFYXJseS1y
ZXR1cm4gb25seSBpZiB3ZSAqZG9uJ3QqIGhhdmUgcmVmZXJlbmNlIGZpbHRlcnMuCisgICAgICAg
IC8vIEZvciByZWZlcmVuY2UgZmlsdGVycywgd2Ugc3RpbGwgd2FudCB0aGUgRmlsdGVyRWZmZWN0
IGdyYXBoIGJ1aWx0CisgICAgICAgIC8vIGZvciB1cywgZXZlbiBpZiB3ZSdyZSBjb21wb3NpdGVk
LgorICAgICAgICBpZiAoIXJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlcigpLmhhc1JlZmVyZW5j
ZUZpbHRlcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSZW5kZXJM
YXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSBlbnN1cmVGaWx0ZXJJbmZvKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sIGIv
TGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbAppbmRleCAy
Nzk5NGQ3ZWY1Njg0NTk1YjE1ODk3NmRhNWI4OWQwYzY1OWNkNjY2Li4wMTQwMmFhZjYxMjkxODUx
M2Y4YjI3YTMyNTAwMDgyNTZmMWJkY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwKQEAgLTEsOCArMSwyMiBAQAogPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHZlcnNp
b249IjEuMSI+CiAgIDxkZWZzPgotICAgIDxmaWx0ZXIgaWQ9Ik15RmlsdGVyIj4KKyAgICA8Zmls
dGVyIGlkPSJjb2xvcm1hdHJpeCI+CiAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPSJodWVSb3Rh
dGUiIHZhbHVlcz0iMTgwIi8+CiAgICAgPC9maWx0ZXI+CisgICAgPGZpbHRlciBpZD0ibW9ycGhv
bG9neSI+CisgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMTAiIG9wZXJhdG9yPSJkaWxhdGUi
Lz4KKyAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVyIGlkPSJjb21wb25lbnR0cmFuc2ZlciI+Cisg
ICAgICA8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICAgICAgPGZlRnVuY1IgdHlwZT0ibGluZWFy
IiBzbG9wZT0iMC41Ij4KKyAgICAgICAgPGZlRnVuY0cgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41
Ij4KKyAgICAgICAgPGZlRnVuY0IgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41Ij4KKyAgICAgICAg
PGZlRnVuY0EgdHlwZT0iaWRlbnRpdHkiPgorICAgICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgor
ICAgIDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9ImJsdXJZIj4KKyAgICAgIDxmZUdhdXNzaWFu
Qmx1ciBzdGREZXZpYXRpb249IjAgNSIvPgorICAgIDwvZmlsdGVyPgogICA8L2RlZnM+CiA8L3N2
Zz4KIDxzdHlsZT4KQEAgLTExLDQgKzI1LDggQEAgaW1nIHsKICAgICAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWigwKTsKIH0KIDwvc3R5bGU+Ci08aW1nIHN0eWxlPSItd2Via2l0LWZpbHRl
cjogdXJsKCNNeUZpbHRlcik7IGZpbHRlcjogdXJsKCNNeUZpbHRlcik7IiBzcmM9InJlc291cmNl
cy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8
aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNjb2xvcm1hdHJpeCk7IGZpbHRlcjogdXJs
KCNjb2xvcm1hdHJpeCk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5
bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI21vcnBob2xvZ3kpOyBmaWx0ZXI6IHVybCgjbW9ycGhv
bG9neSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJr
aXQtZmlsdGVyOiB1cmwoI2NvbXBvbmVudHRyYW5zZmVyKTsgZmlsdGVyOiB1cmwoI2NvbXBvbmVu
dHRyYW5zZmVyKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0i
LXdlYmtpdC1maWx0ZXI6IHVybCgjYmx1clkpOyBmaWx0ZXI6IHVybCgjYmx1clkpOyIgc3JjPSJy
ZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vcmRlcmluZy1ody5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Utb3JkZXJpbmctaHcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZWExZDg5MDFiMjcwMjdjOTE0NmYyZTcwMzAyNzdjZDcwM2EyMzRkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Utb3JkZXJpbmctaHcu
aHRtbApAQCAtMCwwICsxLDIwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgdmVyc2lvbj0iMS4xIj4KKyAgPGRlZnM+CisgICAg
PGZpbHRlciBpZD0iYmx1clgiPgorICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0i
NSAwIi8+CisgICAgPC9maWx0ZXI+CisgICAgPGZpbHRlciBpZD0iYmx1clkiPgorICAgICAgPGZl
R2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMCA1Ii8+CisgICAgPC9maWx0ZXI+CisgIDwvZGVm
cz4KKzwvc3ZnPgorPHN0eWxlPgoraW1nIHsKKyAgICBtYXJnaW46IDEwcHg7CisgICAgLXdlYmtp
dC10cmFuc2Zvcm06ICB0cmFuc2xhdGVaKDApOworfQorPC9zdHlsZT4KKzxpbWcgc3R5bGU9Ii13
ZWJraXQtZmlsdGVyOiB1cmwoI2JsdXJZKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmci
PgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IGNvbnRyYXN0KDUwMCUpIHVybCgjYmx1clkp
OyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZp
bHRlcjogdXJsKCNibHVyWSkgY29udHJhc3QoNTAwJSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVu
Y2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2JsdXJYKSBjb250cmFz
dCg1MDAlKTsgdXJsKCNibHVyWSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1sCmluZGV4IDQw
ZDM1M2Q3NWM5OWJlMDc0OTMxNDIyMDE0YjY3YmRlOTVlOGJmZjcuLjRkOTNjN2JlN2NmNjg4ZThi
NTMyZjAzZThjYjQ1OTI4NWM5OTFjYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2VmZmVjdC1yZWZlcmVuY2UuaHRtbApAQCAtMSw4ICsxLDIyIEBACiA8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgdmVyc2lvbj0iMS4x
Ij4KICAgPGRlZnM+Ci0gICAgPGZpbHRlciBpZD0iTXlGaWx0ZXIiPgorICAgIDxmaWx0ZXIgaWQ9
ImNvbG9ybWF0cml4Ij4KICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9Imh1ZVJvdGF0ZSIgdmFs
dWVzPSIxODAiLz4KICAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVyIGlkPSJtb3JwaG9sb2d5Ij4K
KyAgICAgIDxmZU1vcnBob2xvZ3kgcmFkaXVzPSIxMCIgb3BlcmF0b3I9ImRpbGF0ZSIvPgorICAg
IDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9ImNvbXBvbmVudHRyYW5zZmVyIj4KKyAgICAgIDxm
ZUNvbXBvbmVudFRyYW5zZmVyPgorICAgICAgICA8ZmVGdW5jUiB0eXBlPSJsaW5lYXIiIHNsb3Bl
PSIwLjUiPgorICAgICAgICA8ZmVGdW5jRyB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAg
ICAgICA8ZmVGdW5jQiB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAgICAgICA8ZmVGdW5j
QSB0eXBlPSJpZGVudGl0eSI+CisgICAgICA8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisgICAgPC9m
aWx0ZXI+CisgICAgPGZpbHRlciBpZD0iYmx1clkiPgorICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0
ZERldmlhdGlvbj0iMCA1Ii8+CisgICAgPC9maWx0ZXI+CiAgIDwvZGVmcz4KIDwvc3ZnPgogPHN0
eWxlPgpAQCAtMTAsNCArMjQsOCBAQCBpbWcgewogICAgIG1hcmdpbjogMTBweDsKIH0KIDwvc3R5
bGU+Ci08aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNNeUZpbHRlcik7IGZpbHRlcjog
dXJsKCNNeUZpbHRlcik7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3Jj
PSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjog
dXJsKCNjb2xvcm1hdHJpeCk7IGZpbHRlcjogdXJsKCNjb2xvcm1hdHJpeCk7IiBzcmM9InJlc291
cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI21v
cnBob2xvZ3kpOyBmaWx0ZXI6IHVybCgjbW9ycGhvbG9neSk7IiBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2NvbXBvbmVudHRy
YW5zZmVyKTsgZmlsdGVyOiB1cmwoI2NvbXBvbmVudHRyYW5zZmVyKTsiIHNyYz0icmVzb3VyY2Vz
L3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjYmx1clkp
OyBmaWx0ZXI6IHVybCgjYmx1clkpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAw
ZWM4MmNlZWRlY2VlODZlN2YzZTVhOTA0Zjg0NDgzYTYxODhiNjc4Li45YWU3NzU1ODQ3NjkzOTg5
MDEyMDQxNTQyODZiMGVjYjM5YWJmMjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQxMzEsNiArNDEzMSwxMCBAQCB3ZWJraXQub3Jn
L2IvOTk3NDkgWyBNb3VudGFpbkxpb24gXSBjb21wb3NpdGluZy9kaXJlY3QtaW1hZ2UtY29tcG9z
aXRpbmcuaHRtbCBbCiB3ZWJraXQub3JnL2IvOTk3NDkgWyBNb3VudGFpbkxpb24gXSBjb21wb3Np
dGluZy9nZW9tZXRyeS9jbGlwcGluZy1mb3JlZ3JvdW5kLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi85OTc0OSBbIE1vdW50YWluTGlvbiBdIGZhc3QvY2FudmFzL2ZvbnQt
dXBkYXRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorQnVnKHNlbm9yYmxhbmNvKSBjc3Mz
L2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWls
dXJlIF0KK0J1ZyhzZW5vcmJsYW5jbykgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Utb3Jk
ZXJpbmctaHcuaHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBNaXNzaW5nIF0KK0J1Zyhz
ZW5vcmJsYW5jbykgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWx1cmUg
SW1hZ2VPbmx5RmFpbHVyZSBdCisKICMgVGhpcyB0ZXN0IGlzIHByb2JhYmx5IGVpdGhlciBGYWls
dXJlIG9yIEltYWdlT25seUZhaWx1cmUgZGVwZW5kaW5nIG9uIHdoaWNoIGZvbnRzIGFyZSBpbnN0
YWxsZWQuCiB3ZWJraXQub3JnL2IvOTk3NDkgWyBNb3VudGFpbkxpb24gXSBmYXN0L3RleHQvbWlk
d29yZC1icmVhay1iZWZvcmUtc3Vycm9nYXRlLXBhaXIuaHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172246</attachid>
            <date>2012-11-04 08:11:07 -0800</date>
            <delta_ts>2012-11-05 13:58:15 -0800</delta_ts>
            <desc>Suppress failures on mac</desc>
            <filename>bug-100142-20121104110854.patch</filename>
            <type>text/plain</type>
            <size>51269</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiZTYzM2Y4NmRlNmMx
ZDg4ZWNjZmUxM2YyOTMzY2M1MDBjYjY0YzhhLi42OGVjYjcyYjM4YzUxZjRiNmE4Y2Q2YTkxNTFj
N2ExNjA4NDJlN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMS0wMSAgUm9iZXJ0IEtyb2VnZXIgIDxyamty
b2VnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBQcm92aWRlIFdlYktpdCBB
UEkgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybSBnZXN0dXJlIGN1cnZlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1
YTdiOTZkNDkzYTAzOTJmOWVhMDNjNmQzNzBmMjljZGZlNTk2OTEuLjg2Njg3YmM5NjYwOGYxNzBj
MWMyOTkwNjI1NDMxMThjNTNjNWUxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAx
Mi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0
ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFzICJwcml2YXRlIi4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0
ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWlsZGVyIGFuZCBzZXRM
YXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0aGVyZSdzIGEgcmVm
ZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VGaWx0ZXIpOgorICAg
ICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBidWlsZGlu
ZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVyRWZmZWN0
KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0lt
YWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBjcmVhdGlvbiBvZiBT
a0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisgICAgICAgIChXZWJD
b3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVu
dCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZpbHRlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZpbHRlcik6
CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUdhdXNzaWFu
Qmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
TGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OmNyZWF0ZUlt
YWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRpbmcgZm9y
IEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xv
Z3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIg
YnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1
aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZvciBidWls
ZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZmZWN0IERB
Ry4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAgICAgICAq
IHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5nIEZpbHRl
ckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisgICAgICAg
IGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNlbGYuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2ZW4gd2hl
biBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVyIGluIHRo
ZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20gaXQuCisK
IDIwMTItMTEtMDMgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtRdF1bV0syXSBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMgYWx3YXlzIGFzc2VydHMgYWZ0ZXIg
cjEzMjc0NApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4
IDdlYzUxNjU1NWVkMzlkODFlZDA5ODI5ZTNiZjIxNDMwNGQ0NGYwZmYuLjZhMzdkMjc4YzEyMDU1
MjQ3ZTA1MTQxZDg3NjJlMmMxM2ZkNjIxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJWZWN0b3Iu
aCIKIAogY2xhc3MgU2tNYXRyaXg0NDsKK2NsYXNzIFNrSW1hZ2VGaWx0ZXI7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7CkBAIC0xMjUsNiArMTI2LDEy
IEBAIHB1YmxpYzoKICAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIG9iamVjdC4KICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJikgPSAwOwogCisg
ICAgLy8gU2V0IHRoZSByb290IG9mIHRoZSBpbWFnZSBmaWx0ZXIgZ3JhcGggZm9yIHRoaXMgbGF5
ZXIuIFRoZSAKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgZ3JhYiBhIHJlZiBvbiB0aGUg
cGFzc2VkLWluIGZpbHRlciBpbiBvcmRlcgorICAgIC8vIHRvIHJldGFpbiBvd25lcnNoaXAuIFRo
ZSBwYXNzZWQtaW4gZ3JhcGggd2lsbCBiZSB1bnJlZidlZCBieSB0aGUKKyAgICAvLyBjYWxsZXIg
YWZ0ZXIgdGhpcyBjYWxsLgorICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXIoU2tJbWFnZUZpbHRl
ciopID0gMDsKKwogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4ZWxzIHRoYXQgc2hvdyB0aHJv
dWdoIHRoZSBiYWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCiAgICAgLy8gTm90ZTogVGhlc2UgZmls
dGVycyBhcmUgb25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBhcmUgZHJhd24gZGlyZWN0bHkK
ICAgICAvLyB0byBhIHJvb3QgcmVuZGVyIHN1cmZhY2Ugd2l0aCBhbiBvcGFxdWUgYmFja2dyb3Vu
ZC4gVGhpcyBtZWFucyBpZiBhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApp
bmRleCA1OWY2NDc0MWQ4ZTI1OWU1YzMwNDc1OTRlOTI4YmZhOGZjOTViOWYxLi4zMjMzY2FjNzll
M2E3NTU1MzFjMzVkNDJiNTk3YjVlMmM5OWRiMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cApAQCAtMTEzLDYgKzExMyw3IEBACiAgICAgICAnLi4vcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMn
LAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtJywKKyAgICAgICcuLi9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdScsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUnLAogICAgICAg
Jy4uL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE4MjA1NDk5
NmU2YWFlY2JmZmFkMWFjZmJhYmUzMGNhOWIxNmU1YzIuLjBhZTAyZDU2Y2U2NjM1MTg2M2NkMGZh
N2U5NzE0ZGQxODQ0MzY5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUwNTYsNiArNTA1Niw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5C
bHVyU2tpYS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRU1vcnBob2xvZ3lTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVp
bGRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmUxOGYyOTgx
ZjJiZDJjNjBkZWI1NGNlNTUyYzY5NmI5OGY0ODc1NS4uOThiYTEzYjAyMzFiNjMxNTAxYWVmMWM2
MDk2Yzk3NzBiZTFhNzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA5LDcgKzIwOSw3IEBACiAJCTA4QzdBMkM3MTBEQzc0
NjIwMDJEMzY4QiAvKiBTVkdOYW1lcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTkwOUQxNTA4RDAwMEU2MUQ3IC8q
IFNWR05hbWVzLmggKi87IH07CiAJCTA4Qzg1OUMwMTI3NDU3NTQwMEE1NzI4RCAvKiBTVkdBbmlt
YXRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4Qzg1OUJGMTI3NDU3NTMwMEE1NzI4RCAvKiBTVkdBbmltYXRlZFJlY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEM5MjUxOTBGQ0M3QzRB
MDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZl
Y3QuY3BwICovOyB9OwotCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUx
ODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi87IH07CisJCTA4QzkyNTFBMEZD
QzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJF
ZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOENBM0Q0NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50
VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRl
YXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEQ0NkNFMzEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhENDZDRTIxMjdB
RDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEU0RkU0NjBFMkJENDE0MDBGNENB
RTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhFNEZFNDUwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3Ro
Q3VzdG9tLmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IGRmMzM1ZDgxMDJlMTBmNWYxMjAzMDI3ZjgyODdkZDg1MDM2NjIwMWMuLjAwNzg3NGRjYzI1
ZWU3NWQyNzM3Y2M5MTZiNGJkMTFmYzg0ZjQ5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNrTWF0cml4
NDQuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3lz
dGVtVGltZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJBbmltYXRpb24uaD4KQEAgLTM4MCwxNSArMzgxLDI1IEBAIHN0YXRpYyBib29sIGNvcHlX
ZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJP
cGVyYXRpCiAKIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgV2ViRmlsdGVyT3BlcmF0aW9ucyB3ZWJG
aWx0ZXJzOwotICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJP
cGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXllciwgYXMgdGhleSBh
cmUKLSAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KLSAgICAg
ICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwot
ICAgICAgICBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgd2Ugb25seSB1c2Ug
U2tJbWFnZUZpbHRlcnMgaWYgdGhlcmUgaXMgYSByZWZlcmVuY2UKKyAgICAvLyBmaWx0ZXIgaW4g
dGhlIGNoYWluLiBPbmNlIGFsbCBpc3N1ZXMgaGF2ZSBiZWVuIGlyb25lZCBvdXQsIHdlIHNob3Vs
ZAorICAgIC8vIHN3aXRjaCBhbGwgZmlsdGVyaW5nIG92ZXIgdG8gdGhpcyBwYXRoLCBhbmQgcmVt
b3ZlIHNldEZpbHRlcnMoKSBhbmQKKyAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIGFsdG9nZXRo
ZXIuCisgICAgaWYgKGZpbHRlcnMuaGFzUmVmZXJlbmNlRmlsdGVyKCkpIHsKKyAgICAgICAgU2tp
YUltYWdlRmlsdGVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBTa0ltYWdlRmlsdGVyKiBpbWFn
ZUZpbHRlciA9IGJ1aWxkZXIuYnVpbGQoZmlsdGVycyk7CisgICAgICAgIG1fbGF5ZXItPmxheWVy
KCktPnNldEZpbHRlcihpbWFnZUZpbHRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViRmls
dGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOworICAgICAgICBpZiAoIWNvcHlXZWJDb3JlRmlsdGVy
T3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0ZXJzLCB3ZWJGaWx0ZXJzKSkgewor
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhl
IHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQorICAgICAgICAgICAgLy8gZ29pbmcgdG8gZmFs
bGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KKyAgICAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNl
dEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5
ZXI6OnNldEZpbHRlcnMoRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKHdl
YkZpbHRlcnMpOwogICAgIH0KLSAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKHdlYkZp
bHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5oCmluZGV4IGU1OGM4YTNkMDFlZGM0YTdkYzgzZjAwYmQ4MjAyZDIxYTllOTYwMjQuLjVj
NzFjMmI3MjUwNjY0NzFiYzczODJhZGYyY2NkMTJjOTc1ZTA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC01MSw2ICs1
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbG9y
QXJyYXlMZW5ndGgpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFw
cGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIo
U2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCmluZGV4IDI3YTRhYzg0MzhmOWE5
ZTI2ODQzOWJjMzJkMmRmZDg5MjFjZTQxYzMuLjk5YjY1MGI5YzFkODQ1YzI0NDk3OTkyYmRkMWJi
NDkxZmNjYmMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEp
CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0lt
YWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5oCmluZGV4IDE4MTgzZTZjYzU4YjBkM2ZiM2Y0YTAzZmIyOTQ0NDFlMmJkN2I3OTcuLjY4NDU0
ZmQzNTdkYzVkYWQwNGViZGRkNTdkZDU2ZTUzZGMyN2U3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFn
ZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggN2IzYmRjZTI5MTczMzY3MTYwYjIx
MGUzZjAzNTIyMDU3ZWE2OWVkNy4uZGFmM2VmMTdhMmMyZjc5Nzg5MTBlYjAxNDE5YmFhOWY4YWJh
OWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNzUsNiArNzUsNyBAQCBwcml2YXRlOgogICAg
IGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQ
aXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2Vy
bmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwogI2lm
IFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZp
cnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVp
bGRlciopOwogI2VuZGlmCiAKICAgICBmbG9hdCBtX3N0ZFg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDQ0ODc4
MzVlOGMwZWYzMDI2ZThlOWZjYjY4YWY0ODM5MjJlN2NhYTUuLjI4ODk4NWQ0Mjg4ZTI5MzBkZDg2
MmY3NDgyMTU4NmFlYWExOTEwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNz
IEZFTGlnaHRpbmcgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCisgICAgdmlydHVh
bCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVy
Kik7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmgKaW5kZXggMTlkYTYzNWEyZTAzYTYxYWYwNDA4ZWNkNGY5MGZkZTRiMGUwNDczMS4u
YjM4ZTY3M2MzODIyMmM2NGI3ZWRmODMzNjg5ZGVjNjMwNzBjYWZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5o
CkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBw
bHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihT
a2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CisKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDE2MjBhYmYxZTNkNWU2NmQxN2Q0NTE2ZTQ0OGY3NTE5
OWFiOGQwNGQuLjA2OWVkZTNlZWFkM2FmNzAyM2Q5ZTllOWQxY2FiNzNlODllMDBlNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaApAQCAtMzUsNiArMzUsMTAgQEAKIAogc3RhdGljIGNvbnN0IGZsb2F0IGtNYXhG
aWx0ZXJTaXplID0gNTAwMC4wZjsKIAorI2lmIFVTRShTS0lBKQorY2xhc3MgU2tJbWFnZUZpbHRl
cjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKQEAgLTQy
LDYgKzQ2LDEwIEBAIGNsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xh
c3MgVGV4dFN0cmVhbTsKIAorI2lmIFVTRShTS0lBKQorY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVp
bGRlcjsKKyNlbmRpZgorCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZp
bHRlckVmZmVjdFZlY3RvcjsKIAogZW51bSBGaWx0ZXJFZmZlY3RUeXBlIHsKQEAgLTk1LDYgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkg
PSAwOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFn
ZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKikgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDcx
MGRiYzkxMzAzOWYzMmZhNzdiMDUzYTg4Yzk5NjRhMmMxZmM4YzQuLjkwNjcwNmJlYTc5NjhkZjE3
ZWFlODhkNzM2MTJhODFmN2Y4ZGQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAogI2luY2x1ZGUgIkNvbG9yLmgiCisj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNs
dWRlICJMZW5ndGguaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xNzUsNiArMTc2LDgg
QEAgcHVibGljOgogCiAgICAgRGF0YSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQogICAgIHZvaWQgc2V0RGF0YShQYXNzT3duUHRyPERhdGE+IGRhdGEpIHsgbV9kYXRhID0g
ZGF0YTsgfQorICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KSB7IG1fZmlsdGVyRWZmZWN0ID0gZmlsdGVy
RWZmZWN0OyB9CiAKIHByaXZhdGU6CiAKQEAgLTE5Niw2ICsxOTksNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKICAgICBPd25QdHI8RGF0YT4g
bV9kYXRhOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZmlsdGVyRWZmZWN0OwogfTsKIAog
Ly8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUgYW5kIEhVRV9ST1RBVEUgYXJlIHZhcmlhdGlv
bnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZmZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5j
cHAKaW5kZXggZmRjYTQzMmY0ZDM0OGExYjk3ZDQ4NzJmNWFiNmMzMTViNTY0NzA0MS4uODA4OWYz
YjUwZDYwNTk2ZmZiODQ2OWE1NGI1YjNlNGY4OGYxYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVCbGVuZFNr
aWEuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAj
aW5jbHVkZSAiU2tCaXRtYXBTb3VyY2UuaCIKICNpbmNsdWRlICJTa0JsZW5kSW1hZ2VGaWx0ZXIu
aCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODQsNiArODUsMTQgQEAgYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tp
YSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQmxlbmQ6OmNyZWF0
ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tJ
bWFnZUZpbHRlciogZm9yZWdyb3VuZCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKTsK
KyAgICBTa0ltYWdlRmlsdGVyKiBiYWNrZ3JvdW5kID0gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZl
Y3QoMSkpOworICAgIFNrQmxlbmRJbWFnZUZpbHRlcjo6TW9kZSBtb2RlID0gdG9Ta2lhTW9kZSht
X21vZGUpOworICAgIHJldHVybiBuZXcgU2tCbGVuZEltYWdlRmlsdGVyKG1vZGUsIGJhY2tncm91
bmQsIGZvcmVncm91bmQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCmlu
ZGV4IDBmZDA3Nzc2ZTAzMDczMDhhMTE4YTYzMDk2MDQzZTBmOWE1MDUzZWIuLmFmZmJhZWFkMDQ4
MDU5N2VmYTljMDNhYmZlN2NiZTIzNTZmMmMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JN
YXRyaXhTa2lhLmNwcApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXgu
aCIKIAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0
ZXJJbWFnZUZpbHRlci5oIgogI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNpbmNs
dWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtODAsMjQgKzgyLDE1IEBAIHN0YXRpYyB2b2lkIGx1bWluYW5jZVRvQWxwaGFNYXRyaXgoU2tT
Y2FsYXIgbWF0cml4WzIwXSkKICAgICBtYXRyaXhbMTddID0gMC4wNzIxZjsKIH0KIAotYm9vbCBG
RUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCitzdGF0aWMgU2tDb2xvckZpbHRlciog
Y3JlYXRlQ29sb3JGaWx0ZXIoQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IGZsb2F0KiB2YWx1
ZXMpCiB7Ci0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0IGlt
YWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0KICAgICBT
a1NjYWxhciBtYXRyaXhbMjBdOwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMjA7ICsraSkKLSAgICAgICAgICAgIG1hdHJpeFtpXSA9IG1fdmFsdWVz
W2ldOworICAgICAgICAgICAgbWF0cml4W2ldID0gdmFsdWVzW2ldOwogCiAgICAgICAgIG1hdHJp
eFs0XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBtYXRyaXhbOV0gKj0gU2tTY2FsYXIoMjU1
KTsKQEAgLTEwNSwxNSArOTgsMjkgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U2tpYSgpCiAgICAgICAgIG1hdHJpeFsxOV0gKj0gU2tTY2FsYXIoMjU1KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6IAotICAgICAgICBzYXR1
cmF0ZU1hdHJpeChtX3ZhbHVlc1swXSwgbWF0cml4KTsKKyAgICAgICAgc2F0dXJhdGVNYXRyaXgo
dmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIGh1ZVJvdGF0ZU1hdHJpeChtX3ZhbHVlc1swXSwg
bWF0cml4KTsKKyAgICAgICAgaHVlUm90YXRlTWF0cml4KHZhbHVlc1swXSwgbWF0cml4KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBI
QToKICAgICAgICAgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChtYXRyaXgpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgcmV0dXJuIG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCk7Cit9
CisKK2Jvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgaWYg
KCFyZXN1bHRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmlsdGVyRWZmZWN0
KiBpbiA9IGlucHV0RWZmZWN0KDApOworCisgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQo
KSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOworCisgICAgU2tBdXRvVFVucmVmPFNrQ29s
b3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEo
KSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMTIyLDEy
ICsxMjksMTkgQEAgYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAKICAg
ICBTa0NhbnZhcyogY2FudmFzID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpOwogICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3JG
aWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KSktPnVucmVmKCk7CisgICAgcGFp
bnQuc2V0Q29sb3JGaWx0ZXIoZmlsdGVyKTsKICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUoU2tY
ZmVybW9kZTo6a1NyY19Nb2RlKTsKICAgICBjYW52YXMtPmRyYXdCaXRtYXAobmF0aXZlSW1hZ2Ut
PmJpdG1hcCgpLCAwLCAwLCAmcGFpbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCitTa0ltYWdl
RmlsdGVyKiBGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1
dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkpOworICAgIFNrQXV0b1RVbnJlZjxTa0Nv
bG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0ZXIobV90eXBlLCBtX3ZhbHVlcy5kYXRh
KCkpKTsKKyAgICByZXR1cm4gU2tDb2xvckZpbHRlckltYWdlRmlsdGVyOjpDcmVhdGUoZmlsdGVy
LCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShGSUxURVJTKSAmJiBVU0UoU0tJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25lbnRU
cmFuc2ZlclNraWEuY3BwCmluZGV4IDU3N2E1YjA2NTViZjVlM2Y3ZjA4YTMyYzI2ODYzMjE1NzVj
ZmI2NzguLjg2ZDVkN2U2NjJhZjU4Mjc5MjFhODQzNDE1MmExMGNiZTQ3MDgyZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBv
bmVudFRyYW5zZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcApAQCAtMjksNyArMjks
OSBAQAogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKIAogI2luY2x1ZGUgIk5hdGl2
ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlci5oIgogI2lu
Y2x1ZGUgIlNrVGFibGVDb2xvckZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1
aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2ICs1NywxOCBAQCBib29s
IEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0ltYWdlRmls
dGVyKiBpbnB1dCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKTsKKworICAgIHVuc2ln
bmVkIGNoYXIgclZhbHVlc1syNTZdLCBnVmFsdWVzWzI1Nl0sIGJWYWx1ZXNbMjU2XSwgYVZhbHVl
c1syNTZdOworICAgIGdldFZhbHVlcyhyVmFsdWVzLCBnVmFsdWVzLCBiVmFsdWVzLCBhVmFsdWVz
KTsKKworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBjb2xvckZpbHRlcihTa1RhYmxl
Q29sb3JGaWx0ZXI6OkNyZWF0ZUFSR0IoYVZhbHVlcywgclZhbHVlcywgZ1ZhbHVlcywgYlZhbHVl
cykpOworCisgICAgcmV0dXJuIFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlcjo6Q3JlYXRlKGNvbG9y
RmlsdGVyLCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcApp
bmRleCBiNjk0YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1Li5mNWY0NmRhZWRj
YTNiNTNlZjEzNGY1N2Q2ZDY5MTgxNWFlM2Y5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVz
c2lhbkJsdXJTa2lhLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWEuaCIKICNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2lu
Y2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw1ICs2MiwxMSBAQCBib29sIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U2tp
YSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFR2F1c3NpYW5CbHVy
OjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorewor
ICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1
dEVmZmVjdCgwKSkpOworICAgIHJldHVybiBuZXcgU2tCbHVySW1hZ2VGaWx0ZXIoU2tGbG9hdFRv
U2NhbGFyKG1fc3RkWCksIFNrRmxvYXRUb1NjYWxhcihtX3N0ZFkpLCBpbnB1dCk7Cit9CisKIH07
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwCmluZGV4IDFhNmEyZDcwZWU3
MDYzODFlOGJkY2JjMGE5YTlhMzc0NWYzODY2ZTMuLjE2NzIzNGQzYjM1OWEwZWE1MGM3MzIyMWIy
MzNkYjYwOGU4YmFkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lhLmNwcApAQCAtMzEs
MzIgKzMxLDE0IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUG9p
bnRMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNrTGlnaHRpbmdJbWFnZUZpbHRlci5oIgorI2lu
Y2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTcG90TGlnaHRTb3Vy
Y2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFTGlnaHRpbmc6OnBsYXRmb3Jt
QXBwbHlTa2lhKCkKK1NrSW1hZ2VGaWx0ZXIqIEZFTGlnaHRpbmc6OmNyZWF0ZUltYWdlRmlsdGVy
KFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCiB7Ci0gICAgLy8gRm9yIG5vdywgb25s
eSB1c2UgdGhlIHNraWEgaW1wbGVtZW50YXRpb24gZm9yIGFjY2VsZXJhdGVkIHJlbmRlcmluZy4K
LSAgICBpZiAoZmlsdGVyKCktPnJlbmRlcmluZ01vZGUoKSAhPSBBY2NlbGVyYXRlZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRl
SW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAg
ICBJbnRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKTsKLQotICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUlt
YWdlKCkpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCkt
PmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLQot
ICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgU2tJbWFnZUZpbHRlciogaW5wdXQgPSBidWlsZGVyID8g
YnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpIDogMDsKICAgICBzd2l0Y2ggKG1fbGlnaHRT
b3VyY2UtPnR5cGUoKSkgewogICAgIGNhc2UgTFNfRElTVEFOVDogewogICAgICAgICBEaXN0YW50
TGlnaHRTb3VyY2UqIGRpc3RhbnRMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PERpc3RhbnRMaWdo
dFNvdXJjZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtNjYsMjAgKzQ4LDE4IEBAIGJvb2wg
RkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2luZihhemltdXRoUmFkKSAqIGNvc2YoZWxldmF0aW9uUmFkKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpbmYoZWxldmF0aW9uUmFkKSk7CiAgICAgICAgIGlmIChtX3NwZWN1bGFy
Q29uc3RhbnQgPiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGlu
Z0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50TGl0U3BlY3VsYXIoZGlyZWN0aW9uLCBtX2xpZ2h0
aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3Bl
Y3VsYXJFeHBvbmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJ
bWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdFNwZWN1bGFyKGRpcmVjdGlvbiwgbV9saWdodGlu
Z0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1
bGFyRXhwb25lbnQsIGlucHV0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnQuc2V0
SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50TGl0RGlmZnVz
ZShkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlm
ZnVzZUNvbnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0
dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdERpZmZ1c2UoZGlyZWN0
aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25z
dGFudCwgaW5wdXQpOwogICAgIH0KICAgICBjYXNlIExTX1BPSU5UOiB7CiAgICAgICAgIFBvaW50
TGlnaHRTb3VyY2UqIHBvaW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxQb2ludExpZ2h0U291
cmNlKj4obV9saWdodFNvdXJjZS5nZXQoKSk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlv
biA9IHBvaW50TGlnaHRTb3VyY2UtPnBvc2l0aW9uKCk7CiAgICAgICAgIFNrUG9pbnQzIHNrUG9z
aXRpb24ocG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCksIHBvc2l0aW9uLnooKSk7CiAgICAgICAg
IGlmIChtX3NwZWN1bGFyQ29uc3RhbnQgPiAwKQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VG
aWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9z
aXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJD
b25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50KSktPnVucmVmKCk7CisgICAgICAgICAgICByZXR1
cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRp
b24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25z
dGFudCwgbV9zcGVjdWxhckV4cG9uZW50LCBpbnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9p
bnRMaXREaWZmdXNlKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNl
U2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZm
dXNlKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1f
ZGlmZnVzZUNvbnN0YW50LCBpbnB1dCk7CiAgICAgfQogICAgIGNhc2UgTFNfU1BPVDogewogICAg
ICAgICBTcG90TGlnaHRTb3VyY2UqIHNwb3RMaWdodFNvdXJjZSA9IHN0YXRpY19jYXN0PFNwb3RM
aWdodFNvdXJjZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpAQCAtOTAsMTUgKzcwLDM5IEBAIGJv
b2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQogICAgICAgICBpZiAoIWxpbWl0aW5n
Q29uZUFuZ2xlIHx8IGxpbWl0aW5nQ29uZUFuZ2xlID4gOTAgfHwgbGltaXRpbmdDb25lQW5nbGUg
PCAtOTApCiAgICAgICAgICAgICBsaW1pdGluZ0NvbmVBbmdsZSA9IDkwOwogICAgICAgICBpZiAo
bV9zcGVjdWxhckNvbnN0YW50ID4gMCkKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVy
KFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0
YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29s
b3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJF
eHBvbmVudCkpLT51bnJlZigpOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZp
bHRlcjo6Q3JlYXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhw
b25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFj
ZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCwgaW5wdXQpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5n
SW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNlKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1
bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1f
c3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCkpLT51bnJlZigpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RM
aXREaWZmdXNlKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29u
ZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VD
b25zdGFudCwgaW5wdXQpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gMDsKICAg
ICB9Cit9CisKK2Jvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQoreworICAgIC8v
IEZvciBub3csIG9ubHkgdXNlIHRoZSBza2lhIGltcGxlbWVudGF0aW9uIGZvciBhY2NlbGVyYXRl
ZCByZW5kZXJpbmcuCisgICAgaWYgKGZpbHRlcigpLT5yZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxl
cmF0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJ
bWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZm
ZWN0KDApOworCisgICAgSW50UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisKKyAgICBzZXRJc0FscGhhSW1hZ2Uo
aW4tPmlzQWxwaGFJbWFnZSgpKTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJ
bWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIE5hdGl2
ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCogZHN0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7CisKKyAgICBTa1BhaW50IHBhaW50OworICAgIHBhaW50LnNldEltYWdlRmlsdGVy
KGNyZWF0ZUltYWdlRmlsdGVyKDApKS0+dW5yZWYoKTsKICAgICBkc3RDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCktPmRyYXdCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpLCBk
cmF3aW5nUmVnaW9uLmxvY2F0aW9uKCkueCgpLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCkueSgp
LCAmcGFpbnQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9n
eVNraWEuY3BwCmluZGV4IGU3MjkwYmVjN2UyZGU0YTgyOTNjZmE1YWUxM2U5YjI4ZmYzMmRiMDUu
LmIyZTlmNGZjZmI3ZTNlYWYyMjE5YWM0NTZjNTdmMjg1ZTgzNzU5MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lT
a2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nr
aWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGRU1v
cnBob2xvZ3kuaCIKIAogI2luY2x1ZGUgIlNrTW9ycGhvbG9neUltYWdlRmlsdGVyLmgiCisjaW5j
bHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYyLDUgKzYzLDE1IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U2tpYSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFTW9ycGhvbG9neTo6Y3Jl
YXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBT
a0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQoYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZl
Y3QoMCkpKTsKKyAgICBTa1NjYWxhciByYWRpdXNYID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVz
WCk7CisgICAgU2tTY2FsYXIgcmFkaXVzWSA9IFNrRmxvYXRUb1NjYWxhcihtX3JhZGl1c1kpOwor
ICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSkKKyAgICAgICAg
cmV0dXJuIG5ldyBTa0RpbGF0ZUltYWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsK
KyAgICByZXR1cm4gbmV3IFNrRXJvZGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZLCBpbnB1
dCk7Cit9CisKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjVkNTExYTFiZjBmNmMyZTAzNDZkODBkYzE0N2M0YmVj
ZTg1OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRl
ckJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRl
ck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTa0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUg
IlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0
ZXIuaCIKKyNpbmNsdWRlICJTa01hdHJpeC5oIgorCituYW1lc3BhY2UgeworCit2b2lkIGdldEJy
aWdodG5lc3NNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAg
IG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgLy8gICAgT2xk
IGltcGxlbWVudGF0aW9uLCBhIGxhIHRoZSBkcmFmdCBzcGVjLCBhIHN0cmFpZ2h0LXVwIHNjYWxl
LAorICAgIC8vICAgIHJlcHJlc2VudGluZyA8ZmVGdW5jW1J8R3xCXSB0eXBlPSJsaW5lYXIiIHNs
b3BlPSJbYW1vdW50XSI+CisgICAgLy8gICAgKFNlZSBodHRwOi8vZHZjcy53My5vcmcvaGcvRlhU
Ri9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2JyaWdodG5lc3NFcXVpdmFsZW50KQor
ICAgIC8vIG1hdHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSBhbW91bnQ7CisgICAg
Ly8gbWF0cml4WzE4XSA9IDE7CisgICAgLy8gICAgTmV3IGltcGxlbWVudGF0aW9uLCBhIHRyYW5z
bGF0aW9uIGluIGNvbG9yIHNwYWNlLCByZXByZXNlbnRpbmcKKyAgICAvLyAgICA8ZmVGdW5jW1J8
R3xCXSB0eXBlPSJsaW5lYXIiIGludGVyY2VwdD0iW2Ftb3VudF0iLz4KKyAgICAvLyAgICAoU2Vl
IGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDcpCisg
ICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IG1hdHJpeFsxOF0gPSAxOwor
ICAgIG1hdHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7Cit9
CisKK3ZvaWQgZ2V0Q29udHJhc3RNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhb
MjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7Cisg
ICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IGFtb3VudDsKKyAgICBtYXRy
aXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gKC0wLjVmICogYW1vdW50ICsgMC41Zikg
KiAyNTU7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0U2F0dXJhdGVNYXRyaXgo
ZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIC8vIE5vdGUsIHRoZXNl
IHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8gZW5zdXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFs
c2UKKyAgICAvLyBmb3IgYW1vdW50IGluIFswLi4xXQorICAgIG1hdHJpeFswXSA9IDAuMjEzZiAr
IDAuNzg3ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91
bnQ7CisgICAgbWF0cml4WzJdID0gMS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7CisgICAg
bWF0cml4WzNdID0gbWF0cml4WzRdID0gMDsKKyAgICBtYXRyaXhbNV0gPSAwLjIxM2YgLSAwLjIx
M2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzZdID0gMC43MTVmICsgMC4yODVmICogYW1vdW50Owor
ICAgIG1hdHJpeFs3XSA9IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0pOworICAgIG1hdHJp
eFs4XSA9IG1hdHJpeFs5XSA9IDA7CisgICAgbWF0cml4WzEwXSA9IDAuMjEzZiAtIDAuMjEzZiAq
IGFtb3VudDsKKyAgICBtYXRyaXhbMTFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50OworICAg
IG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJpeFsxMV0pOworICAgIG1hdHJp
eFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1h
dHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9p
ZCBnZXRIdWVSb3RhdGVNYXRyaXgoZmxvYXQgaHVlLCBTa1NjYWxhciBtYXRyaXhbMjBdKQorewor
ICAgIGZsb2F0IGNvc0h1ZSA9IGNvc2YoaHVlICogcGlGbG9hdCAvIDE4MCk7CisgICAgZmxvYXQg
c2luSHVlID0gc2luZihodWUgKiBwaUZsb2F0IC8gMTgwKTsKKyAgICBtYXRyaXhbMF0gPSAwLjIx
M2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAwLjIxM2Y7CisgICAgbWF0cml4WzFdID0g
MC43MTVmIC0gY29zSHVlICogMC43MTVmIC0gc2luSHVlICogMC43MTVmOworICAgIG1hdHJpeFsy
XSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiArIHNpbkh1ZSAqIDAuOTI4ZjsKKyAgICBtYXRy
aXhbM10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJpeFs1XSA9IDAuMjEzZiAtIGNvc0h1ZSAq
IDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQzZjsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYgKyBjb3NI
dWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0MGY7CisgICAgbWF0cml4WzddID0gMC4wNzJmIC0g
Y29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNmOworICAgIG1hdHJpeFs4XSA9IG1hdHJp
eFs5XSA9IDA7CisgICAgbWF0cml4WzEwXSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAtIHNp
bkh1ZSAqIDAuNzg3ZjsKKyAgICBtYXRyaXhbMTFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVm
ICsgc2luSHVlICogMC43MTVmOworICAgIG1hdHJpeFsxMl0gPSAwLjA3MmYgKyBjb3NIdWUgKiAw
LjkyOGYgKyBzaW5IdWUgKiAwLjA3MmY7CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAw
OworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IDA7CisgICAgbWF0
cml4WzE4XSA9IDE7CisgICAgbWF0cml4WzE5XSA9IDA7Cit9CisKK3ZvaWQgZ2V0SW52ZXJ0TWF0
cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0
cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOworICAgIG1hdHJpeFswXSA9IG1hdHJpeFs2
XSA9IG1hdHJpeFsxMl0gPSAxIC0gMiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBtYXRyaXhb
OV0gPSBtYXRyaXhbMTRdID0gYW1vdW50ICogMjU1OworICAgIG1hdHJpeFsxOF0gPSAxOworfQor
Cit2b2lkIGdldE9wYWNpdHlNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBd
KQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAg
bWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IDE7CisgICAgbWF0cml4WzE4XSA9
IGFtb3VudDsKK30KKwordm9pZCBnZXRHcmF5c2NhbGVNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1Nj
YWxhciBtYXRyaXhbMjBdKQoreworICAgIC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0
ZWQgdG8gZW5zdXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFsc2UKKyAgICAvLyBmb3IgYW1v
dW50IGluIFswLi4xXQorICAgIG1hdHJpeFswXSA9IDAuMjEyNmYgKyAwLjc4NzRmICogYW1vdW50
OworICAgIG1hdHJpeFsxXSA9IDAuNzE1MmYgLSAwLjcxNTJmICogYW1vdW50OworICAgIG1hdHJp
eFsyXSA9IDEuZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhbMV0pOworICAgIG1hdHJpeFszXSA9IG1h
dHJpeFs0XSA9IDA7CisKKyAgICBtYXRyaXhbNV0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3Vu
dDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNTJmICsgMC4yODQ4ZiAqIGFtb3VudDsKKyAgICBtYXRy
aXhbN10gPSAxLmYgLSAobWF0cml4WzVdICsgbWF0cml4WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBt
YXRyaXhbOV0gPSAwOworCisgICAgbWF0cml4WzEwXSA9IDAuMjEyNmYgLSAwLjIxMjZmICogYW1v
dW50OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIGFtb3VudDsKKyAgICBt
YXRyaXhbMTJdID0gMS5mIC0gKG1hdHJpeFsxMF0gKyBtYXRyaXhbMTFdKTsKKyAgICBtYXRyaXhb
MTNdID0gbWF0cml4WzE0XSA9IDA7CisKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1h
dHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9p
ZCBnZXRTZXBpYU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7Cisg
ICAgbWF0cml4WzBdID0gMC4zOTNmICsgMC42MDdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9
IDAuNzY5ZiAtIDAuNzY5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0gPSAwLjE4OWYgLSAwLjE4
OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRdID0gMDsKKworICAgIG1hdHJp
eFs1XSA9IDAuMzQ5ZiAtIDAuMzQ5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjY4NmYg
KyAwLjMxNGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzddID0gMC4xNjhmIC0gMC4xNjhmICogYW1v
dW50OworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0g
MC4yNzJmIC0gMC4yNzJmICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjUzNGYgLSAwLjUz
NGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEyXSA9IDAuMTMxZiArIDAuODY5ZiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9IDA7CisKKyAgICBtYXRyaXhbMTVdID0gbWF0
cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBtYXRyaXhbMThdID0g
MTsKK30KKworU2tJbWFnZUZpbHRlciogY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIoU2tTY2FsYXIg
bWF0cml4WzIwXSwgU2tJbWFnZUZpbHRlciogaW5wdXQpCit7CisgICAgU2tBdXRvVFVucmVmPFNr
Q29sb3JGaWx0ZXI+IGNvbG9yRmlsdGVyKG5ldyBTa0NvbG9yTWF0cml4RmlsdGVyKG1hdHJpeCkp
OworICAgIHJldHVybiBTa0NvbG9yRmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShjb2xvckZpbHRl
ciwgaW5wdXQpOworfQorCit9OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NraWFJbWFnZUZp
bHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXIoKQoreworfQorCitTa0ltYWdlRmls
dGVyKiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWlsZChGaWx0ZXJFZmZlY3QqIGVmZmVjdCkK
K3sKKyAgICBpZiAoIWVmZmVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGaWx0ZXJCdWls
ZGVySGFzaE1hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGVmZmVjdCk7CisgICAgaWYgKGl0
ICE9IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworCisgICAgU2tJbWFn
ZUZpbHRlciogZmlsdGVyID0gZWZmZWN0LT5jcmVhdGVJbWFnZUZpbHRlcih0aGlzKTsKKyAgICBt
X21hcC5zZXQoZWZmZWN0LCBmaWx0ZXIpOworICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK1NrSW1h
Z2VGaWx0ZXIqIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIG9wZXJhdGlvbnMpCit7CisgICAgU2tJbWFnZUZpbHRlciogZmlsdGVyID0gMDsKKyAg
ICBTa1NjYWxhciBtYXRyaXhbMjBdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG9wID0g
Km9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIHN3aXRjaCAob3AuZ2V0T3BlcmF0aW9uVHlwZSgp
KSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKKyAgICAgICAg
ICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+ZmlsdGVyRWZmZWN0KCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogaG9vayB1cCBwYXJlbnQgZmlsdGVyIHRvIGltYWdlIHNvdXJjZQorICAgICAgICAg
ICAgZmlsdGVyID0gU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVpbGQoZmlsdGVyRWZmZWN0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpHUkFZU0NBTEU6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsK
KyAgICAgICAgICAgIGdldEdyYXlzY2FsZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAg
ICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0VQSUE6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAg
ICAgICAgIGdldFNlcGlhTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRl
ciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFU
RTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAg
Z2V0U2F0dXJhdGVNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0g
Y3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6
IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dEh1ZVJvdGF0ZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBj
cmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7Cisg
ICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBn
ZXRJbnZlcnRNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3Jl
YXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAg
ICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdl
dE9wYWNpdHlNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3Jl
YXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6IHsK
KyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAg
IGdldEJyaWdodG5lc3NNYXRyaXgoYW1vdW50LCBtYXRyaXgpOworICAgICAgICAgICAgZmlsdGVy
ID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0ZXIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNU
OiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1vdW50KCk7CisgICAgICAg
ICAgICBnZXRDb250cmFzdE1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0
ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjog
eworICAgICAgICAgICAgZmxvYXQgcGl4ZWxSYWRpdXMgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVy
RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+c3RkRGV2aWF0aW9uKCkuZ2V0RmxvYXRWYWx1ZSgpOwor
ICAgICAgICAgICAgZmlsdGVyID0gbmV3IFNrQmx1ckltYWdlRmlsdGVyKHBpeGVsUmFkaXVzLCBw
aXhlbFJhZGl1cywgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworLy8gICAgICAgICAgICBj
b25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uJiBkcm9wU2hhZG93T3AgPSAqc3RhdGljX2Nh
c3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvcCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogZG8gb2Zmc2V0IGFuZCBibHVyCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlZBTElEQVRFRF9DVVNUT006CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006
CisgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkLgorI2VuZGlmCisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
Ok5PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
ZmlsdGVyOworfQorCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjdiZDY4MzIwYjZhOTI5YzYxMDA5ODY4YjU3MTQ2ZDFkZjYyNTk0NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisjZGVmaW5lIFNraWFJbWFnZUZpbHRl
ckJ1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworY2xhc3MgU2tJbWFnZUZp
bHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmlsdGVyRWZmZWN0OworY2xhc3Mg
RmlsdGVyT3BlcmF0aW9uczsKKworY2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlciB7CitwdWJs
aWM6CisgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlcigpOworCisgICAgU2tJbWFnZUZpbHRlciog
YnVpbGQoRmlsdGVyRWZmZWN0Kik7CisgICAgU2tJbWFnZUZpbHRlciogYnVpbGQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpOworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8RmlsdGVyRWZm
ZWN0KiwgU2tJbWFnZUZpbHRlcio+IEZpbHRlckJ1aWxkZXJIYXNoTWFwOworICAgIEZpbHRlckJ1
aWxkZXJIYXNoTWFwIG1fbWFwOworfTsKKworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCAyMWFlMTZmYjBm
ZDUzMTI4YmJiZGVmMzQ3YjljZmM0ZDIzOWIyYWUxLi4zYmZlNTJiZjgwMmIyMzZhOGEwNjU0YzQ0
YWY2NDhjZDMyZjU1NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTIwNCw3ICsyMDQsOSBAQCBib29sIEZpbHRlckVmZmVj
dFJlbmRlcmVyOjpidWlsZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIG9wZQogICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9w
ZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmls
dGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKSk7CisgICAgICAgICAgICBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBlZmZlY3QgPSBi
dWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJldmlvdXNFZmZlY3QsIHJlZmVyZW5jZU9w
ZXJhdGlvbik7CisgICAgICAgICAgICByZWZlcmVuY2VPcGVyYXRpb24tPnNldEZpbHRlckVmZmVj
dChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggMzk5N2JkZTNhNTJjMzFkNzhkYTczM2YzMTliN2JjY2YxY2RiNWVm
OS4uM2E4YzAyOGE0ZTIzYTRjNTZlZDY3NjI3ODg4ZGZjYTg0ZWNiMzQwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MTcwLDcgKzUxNzAsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCiAgICAg
ICAgIC8vIGZvciBsb2FkaW5nIENTUyBzaGFkZXIgZmlsZXMuCiAgICAgICAgIGlmIChSZW5kZXJM
YXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSB0aGlzLT5maWx0ZXJJbmZvKCkpCiAgICAgICAg
ICAgICBmaWx0ZXJJbmZvLT5zZXRSZW5kZXJlcigwKTsKLSAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIC8vIEVhcmx5LXJldHVybiBvbmx5IGlmIHdlICpkb24ndCogaGF2ZSByZWZlcmVuY2UgZmls
dGVycy4KKyAgICAgICAgLy8gRm9yIHJlZmVyZW5jZSBmaWx0ZXJzLCB3ZSBzdGlsbCB3YW50IHRo
ZSBGaWx0ZXJFZmZlY3QgZ3JhcGggYnVpbHQKKyAgICAgICAgLy8gZm9yIHVzLCBldmVuIGlmIHdl
J3JlIGNvbXBvc2l0ZWQuCisgICAgICAgIGlmICghcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVy
KCkuaGFzUmVmZXJlbmNlRmlsdGVyKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRlcklu
Zm8oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJl
bmNlLWh3Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sCmluZGV4IDI3OTk0ZDdlZjU2ODQ1OTViMTU4OTc2ZGE1Yjg5ZDBjNjU5Y2Q2NjYuLjAx
NDAyYWFmNjEyOTE4NTEzZjhiMjdhMzI1MDAwODI1NmYxYmRjZWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbApAQCAtMSw4ICsxLDIy
IEBACiA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjAiIGhl
aWdodD0iMCIgdmVyc2lvbj0iMS4xIj4KICAgPGRlZnM+Ci0gICAgPGZpbHRlciBpZD0iTXlGaWx0
ZXIiPgorICAgIDxmaWx0ZXIgaWQ9ImNvbG9ybWF0cml4Ij4KICAgICAgIDxmZUNvbG9yTWF0cml4
IHR5cGU9Imh1ZVJvdGF0ZSIgdmFsdWVzPSIxODAiLz4KICAgICA8L2ZpbHRlcj4KKyAgICA8Zmls
dGVyIGlkPSJtb3JwaG9sb2d5Ij4KKyAgICAgIDxmZU1vcnBob2xvZ3kgcmFkaXVzPSIxMCIgb3Bl
cmF0b3I9ImRpbGF0ZSIvPgorICAgIDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9ImNvbXBvbmVu
dHRyYW5zZmVyIj4KKyAgICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgorICAgICAgICA8ZmVGdW5j
UiB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAgICAgICA8ZmVGdW5jRyB0eXBlPSJsaW5l
YXIiIHNsb3BlPSIwLjUiPgorICAgICAgICA8ZmVGdW5jQiB0eXBlPSJsaW5lYXIiIHNsb3BlPSIw
LjUiPgorICAgICAgICA8ZmVGdW5jQSB0eXBlPSJpZGVudGl0eSI+CisgICAgICA8L2ZlQ29tcG9u
ZW50VHJhbnNmZXI+CisgICAgPC9maWx0ZXI+CisgICAgPGZpbHRlciBpZD0iYmx1clkiPgorICAg
ICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMCA1Ii8+CisgICAgPC9maWx0ZXI+CiAg
IDwvZGVmcz4KIDwvc3ZnPgogPHN0eWxlPgpAQCAtMTEsNCArMjUsOCBAQCBpbWcgewogICAgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogfQogPC9zdHlsZT4KLTxpbWcgc3R5bGU9
Ii13ZWJraXQtZmlsdGVyOiB1cmwoI015RmlsdGVyKTsgZmlsdGVyOiB1cmwoI015RmlsdGVyKTsi
IHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4
KTsgZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5w
bmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjbW9ycGhvbG9neSk7IGZpbHRl
cjogdXJsKCNtb3JwaG9sb2d5KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGlt
ZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjY29tcG9uZW50dHJhbnNmZXIpOyBmaWx0ZXI6
IHVybCgjY29tcG9uZW50dHJhbnNmZXIpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+
Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNibHVyWSk7IGZpbHRlcjogdXJsKCNi
bHVyWSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgYi9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vcmRlcmluZy1ody5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlYTFkODkwMWIyNzAyN2M5MTQ2ZjJlNzAzMDI3N2NkNzAzYTIzNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5j
ZS1vcmRlcmluZy1ody5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiB2ZXJzaW9uPSIxLjEiPgor
ICA8ZGVmcz4KKyAgICA8ZmlsdGVyIGlkPSJibHVyWCI+CisgICAgICA8ZmVHYXVzc2lhbkJsdXIg
c3RkRGV2aWF0aW9uPSI1IDAiLz4KKyAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVyIGlkPSJibHVy
WSI+CisgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIwIDUiLz4KKyAgICA8L2Zp
bHRlcj4KKyAgPC9kZWZzPgorPC9zdmc+Cis8c3R5bGU+CitpbWcgeworICAgIG1hcmdpbjogMTBw
eDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogIHRyYW5zbGF0ZVooMCk7Cit9Cis8L3N0eWxlPgor
PGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjYmx1clkpOyIgc3JjPSJyZXNvdXJjZXMv
cmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogY29udHJhc3QoNTAw
JSkgdXJsKCNibHVyWSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5
bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2JsdXJZKSBjb250cmFzdCg1MDAlKTsiIHNyYz0icmVz
b3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgj
Ymx1clgpIGNvbnRyYXN0KDUwMCUpOyB1cmwoI2JsdXJZKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVy
ZW5jZS5wbmciPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1y
ZWZlcmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNl
Lmh0bWwKaW5kZXggNDBkMzUzZDc1Yzk5YmUwNzQ5MzE0MjIwMTRiNjdiZGU5NWU4YmZmNy4uNGQ5
M2M3YmU3Y2Y2ODhlOGI1MzJmMDNlOGNiNDU5Mjg1Yzk5MWNiZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1sCkBAIC0xLDggKzEsMjIgQEAKIDxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMCIgaGVpZ2h0PSIw
IiB2ZXJzaW9uPSIxLjEiPgogICA8ZGVmcz4KLSAgICA8ZmlsdGVyIGlkPSJNeUZpbHRlciI+Cisg
ICAgPGZpbHRlciBpZD0iY29sb3JtYXRyaXgiPgogICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT0i
aHVlUm90YXRlIiB2YWx1ZXM9IjE4MCIvPgogICAgIDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9
Im1vcnBob2xvZ3kiPgorICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEwIiBvcGVyYXRvcj0i
ZGlsYXRlIi8+CisgICAgPC9maWx0ZXI+CisgICAgPGZpbHRlciBpZD0iY29tcG9uZW50dHJhbnNm
ZXIiPgorICAgICAgPGZlQ29tcG9uZW50VHJhbnNmZXI+CisgICAgICAgIDxmZUZ1bmNSIHR5cGU9
ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImxpbmVhciIgc2xv
cGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNCIHR5cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+Cisg
ICAgICAgIDxmZUZ1bmNBIHR5cGU9ImlkZW50aXR5Ij4KKyAgICAgIDwvZmVDb21wb25lbnRUcmFu
c2Zlcj4KKyAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVyIGlkPSJibHVyWSI+CisgICAgICA8ZmVH
YXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIwIDUiLz4KKyAgICA8L2ZpbHRlcj4KICAgPC9kZWZz
PgogPC9zdmc+CiA8c3R5bGU+CkBAIC0xMCw0ICsyNCw4IEBAIGltZyB7CiAgICAgbWFyZ2luOiAx
MHB4OwogfQogPC9zdHlsZT4KLTxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI015Rmls
dGVyKTsgZmlsdGVyOiB1cmwoI015RmlsdGVyKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5w
bmciPgorPGltZyBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13
ZWJraXQtZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsgZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4
KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1m
aWx0ZXI6IHVybCgjbW9ycGhvbG9neSk7IGZpbHRlcjogdXJsKCNtb3JwaG9sb2d5KTsiIHNyYz0i
cmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVy
bCgjY29tcG9uZW50dHJhbnNmZXIpOyBmaWx0ZXI6IHVybCgjY29tcG9uZW50dHJhbnNmZXIpOyIg
c3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRl
cjogdXJsKCNibHVyWSk7IGZpbHRlcjogdXJsKCNibHVyWSk7IiBzcmM9InJlc291cmNlcy9yZWZl
cmVuY2UucG5nIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDY0MzNkMGM5NjY2ZTVjY2YxY2JhYTM0NmYzY2RiYzBiNWYzNjRjNjIuLmRh
MWVmMDFjODYzMzI0MGIxMjI3ZWYyMDM5MzM3ZWFmYzgwZGM4MGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDEyMSw2ICs0MTIxLDEw
IEBAIHdlYmtpdC5vcmcvYi85OTc0OSBbIE1vdW50YWluTGlvbiBdIGNvbXBvc2l0aW5nL2RpcmVj
dC1pbWFnZS1jb21wb3NpdGluZy5odG1sIFsKIHdlYmtpdC5vcmcvYi85OTc0OSBbIE1vdW50YWlu
TGlvbiBdIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2NsaXBwaW5nLWZvcmVncm91bmQuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5NzQ5IFsgTW91bnRhaW5MaW9uIF0gZmFz
dC9jYW52YXMvZm9udC11cGRhdGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCit3ZWJraXQu
b3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwgWyBGYWls
dXJlIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMv
ZWZmZWN0LXJlZmVyZW5jZS1vcmRlcmluZy1ody5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWls
dXJlIE1pc3NpbmcgXQord2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJl
ZmVyZW5jZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KKwogIyBUaGlzIHRlc3Qg
aXMgcHJvYmFibHkgZWl0aGVyIEZhaWx1cmUgb3IgSW1hZ2VPbmx5RmFpbHVyZSBkZXBlbmRpbmcg
b24gd2hpY2ggZm9udHMgYXJlIGluc3RhbGxlZC4KIHdlYmtpdC5vcmcvYi85OTc0OSBbIE1vdW50
YWluTGlvbiBdIGZhc3QvdGV4dC9taWR3b3JkLWJyZWFrLWJlZm9yZS1zdXJyb2dhdGUtcGFpci5o
dG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyNzFjZjJmODU5MzdjODRmYTk3ZjNjYjAwNGEzNWU1
YTFjYzBiZWI4Li5iNjQ2NTY1ZTUwZTliZjQ4MmM4NzY5YmUwYjE2MmE5MWE5MWIyNjJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE2MSwzICsxMTYx
LDcgQEAgd2Via2l0Lm9yZy9iLzYxMTM4IGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lv
bi9JbnRlbC9yZXNvdXJjZS10aW1pbmcgWyBTa2kKIHBsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5n
LyBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1
Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KKword2Via2l0Lm9yZy9i
LzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sIFsgRmFpbCBdCit3
ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5n
LWh3Lmh0bWwgWyBGYWlsIF0KK3dlYmtpdC5vcmcvYi8xMDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVj
dC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172398</attachid>
            <date>2012-11-05 13:58:20 -0800</date>
            <delta_ts>2012-11-06 06:42:26 -0800</delta_ts>
            <desc>Fix refcounting issue</desc>
            <filename>bug-100142-20121105165633.patch</filename>
            <type>text/plain</type>
            <size>51350</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0NzcxZjEzOTU5Mjk4
NDY0OGZhMWE1Y2ZjMGNhNzA5ODRjNzRlMzUzLi40MzBjMjFhNDgwMDVjOWQzZmUxN2QwYmMyNTMy
YzAwZWIwYzE3ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIGNvbnN0IFNrQml0bWFw
JiBwYXJhbWV0ZXIgZm9yIFdlYkxheWVyVHJlZVZpZXc6OnNldEZvbnRBdGxhcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGVhOTkwNDE4MGI5OTVlOTFkODdlYjEyZTliMjAwOTRkNTYwYTEyMDYuLjAyMDY5MjBjMWZl
MDNkZmFhNDRhYjY3YTUzZGQxY2Q5MzI4MWMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxMi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNv
bXBvc2l0ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1s
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFzICJwcml2
YXRlIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRGaWx0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWlsZGVyIGFu
ZCBzZXRMYXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0aGVyZSdz
IGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VGaWx0ZXIp
OgorICAgICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBi
dWlsZGluZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
OjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVy
RWZmZWN0KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVu
dCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
b2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBjcmVhdGlv
biBvZiBTa0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisgICAgICAg
IChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIElt
cGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZpbHRlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZp
bHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUdh
dXNzaWFuQmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OmNy
ZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRp
bmcgZm9yIEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VG
aWx0ZXIgYnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6
YnVpbGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZv
ciBidWlsZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZm
ZWN0IERBRy4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAg
ICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5n
IEZpbHRlckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisg
ICAgICAgIGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNl
bGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2
ZW4gd2hlbiBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVy
IGluIHRoZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20g
aXQuCisKIDIwMTItMTEtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IGxheWVyIGJvcmRlcnMgdG8gY2xlYW5pbmcgYXBwZWFyIGFuZCBkaXNh
cHBlYXIgb24gc3dpdGNoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmgKaW5kZXggN2VjNTE2NTU1ZWQzOWQ4MWVkMDk4MjllM2JmMjE0MzA0ZDQ0ZjBmZi4uNmEz
N2QyNzhjMTIwNTUyNDdlMDUxNDFkODc2MmUyYzEzZmQ2MjE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IldlYlZlY3Rvci5oIgogCiBjbGFzcyBTa01hdHJpeDQ0OworY2xhc3MgU2tJbWFnZUZpbHRlcjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKQEAgLTEy
NSw2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMm
KSA9IDA7CiAKKyAgICAvLyBTZXQgdGhlIHJvb3Qgb2YgdGhlIGltYWdlIGZpbHRlciBncmFwaCBm
b3IgdGhpcyBsYXllci4gVGhlIAorICAgIC8vIGltcGxlbWVudGF0aW9uIHNob3VsZCBncmFiIGEg
cmVmIG9uIHRoZSBwYXNzZWQtaW4gZmlsdGVyIGluIG9yZGVyCisgICAgLy8gdG8gcmV0YWluIG93
bmVyc2hpcC4gVGhlIHBhc3NlZC1pbiBncmFwaCB3aWxsIGJlIHVucmVmJ2VkIGJ5IHRoZQorICAg
IC8vIGNhbGxlciBhZnRlciB0aGlzIGNhbGwuCisgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcihT
a0ltYWdlRmlsdGVyKikgPSAwOworCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhh
dCBzaG93IHRocm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3Rl
OiBUaGVzZSBmaWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3
biBkaXJlY3RseQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1
ZSBiYWNrZ3JvdW5kLiBUaGlzIG1lYW5zIGlmIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCmluZGV4IDU5ZjY0NzQxZDhlMjU5ZTVjMzA0NzU5NGU5MjhiZmE4ZmM5NWI5ZjEu
LjMyMzNjYWM3OWUzYTc1NTUzMWMzNWQ0MmI1OTdiNWUyYzk5ZGIxNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTMsNiArMTEzLDcgQEAKICAgICAgICcuLi9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYycsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycycsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0nLAor
ICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYScsCiAgICAgICAnLi4vcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1JywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZScsCiAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYScsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggY2FjNzI1MmEzM2E5OThhZjRiNTY4ZWExZTYyMjY2MGJkMGE4MGJlNi4uNjcwY2E1MDAyZDFm
MGFkMmExNTQ4MDhhNzMyODNlYWIwNmMyZDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTA1NSw2
ICs1MDU1LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVHYXVzc2lhbkJsdXJTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1NraWEuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVpbGRlci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmZTE4ZjI5ODFmMmJkMmM2MGRlYjU0Y2U1NTJjNjk2Yjk4ZjQ4NzU1Li45OGJhMTNiMDIzMWI2
MzE1MDFhZWYxYzYwOTZjOTc3MGJlMWE3NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDksNyArMjA5LDcgQEAKIAkJMDhD
N0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFOTA5RDE1MDhE
MDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDODU5QzAxMjc0NTc1NDAwQTU3MjhE
IC8qIFNWR0FuaW1hdGVkUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4Qzky
NTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTcwRkNDN0M0QTAwNDgwREVDIC8q
IEZpbHRlckVmZmVjdC5jcHAgKi87IH07Ci0JCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLzsgfTsKKwkJ
MDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVD
IC8qIEZpbHRlckVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA4Q0EzRDQ0MTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdTdGF0aWNQcm9wZXJ0
eVdpdGhQYXJlbnRUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHU3RhdGljUHJvcGVydHlX
aXRoUGFyZW50VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA4RDQ2Q0UzMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1l
cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RTRGRTQ2MEUy
QkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyog
SlNTVkdMZW5ndGhDdXN0b20uY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggNDhmYjY3MzlkMjFhMTYzMGQ2MzQ3NGIyMDJhMTRhYjZlYTlhNDNkYi4u
N2E2M2I2ODAxYjY5NmQ0ZjdhZWJkYWU2YTcwNmFkZmNmNmZkYTI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01NCw3ICs1NCw5IEBACiAjaW5jbHVkZSAiTmF0
aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1
ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2tJbWFnZUZpbHRlci5oIgogI2luY2x1
ZGUgIlNrTWF0cml4NDQuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiU3lzdGVtVGltZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb24uaD4KQEAgLTM4MSwxNSArMzgzLDI1IEBAIHN0YXRp
YyBib29sIGNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBGaWx0ZXJPcGVyYXRpCiAKIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgV2ViRmlsdGVyT3Bl
cmF0aW9ucyB3ZWJGaWx0ZXJzOwotICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25z
VG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7Ci0gICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXll
ciwgYXMgdGhleSBhcmUKLSAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUg
bW9kZS4KLSAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVy
YXRpb25zKCkpOwotICAgICAgICBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJh
dGlvbnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogRm9yIG5vdywg
d2Ugb25seSB1c2UgU2tJbWFnZUZpbHRlcnMgaWYgdGhlcmUgaXMgYSByZWZlcmVuY2UKKyAgICAv
LyBmaWx0ZXIgaW4gdGhlIGNoYWluLiBPbmNlIGFsbCBpc3N1ZXMgaGF2ZSBiZWVuIGlyb25lZCBv
dXQsIHdlIHNob3VsZAorICAgIC8vIHN3aXRjaCBhbGwgZmlsdGVyaW5nIG92ZXIgdG8gdGhpcyBw
YXRoLCBhbmQgcmVtb3ZlIHNldEZpbHRlcnMoKSBhbmQKKyAgICAvLyBXZWJGaWx0ZXJPcGVyYXRp
b25zIGFsdG9nZXRoZXIuCisgICAgaWYgKGZpbHRlcnMuaGFzUmVmZXJlbmNlRmlsdGVyKCkpIHsK
KyAgICAgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBTa0F1dG9U
VW5yZWY8U2tJbWFnZUZpbHRlcj4gaW1hZ2VGaWx0ZXIoYnVpbGRlci5idWlsZChmaWx0ZXJzKSk7
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcihpbWFnZUZpbHRlcik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyB3ZWJGaWx0ZXJzOworICAgICAg
ICBpZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhm
aWx0ZXJzLCB3ZWJGaWx0ZXJzKSkgeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0
ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQorICAg
ICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KKyAgICAgICAg
ICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsK
KyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoRmlsdGVyT3BlcmF0aW9ucygp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIH0KLSAgICBtX2xheWVyLT5s
YXllcigpLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVy
OjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4IGU1OGM4YTNkMDFlZGM0YTdkYzgz
ZjAwYmQ4MjAyZDIxYTllOTYwMjQuLjVjNzFjMmI3MjUwNjY0NzFiYzczODJhZGYyY2NkMTJjOTc1
ZTA4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpOwogI2lmIFVTRShTS0lBKQogICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZp
bHRlciogY3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5oCmluZGV4IDI3YTRhYzg0MzhmOWE5ZTI2ODQzOWJjMzJkMmRmZDg5MjFjZTQxYzMuLjk5YjY1
MGI5YzFkODQ1YzI0NDk3OTkyYmRkMWJiNDkxZmNjYmMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBA
IC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlT
a2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lh
SW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCmluZGV4IDE4MTgzZTZjYzU4YjBkM2ZiM2Y0YTAz
ZmIyOTQ0NDFlMmJkN2I3OTcuLjY4NDU0ZmQzNTdkYzVkYWQwNGViZGRkNTdkZDU2ZTUzZGMyN2U3
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb25lbnRUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCkBAIC04MSw2ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNL
SUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBT
a0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5k
ZXggN2IzYmRjZTI5MTczMzY3MTYwYjIxMGUzZjAzNTIyMDU3ZWE2OWVkNy4uZGFmM2VmMTdhMmMy
Zjc5Nzg5MTBlYjAxNDE5YmFhOWY4YWJhOWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNzUs
NiArNzUsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmlj
KFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1w
UGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJ
bnRTaXplJiBwYWludFNpemUpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgU2tJbWFnZUZpbHRlciogY3JlYXRlSW1hZ2VG
aWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciopOwogI2VuZGlmCiAKICAgICBmbG9hdCBtX3N0
ZFg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oCmluZGV4IDQ0ODc4MzVlOGMwZWYzMDI2ZThlOWZjYjY4YWY0ODM5MjJlN2Nh
YTUuLjI4ODk4NWQ0Mjg4ZTI5MzBkZDg2MmY3NDgyMTU4NmFlYWExOTEwNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5o
CkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEZFTGlnaHRpbmcgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAj
aWYgVVNFKFNLSUEpCisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRl
cihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBw
bHlTa2lhKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggMTlkYTYzNWEyZTAzYTYxYWYw
NDA4ZWNkNGY5MGZkZTRiMGUwNDczMS4uYjM4ZTY3M2MzODIyMmM2NGI3ZWRmODMzNjg5ZGVjNjMw
NzBjYWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CiAjaWYgVVNFKFNLSUEpCiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmls
dGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CisKICNlbmRp
ZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDE2MjBhYmYx
ZTNkNWU2NmQxN2Q0NTE2ZTQ0OGY3NTE5OWFiOGQwNGQuLjA2OWVkZTNlZWFkM2FmNzAyM2Q5ZTll
OWQxY2FiNzNlODllMDBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtMzUsNiArMzUsMTAgQEAKIAog
c3RhdGljIGNvbnN0IGZsb2F0IGtNYXhGaWx0ZXJTaXplID0gNTAwMC4wZjsKIAorI2lmIFVTRShT
S0lBKQorY2xhc3MgU2tJbWFnZUZpbHRlcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZpbHRlcjsKQEAgLTQyLDYgKzQ2LDEwIEBAIGNsYXNzIEZpbHRlckVmZmVjdDsK
IGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgVGV4dFN0cmVhbTsKIAorI2lmIFVTRShTS0lBKQor
Y2xhc3MgU2tpYUltYWdlRmlsdGVyQnVpbGRlcjsKKyNlbmRpZgorCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdFZlY3RvcjsKIAogZW51bSBGaWx0ZXJF
ZmZlY3RUeXBlIHsKQEAgLTk1LDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBT
a0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKikg
eyByZXR1cm4gMDsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCmluZGV4IDcxMGRiYzkxMzAzOWYzMmZhNzdiMDUzYTg4Yzk5NjRhMmMx
ZmM4YzQuLjkwNjcwNmJlYTc5NjhkZjE3ZWFlODhkNzM2MTJhODFmN2Y4ZGQ3OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
IAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CkBAIC0xNzUsNiArMTc2LDggQEAgcHVibGljOgogCiAgICAgRGF0YSogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogICAgIHZvaWQgc2V0RGF0YShQYXNzT3duUHRy
PERhdGE+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIEZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldEZpbHRlckVmZmVjdChQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KSB7
IG1fZmlsdGVyRWZmZWN0ID0gZmlsdGVyRWZmZWN0OyB9CiAKIHByaXZhdGU6CiAKQEAgLTE5Niw2
ICsxOTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFn
bWVudDsKICAgICBPd25QdHI8RGF0YT4gbV9kYXRhOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IG1fZmlsdGVyRWZmZWN0OwogfTsKIAogLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUgYW5k
IEhVRV9ST1RBVEUgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZmZWN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQmxlbmRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKaW5kZXggZmRjYTQzMmY0ZDM0OGExYjk3ZDQ4NzJm
NWFiNmMzMTViNTY0NzA0MS4uODA4OWYzYjUwZDYwNTk2ZmZiODQ2OWE1NGI1YjNlNGY4OGYxYjg2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFQmxlbmRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCiAjaW5jbHVkZSAiU2tCaXRtYXBTb3VyY2UuaCIKICNpbmNs
dWRlICJTa0JsZW5kSW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODQsNiArODUsMTQgQEAgYm9vbCBG
RUJsZW5kOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1h
Z2VGaWx0ZXIqIEZFQmxlbmQ6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCit7CisgICAgU2tJbWFnZUZpbHRlciogZm9yZWdyb3VuZCA9IGJ1aWxkZXIt
PmJ1aWxkKGlucHV0RWZmZWN0KDApKTsKKyAgICBTa0ltYWdlRmlsdGVyKiBiYWNrZ3JvdW5kID0g
YnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMSkpOworICAgIFNrQmxlbmRJbWFnZUZpbHRlcjo6
TW9kZSBtb2RlID0gdG9Ta2lhTW9kZShtX21vZGUpOworICAgIHJldHVybiBuZXcgU2tCbGVuZElt
YWdlRmlsdGVyKG1vZGUsIGJhY2tncm91bmQsIGZvcmVncm91bmQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVDb2xvck1hdHJpeFNraWEuY3BwCmluZGV4IDBmZDA3Nzc2ZTAzMDczMDhhMTE4YTYzMDk2MDQz
ZTBmOWE1MDUzZWIuLmFmZmJhZWFkMDQ4MDU5N2VmYTljMDNhYmZlN2NiZTIzNTZmMmMwMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RUNvbG9yTWF0cml4U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcApAQCAtMjgsNyArMjgsOSBAQAog
I2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5o
IgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlci5oIgogI2luY2x1ZGUgIlNrQ29s
b3JNYXRyaXhGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsMjQgKzgyLDE1IEBAIHN0YXRpYyB2b2lkIGx1
bWluYW5jZVRvQWxwaGFNYXRyaXgoU2tTY2FsYXIgbWF0cml4WzIwXSkKICAgICBtYXRyaXhbMTdd
ID0gMC4wNzIxZjsKIH0KIAotYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgp
CitzdGF0aWMgU2tDb2xvckZpbHRlciogY3JlYXRlQ29sb3JGaWx0ZXIoQ29sb3JNYXRyaXhUeXBl
IHR5cGUsIGNvbnN0IGZsb2F0KiB2YWx1ZXMpCiB7Ci0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZl
Y3QoMCk7Ci0KLSAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50
UmVjdCgpLnNpemUoKSk7Ci0KICAgICBTa1NjYWxhciBtYXRyaXhbMjBdOwotCi0gICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhf
VFlQRV9VTktOT1dOOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQ
RV9NQVRSSVg6CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjA7ICsraSkKLSAgICAgICAg
ICAgIG1hdHJpeFtpXSA9IG1fdmFsdWVzW2ldOworICAgICAgICAgICAgbWF0cml4W2ldID0gdmFs
dWVzW2ldOwogCiAgICAgICAgIG1hdHJpeFs0XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBt
YXRyaXhbOV0gKj0gU2tTY2FsYXIoMjU1KTsKQEAgLTEwNSwxNSArOTgsMjkgQEAgYm9vbCBGRUNv
bG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgICAgIG1hdHJpeFsxOV0gKj0gU2tT
Y2FsYXIoMjU1KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVf
U0FUVVJBVEU6IAotICAgICAgICBzYXR1cmF0ZU1hdHJpeChtX3ZhbHVlc1swXSwgbWF0cml4KTsK
KyAgICAgICAgc2F0dXJhdGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIGh1ZVJv
dGF0ZU1hdHJpeChtX3ZhbHVlc1swXSwgbWF0cml4KTsKKyAgICAgICAgaHVlUm90YXRlTWF0cml4
KHZhbHVlc1swXSwgbWF0cml4KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTE9STUFU
UklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQToKICAgICAgICAgbHVtaW5hbmNlVG9BbHBoYU1hdHJp
eChtYXRyaXgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgcmV0dXJuIG5ldyBTa0NvbG9y
TWF0cml4RmlsdGVyKG1hdHJpeCk7Cit9CisKK2Jvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1B
cHBseVNraWEoKQoreworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOworCisgICAgSW50
UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwor
CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVDb2xvckZpbHRl
cihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAg
ICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwpAQCAtMTIyLDEyICsxMjksMTkgQEAgYm9vbCBGRUNvbG9yTWF0cml4Ojpw
bGF0Zm9ybUFwcGx5U2tpYSgpCiAKICAgICBTa0NhbnZhcyogY2FudmFzID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIFNrUGFpbnQgcGFp
bnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3JGaWx0ZXIobmV3IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0
cml4KSktPnVucmVmKCk7CisgICAgcGFpbnQuc2V0Q29sb3JGaWx0ZXIoZmlsdGVyKTsKICAgICBw
YWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKICAgICBjYW52YXMt
PmRyYXdCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpLCAwLCAwLCAmcGFpbnQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFn
ZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RV
bnJlZjxTa0ltYWdlRmlsdGVyPiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkp
OworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmlsdGVyPiBmaWx0ZXIoY3JlYXRlQ29sb3JGaWx0
ZXIobV90eXBlLCBtX3ZhbHVlcy5kYXRhKCkpKTsKKyAgICByZXR1cm4gU2tDb2xvckZpbHRlcklt
YWdlRmlsdGVyOjpDcmVhdGUoZmlsdGVyLCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKSAmJiBVU0UoU0tJQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBv
bmVudFRyYW5zZmVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVDb21wb25lbnRUcmFuc2ZlclNraWEuY3BwCmluZGV4IDU3N2E1YjA2NTVi
ZjVlM2Y3ZjA4YTMyYzI2ODYzMjE1NzVjZmI2NzguLjg2ZDVkN2U2NjJhZjU4Mjc5MjFhODQzNDE1
MmExMGNiZTQ3MDgyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNm
ZXJTa2lhLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNm
ZXIuaCIKIAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUgIlNrQ29sb3JG
aWx0ZXJJbWFnZUZpbHRlci5oIgogI2luY2x1ZGUgIlNrVGFibGVDb2xvckZpbHRlci5oIgorI2lu
Y2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01NSw2ICs1NywxOCBAQCBib29sIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBw
bHlTa2lhKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU2tJbWFnZUZpbHRlciogRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciogYnVp
bGRlcikKK3sKKyAgICBTa0ltYWdlRmlsdGVyKiBpbnB1dCA9IGJ1aWxkZXItPmJ1aWxkKGlucHV0
RWZmZWN0KDApKTsKKworICAgIHVuc2lnbmVkIGNoYXIgclZhbHVlc1syNTZdLCBnVmFsdWVzWzI1
Nl0sIGJWYWx1ZXNbMjU2XSwgYVZhbHVlc1syNTZdOworICAgIGdldFZhbHVlcyhyVmFsdWVzLCBn
VmFsdWVzLCBiVmFsdWVzLCBhVmFsdWVzKTsKKworICAgIFNrQXV0b1RVbnJlZjxTa0NvbG9yRmls
dGVyPiBjb2xvckZpbHRlcihTa1RhYmxlQ29sb3JGaWx0ZXI6OkNyZWF0ZUFSR0IoYVZhbHVlcywg
clZhbHVlcywgZ1ZhbHVlcywgYlZhbHVlcykpOworCisgICAgcmV0dXJuIFNrQ29sb3JGaWx0ZXJJ
bWFnZUZpbHRlcjo6Q3JlYXRlKGNvbG9yRmlsdGVyLCBpbnB1dCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVy
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRleCBiNjk0YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVh
NGRkODkzNzkwNjU1Li5mNWY0NmRhZWRjYTNiNTNlZjEzNGY1N2Q2ZDY5MTgxNWFlM2Y5YjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCIKICNpbmNsdWRlICJT
a0JsdXJJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw1ICs2MiwxMSBAQCBib29sIEZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1h
Z2VGaWx0ZXIqIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0
ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBp
bnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkpOworICAgIHJldHVybiBuZXcgU2tC
bHVySW1hZ2VGaWx0ZXIoU2tGbG9hdFRvU2NhbGFyKG1fc3RkWCksIFNrRmxvYXRUb1NjYWxhciht
X3N0ZFkpLCBpbnB1dCk7Cit9CisKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVMaWdodGluZ1Nr
aWEuY3BwCmluZGV4IDFhNmEyZDcwZWU3MDYzODFlOGJkY2JjMGE5YTlhMzc0NWYzODY2ZTMuLjE2
NzIzNGQzYjM1OWEwZWE1MGM3MzIyMWIyMzNkYjYwOGU4YmFkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZF
TGlnaHRpbmdTa2lhLmNwcApAQCAtMzEsMzIgKzMxLDE0IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VTa2lhLmgiCiAjaW5jbHVkZSAiUG9pbnRMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNrTGln
aHRpbmdJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIK
ICNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1i
b29sIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK1NrSW1hZ2VGaWx0ZXIqIEZFTGln
aHRpbmc6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIp
CiB7Ci0gICAgLy8gRm9yIG5vdywgb25seSB1c2UgdGhlIHNraWEgaW1wbGVtZW50YXRpb24gZm9y
IGFjY2VsZXJhdGVkIHJlbmRlcmluZy4KLSAgICBpZiAoZmlsdGVyKCktPnJlbmRlcmluZ01vZGUo
KSAhPSBBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIXJl
c3VsdEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGaWx0ZXJFZmZlY3QqIGlu
ID0gaW5wdXRFZmZlY3QoMCk7Ci0KLSAgICBJbnRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLQotICAgIHNldElz
QWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0gICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotCi0gICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKLQotICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgU2tJbWFnZUZp
bHRlciogaW5wdXQgPSBidWlsZGVyID8gYnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpIDog
MDsKICAgICBzd2l0Y2ggKG1fbGlnaHRTb3VyY2UtPnR5cGUoKSkgewogICAgIGNhc2UgTFNfRElT
VEFOVDogewogICAgICAgICBEaXN0YW50TGlnaHRTb3VyY2UqIGRpc3RhbnRMaWdodFNvdXJjZSA9
IHN0YXRpY19jYXN0PERpc3RhbnRMaWdodFNvdXJjZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwpA
QCAtNjYsMjAgKzQ4LDE4IEBAIGJvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZihhemltdXRoUmFkKSAqIGNvc2YoZWxldmF0
aW9uUmFkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmYoZWxldmF0aW9uUmFkKSk7
CiAgICAgICAgIGlmIChtX3NwZWN1bGFyQ29uc3RhbnQgPiAwKQotICAgICAgICAgICAgcGFpbnQu
c2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50TGl0U3Bl
Y3VsYXIoZGlyZWN0aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBt
X3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCkpLT51bnJlZigpOworICAgICAg
ICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlRGlzdGFudExpdFNwZWN1
bGFyKGRpcmVjdGlvbiwgbV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9z
cGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQsIGlucHV0KTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVy
OjpDcmVhdGVEaXN0YW50TGl0RGlmZnVzZShkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2Io
KSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRl
RGlzdGFudExpdERpZmZ1c2UoZGlyZWN0aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3Vy
ZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwgaW5wdXQpOwogICAgIH0KICAgICBjYXNlIExT
X1BPSU5UOiB7CiAgICAgICAgIFBvaW50TGlnaHRTb3VyY2UqIHBvaW50TGlnaHRTb3VyY2UgPSBz
dGF0aWNfY2FzdDxQb2ludExpZ2h0U291cmNlKj4obV9saWdodFNvdXJjZS5nZXQoKSk7CiAgICAg
ICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbiA9IHBvaW50TGlnaHRTb3VyY2UtPnBvc2l0aW9uKCk7
CiAgICAgICAgIFNrUG9pbnQzIHNrUG9zaXRpb24ocG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCks
IHBvc2l0aW9uLnooKSk7CiAgICAgICAgIGlmIChtX3NwZWN1bGFyQ29uc3RhbnQgPiAwKQotICAg
ICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVh
dGVQb2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9z
dXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50KSktPnVu
cmVmKCk7CisgICAgICAgICAgICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQ
b2ludExpdFNwZWN1bGFyKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJm
YWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50LCBpbnB1dCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRp
bmdJbWFnZUZpbHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZmdXNlKHNrUG9zaXRpb24sIG1fbGlnaHRp
bmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50KSktPnVucmVm
KCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZp
bHRlcjo6Q3JlYXRlUG9pbnRMaXREaWZmdXNlKHNrUG9zaXRpb24sIG1fbGlnaHRpbmdDb2xvci5y
Z2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50LCBpbnB1dCk7CiAgICAgfQog
ICAgIGNhc2UgTFNfU1BPVDogewogICAgICAgICBTcG90TGlnaHRTb3VyY2UqIHNwb3RMaWdodFNv
dXJjZSA9IHN0YXRpY19jYXN0PFNwb3RMaWdodFNvdXJjZSo+KG1fbGlnaHRTb3VyY2UuZ2V0KCkp
OwpAQCAtOTAsMTUgKzcwLDM5IEBAIGJvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEo
KQogICAgICAgICBpZiAoIWxpbWl0aW5nQ29uZUFuZ2xlIHx8IGxpbWl0aW5nQ29uZUFuZ2xlID4g
OTAgfHwgbGltaXRpbmdDb25lQW5nbGUgPCAtOTApCiAgICAgICAgICAgICBsaW1pdGluZ0NvbmVB
bmdsZSA9IDkwOwogICAgICAgICBpZiAobV9zcGVjdWxhckNvbnN0YW50ID4gMCkKLSAgICAgICAg
ICAgIHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3Bv
dExpdFNwZWN1bGFyKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5n
Q29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1
bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCkpLT51bnJlZigpOworICAgICAgICAgICAg
cmV0dXJuIFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExpdFNwZWN1bGFyKGxvY2F0
aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0
aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3Bl
Y3VsYXJFeHBvbmVudCwgaW5wdXQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludC5z
ZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNl
KGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBt
X2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCkp
LT51bnJlZigpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5n
SW1hZ2VGaWx0ZXI6OkNyZWF0ZVNwb3RMaXREaWZmdXNlKGxvY2F0aW9uLCB0YXJnZXQsIHNwZWN1
bGFyRXhwb25lbnQsIGxpbWl0aW5nQ29uZUFuZ2xlLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1f
c3VyZmFjZVNjYWxlLCBtX2RpZmZ1c2VDb25zdGFudCwgaW5wdXQpOwogICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gMDsKICAgICB9Cit9CisKK2Jvb2wgRkVMaWdodGluZzo6cGxhdGZv
cm1BcHBseVNraWEoKQoreworICAgIC8vIEZvciBub3csIG9ubHkgdXNlIHRoZSBza2lhIGltcGxl
bWVudGF0aW9uIGZvciBhY2NlbGVyYXRlZCByZW5kZXJpbmcuCisgICAgaWYgKGZpbHRlcigpLT5y
ZW5kZXJpbmdNb2RlKCkgIT0gQWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7
CisgICAgaWYgKCFyZXN1bHRJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOworCisgICAgSW50UmVjdCBkcmF3aW5nUmVn
aW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7
CisKKyAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKKworICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOworICAgIE5hdGl2ZUltYWdlU2tpYSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCogZHN0
Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisKKyAgICBTa1BhaW50IHBhaW50Owor
ICAgIHBhaW50LnNldEltYWdlRmlsdGVyKGNyZWF0ZUltYWdlRmlsdGVyKDApKS0+dW5yZWYoKTsK
ICAgICBkc3RDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmRyYXdCaXRtYXAo
bmF0aXZlSW1hZ2UtPmJpdG1hcCgpLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCkueCgpLCBkcmF3
aW5nUmVnaW9uLmxvY2F0aW9uKCkueSgpLCAmcGFpbnQpOwogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFTW9ycGhvbG9neVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCmluZGV4IGU3MjkwYmVjN2UyZGU0YTgy
OTNjZmE1YWUxM2U5YjI4ZmYzMmRiMDUuLmIyZTlmNGZjZmI3ZTNlYWYyMjE5YWM0NTZjNTdmMjg1
ZTgzNzU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGRU1vcnBob2xvZ3kuaCIKIAogI2luY2x1ZGUgIlNrTW9ycGhv
bG9neUltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDUgKzYzLDE1IEBAIGJvb2wgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VG
aWx0ZXIqIEZFTW9ycGhvbG9neTo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVp
bGRlciogYnVpbGRlcikKK3sKKyAgICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4gaW5wdXQo
YnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpKTsKKyAgICBTa1NjYWxhciByYWRpdXNYID0g
U2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWCk7CisgICAgU2tTY2FsYXIgcmFkaXVzWSA9IFNrRmxv
YXRUb1NjYWxhcihtX3JhZGl1c1kpOworICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09Q
RVJBVE9SX0RJTEFURSkKKyAgICAgICAgcmV0dXJuIG5ldyBTa0RpbGF0ZUltYWdlRmlsdGVyKHJh
ZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsKKyAgICByZXR1cm4gbmV3IFNrRXJvZGVJbWFnZUZpbHRl
cihyYWRpdXNYLCByYWRpdXNZLCBpbnB1dCk7Cit9CisKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjVkNTExYTFi
ZjBmNmMyZTAzNDZkODBkYzE0N2M0YmVjZTg1OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1
aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTa0JsdXJJ
bWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRlci5oIgorI2lu
Y2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa01hdHJpeC5oIgorCitu
YW1lc3BhY2UgeworCit2b2lkIGdldEJyaWdodG5lc3NNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1Nj
YWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNr
U2NhbGFyKSk7CisgICAgLy8gICAgT2xkIGltcGxlbWVudGF0aW9uLCBhIGxhIHRoZSBkcmFmdCBz
cGVjLCBhIHN0cmFpZ2h0LXVwIHNjYWxlLAorICAgIC8vICAgIHJlcHJlc2VudGluZyA8ZmVGdW5j
W1J8R3xCXSB0eXBlPSJsaW5lYXIiIHNsb3BlPSJbYW1vdW50XSI+CisgICAgLy8gICAgKFNlZSBo
dHRwOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1s
I2JyaWdodG5lc3NFcXVpdmFsZW50KQorICAgIC8vIG1hdHJpeFswXSA9IG1hdHJpeFs2XSA9IG1h
dHJpeFsxMl0gPSBhbW91bnQ7CisgICAgLy8gbWF0cml4WzE4XSA9IDE7CisgICAgLy8gICAgTmV3
IGltcGxlbWVudGF0aW9uLCBhIHRyYW5zbGF0aW9uIGluIGNvbG9yIHNwYWNlLCByZXByZXNlbnRp
bmcKKyAgICAvLyAgICA8ZmVGdW5jW1J8R3xCXSB0eXBlPSJsaW5lYXIiIGludGVyY2VwdD0iW2Ft
b3VudF0iLz4KKyAgICAvLyAgICAoU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2NDcpCisgICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4
WzEyXSA9IG1hdHJpeFsxOF0gPSAxOworICAgIG1hdHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJp
eFsxNF0gPSBhbW91bnQgKiAyNTU7Cit9CisKK3ZvaWQgZ2V0Q29udHJhc3RNYXRyaXgoZmxvYXQg
YW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIw
ICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4
WzEyXSA9IGFtb3VudDsKKyAgICBtYXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0g
KC0wLjVmICogYW1vdW50ICsgMC41ZikgKiAyNTU7CisgICAgbWF0cml4WzE4XSA9IDE7Cit9CisK
K3ZvaWQgZ2V0U2F0dXJhdGVNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBd
KQoreworICAgIC8vIE5vdGUsIHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8gZW5zdXJlIG1h
dHJpeE5lZWRzQ2xhbXBpbmcgaXMgZmFsc2UKKyAgICAvLyBmb3IgYW1vdW50IGluIFswLi4xXQor
ICAgIG1hdHJpeFswXSA9IDAuMjEzZiArIDAuNzg3ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMV0g
PSAwLjcxNWYgLSAwLjcxNWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMS5mIC0gKG1hdHJp
eFswXSArIG1hdHJpeFsxXSk7CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRdID0gMDsKKyAgICBt
YXRyaXhbNV0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7CisgICAgbWF0cml4WzZdID0gMC43
MTVmICsgMC4yODVmICogYW1vdW50OworICAgIG1hdHJpeFs3XSA9IDEuZiAtIChtYXRyaXhbNV0g
KyBtYXRyaXhbNl0pOworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisgICAgbWF0cml4
WzEwXSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTFdID0gMC43MTVm
IC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0cml4WzEwXSAr
IG1hdHJpeFsxMV0pOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKyAgICBtYXRy
aXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBt
YXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRIdWVSb3RhdGVNYXRyaXgoZmxvYXQgaHVlLCBT
a1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIGZsb2F0IGNvc0h1ZSA9IGNvc2YoaHVlICogcGlG
bG9hdCAvIDE4MCk7CisgICAgZmxvYXQgc2luSHVlID0gc2luZihodWUgKiBwaUZsb2F0IC8gMTgw
KTsKKyAgICBtYXRyaXhbMF0gPSAwLjIxM2YgKyBjb3NIdWUgKiAwLjc4N2YgLSBzaW5IdWUgKiAw
LjIxM2Y7CisgICAgbWF0cml4WzFdID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmIC0gc2luSHVl
ICogMC43MTVmOworICAgIG1hdHJpeFsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiArIHNp
bkh1ZSAqIDAuOTI4ZjsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJp
eFs1XSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiArIHNpbkh1ZSAqIDAuMTQzZjsKKyAgICBt
YXRyaXhbNl0gPSAwLjcxNWYgKyBjb3NIdWUgKiAwLjI4NWYgKyBzaW5IdWUgKiAwLjE0MGY7Cisg
ICAgbWF0cml4WzddID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmIC0gc2luSHVlICogMC4yODNm
OworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisgICAgbWF0cml4WzEwXSA9IDAuMjEz
ZiAtIGNvc0h1ZSAqIDAuMjEzZiAtIHNpbkh1ZSAqIDAuNzg3ZjsKKyAgICBtYXRyaXhbMTFdID0g
MC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVmOworICAgIG1hdHJpeFsx
Ml0gPSAwLjA3MmYgKyBjb3NIdWUgKiAwLjkyOGYgKyBzaW5IdWUgKiAwLjA3MmY7CisgICAgbWF0
cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0g
bWF0cml4WzE3XSA9IDA7CisgICAgbWF0cml4WzE4XSA9IDE7CisgICAgbWF0cml4WzE5XSA9IDA7
Cit9CisKK3ZvaWQgZ2V0SW52ZXJ0TWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2FsYXIgbWF0cml4
WzIwXSkKK3sKKyAgICBtZW1zZXQobWF0cml4LCAwLCAyMCAqIHNpemVvZihTa1NjYWxhcikpOwor
ICAgIG1hdHJpeFswXSA9IG1hdHJpeFs2XSA9IG1hdHJpeFsxMl0gPSAxIC0gMiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbNF0gPSBtYXRyaXhbOV0gPSBtYXRyaXhbMTRdID0gYW1vdW50ICogMjU1Owor
ICAgIG1hdHJpeFsxOF0gPSAxOworfQorCit2b2lkIGdldE9wYWNpdHlNYXRyaXgoZmxvYXQgYW1v
dW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICog
c2l6ZW9mKFNrU2NhbGFyKSk7CisgICAgbWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEy
XSA9IDE7CisgICAgbWF0cml4WzE4XSA9IGFtb3VudDsKK30KKwordm9pZCBnZXRHcmF5c2NhbGVN
YXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBdKQoreworICAgIC8vIE5vdGUs
IHRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgdG8gZW5zdXJlIG1hdHJpeE5lZWRzQ2xhbXBpbmcg
aXMgZmFsc2UKKyAgICAvLyBmb3IgYW1vdW50IGluIFswLi4xXQorICAgIG1hdHJpeFswXSA9IDAu
MjEyNmYgKyAwLjc4NzRmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzE1MmYgLSAwLjcx
NTJmICogYW1vdW50OworICAgIG1hdHJpeFsyXSA9IDEuZiAtIChtYXRyaXhbMF0gKyBtYXRyaXhb
MV0pOworICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisKKyAgICBtYXRyaXhbNV0gPSAw
LjIxMjZmIC0gMC4yMTI2ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNTJmICsgMC4y
ODQ4ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAxLmYgLSAobWF0cml4WzVdICsgbWF0cml4
WzZdKTsKKyAgICBtYXRyaXhbOF0gPSBtYXRyaXhbOV0gPSAwOworCisgICAgbWF0cml4WzEwXSA9
IDAuMjEyNmYgLSAwLjIxMjZmICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNTJmIC0g
MC43MTUyZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMS5mIC0gKG1hdHJpeFsxMF0gKyBt
YXRyaXhbMTFdKTsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9IDA7CisKKyAgICBtYXRy
aXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTldID0gMDsKKyAgICBt
YXRyaXhbMThdID0gMTsKK30KKwordm9pZCBnZXRTZXBpYU1hdHJpeChmbG9hdCBhbW91bnQsIFNr
U2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWF0cml4WzBdID0gMC4zOTNmICsgMC42MDdmICog
YW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAuNzY5ZiAtIDAuNzY5ZiAqIGFtb3VudDsKKyAgICBt
YXRyaXhbMl0gPSAwLjE4OWYgLSAwLjE4OWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzNdID0gbWF0
cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMzQ5ZiAtIDAuMzQ5ZiAqIGFtb3VudDsK
KyAgICBtYXRyaXhbNl0gPSAwLjY4NmYgKyAwLjMxNGYgKiBhbW91bnQ7CisgICAgbWF0cml4Wzdd
ID0gMC4xNjhmIC0gMC4xNjhmICogYW1vdW50OworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9
IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4yNzJmIC0gMC4yNzJmICogYW1vdW50OworICAgIG1h
dHJpeFsxMV0gPSAwLjUzNGYgLSAwLjUzNGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEyXSA9IDAu
MTMxZiArIDAuODY5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTNdID0gbWF0cml4WzE0XSA9IDA7
CisKKyAgICBtYXRyaXhbMTVdID0gbWF0cml4WzE2XSA9IG1hdHJpeFsxN10gPSBtYXRyaXhbMTld
ID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKworU2tJbWFnZUZpbHRlciogY3JlYXRlTWF0
cml4SW1hZ2VGaWx0ZXIoU2tTY2FsYXIgbWF0cml4WzIwXSwgU2tJbWFnZUZpbHRlciogaW5wdXQp
Cit7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGNvbG9yRmlsdGVyKG5ldyBTa0Nv
bG9yTWF0cml4RmlsdGVyKG1hdHJpeCkpOworICAgIHJldHVybiBTa0NvbG9yRmlsdGVySW1hZ2VG
aWx0ZXI6OkNyZWF0ZShjb2xvckZpbHRlciwgaW5wdXQpOworfQorCit9OworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1NraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIoKQoreworfQorCitTa0ltYWdlRmlsdGVyKiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpidWls
ZChGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKK3sKKyAgICBpZiAoIWVmZmVjdCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBGaWx0ZXJCdWlsZGVySGFzaE1hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5m
aW5kKGVmZmVjdCk7CisgICAgaWYgKGl0ICE9IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4g
aXQtPnZhbHVlOworCisgICAgU2tJbWFnZUZpbHRlciogZmlsdGVyID0gZWZmZWN0LT5jcmVhdGVJ
bWFnZUZpbHRlcih0aGlzKTsKKyAgICBtX21hcC5zZXQoZWZmZWN0LCBmaWx0ZXIpOworICAgIHJl
dHVybiBmaWx0ZXI7Cit9CisKK1NrSW1hZ2VGaWx0ZXIqIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6
OmJ1aWxkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMpCit7CisgICAgU2tJbWFn
ZUZpbHRlciogZmlsdGVyID0gMDsKKyAgICBTa1NjYWxhciBtYXRyaXhbMjBdOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb24mIG9wID0gKm9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIHN3aXRj
aCAob3AuZ2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpSRUZFUkVOQ0U6IHsKKyAgICAgICAgICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+ZmlsdGVy
RWZmZWN0KCk7CisgICAgICAgICAgICAvLyBGSVhNRTogaG9vayB1cCBwYXJlbnQgZmlsdGVyIHRv
IGltYWdlIHNvdXJjZQorICAgICAgICAgICAgZmlsdGVyID0gU2tpYUltYWdlRmlsdGVyQnVpbGRl
cjo6YnVpbGQoZmlsdGVyRWZmZWN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6IHsKKyAgICAgICAgICAgIGZs
b2F0IGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24qPigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEdyYXlzY2FsZU1hdHJpeChh
bW91bnQsIG1hdHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZp
bHRlcihtYXRyaXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKKyAgICAgICAgICAgIGZsb2F0IGFt
b3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24q
Pigmb3ApLT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldFNlcGlhTWF0cml4KGFtb3VudCwgbWF0
cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJp
eCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvcCkt
PmFtb3VudCgpOworICAgICAgICAgICAgZ2V0U2F0dXJhdGVNYXRyaXgoYW1vdW50LCBtYXRyaXgp
OworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBm
aWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0
YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5h
bW91bnQoKTsKKyAgICAgICAgICAgIGdldEh1ZVJvdGF0ZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7
CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZp
bHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6SU5WRVJUOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+
YW1vdW50KCk7CisgICAgICAgICAgICBnZXRJbnZlcnRNYXRyaXgoYW1vdW50LCBtYXRyaXgpOwor
ICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0
ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19j
YXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5h
bW91bnQoKTsKKyAgICAgICAgICAgIGdldE9wYWNpdHlNYXRyaXgoYW1vdW50LCBtYXRyaXgpOwor
ICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBmaWx0
ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJSSUdIVE5FU1M6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3Ap
LT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldEJyaWdodG5lc3NNYXRyaXgoYW1vdW50LCBtYXRy
aXgpOworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4
LCBmaWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBz
dGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4o
Jm9wKS0+YW1vdW50KCk7CisgICAgICAgICAgICBnZXRDb250cmFzdE1hdHJpeChhbW91bnQsIG1h
dHJpeCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRy
aXgsIGZpbHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICAgICAgZmxvYXQgcGl4ZWxSYWRpdXMg
PSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+c3RkRGV2aWF0
aW9uKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICAgICAgZmlsdGVyID0gbmV3IFNrQmx1cklt
YWdlRmlsdGVyKHBpeGVsUmFkaXVzLCBwaXhlbFJhZGl1cywgZmlsdGVyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NI
QURPVzogeworLy8gICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uJiBk
cm9wU2hhZG93T3AgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
bio+KCZvcCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gb2Zmc2V0IGFuZCBibHVyCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpDVVNUT006CisgICAgICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkLgor
I2VuZGlmCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gZmlsdGVyOworfQorCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRl
ckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiZDY4MzIwYjZhOTI5YzYx
MDA5ODY4YjU3MTQ2ZDFkZjYyNTk0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJCdWlsZGVyLmgK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9o
CisjZGVmaW5lIFNraWFJbWFnZUZpbHRlckJ1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKworY2xhc3MgU2tJbWFnZUZpbHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRmlsdGVyRWZmZWN0OworY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKKworY2xhc3MgU2tpYUlt
YWdlRmlsdGVyQnVpbGRlciB7CitwdWJsaWM6CisgICAgU2tpYUltYWdlRmlsdGVyQnVpbGRlcigp
OworCisgICAgU2tJbWFnZUZpbHRlciogYnVpbGQoRmlsdGVyRWZmZWN0Kik7CisgICAgU2tJbWFn
ZUZpbHRlciogYnVpbGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworcHJpdmF0ZToKKyAgICB0
eXBlZGVmIEhhc2hNYXA8RmlsdGVyRWZmZWN0KiwgU2tJbWFnZUZpbHRlcio+IEZpbHRlckJ1aWxk
ZXJIYXNoTWFwOworICAgIEZpbHRlckJ1aWxkZXJIYXNoTWFwIG1fbWFwOworfTsKKworfTsKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAppbmRleCAyMWFlMTZmYjBmZDUzMTI4YmJiZGVmMzQ3YjljZmM0ZDIzOWIyYWUxLi4z
YmZlNTJiZjgwMmIyMzZhOGEwNjU0YzQ0YWY2NDhjZDMyZjU1NjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTIwNCw3ICsy
MDQsOSBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZQogICAgICAgICBGaWx0ZXJPcGVyYXRpb24q
IGZpbHRlck9wZXJhdGlvbiA9IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwog
ICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIGVm
ZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKGRvY3VtZW50LCBwcmV2aW91c0VmZmVjdCwgc3Rh
dGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKSk7Cisg
ICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7
CisgICAgICAgICAgICBlZmZlY3QgPSBidWlsZFJlZmVyZW5jZUZpbHRlcihkb2N1bWVudCwgcHJl
dmlvdXNFZmZlY3QsIHJlZmVyZW5jZU9wZXJhdGlvbik7CisgICAgICAgICAgICByZWZlcmVuY2VP
cGVyYXRpb24tPnNldEZpbHRlckVmZmVjdChlZmZlY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzk5N2JkZTNhNTJjMzFk
NzhkYTczM2YzMTliN2JjY2YxY2RiNWVmOS4uM2E4YzAyOGE0ZTIzYTRjNTZlZDY3NjI3ODg4ZGZj
YTg0ZWNiMzQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC01MTcwLDcgKzUxNzAsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3JSZW1vdmVGaWx0
ZXJFZmZlY3RSZW5kZXJlcigpCiAgICAgICAgIC8vIGZvciBsb2FkaW5nIENTUyBzaGFkZXIgZmls
ZXMuCiAgICAgICAgIGlmIChSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSB0aGlz
LT5maWx0ZXJJbmZvKCkpCiAgICAgICAgICAgICBmaWx0ZXJJbmZvLT5zZXRSZW5kZXJlcigwKTsK
LSAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEVhcmx5LXJldHVybiBvbmx5IGlmIHdlICpk
b24ndCogaGF2ZSByZWZlcmVuY2UgZmlsdGVycy4KKyAgICAgICAgLy8gRm9yIHJlZmVyZW5jZSBm
aWx0ZXJzLCB3ZSBzdGlsbCB3YW50IHRoZSBGaWx0ZXJFZmZlY3QgZ3JhcGggYnVpbHQKKyAgICAg
ICAgLy8gZm9yIHVzLCBldmVuIGlmIHdlJ3JlIGNvbXBvc2l0ZWQuCisgICAgICAgIGlmICghcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkuaGFzUmVmZXJlbmNlRmlsdGVyKCkpCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmls
dGVySW5mbyA9IGVuc3VyZUZpbHRlckluZm8oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sCmluZGV4IDI3OTk0ZDdlZjU2ODQ1OTViMTU4
OTc2ZGE1Yjg5ZDBjNjU5Y2Q2NjYuLjAxNDAyYWFmNjEyOTE4NTEzZjhiMjdhMzI1MDAwODI1NmYx
YmRjZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJl
bmNlLWh3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVu
Y2UtaHcuaHRtbApAQCAtMSw4ICsxLDIyIEBACiA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgdmVyc2lvbj0iMS4xIj4KICAgPGRlZnM+
Ci0gICAgPGZpbHRlciBpZD0iTXlGaWx0ZXIiPgorICAgIDxmaWx0ZXIgaWQ9ImNvbG9ybWF0cml4
Ij4KICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9Imh1ZVJvdGF0ZSIgdmFsdWVzPSIxODAiLz4K
ICAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVyIGlkPSJtb3JwaG9sb2d5Ij4KKyAgICAgIDxmZU1v
cnBob2xvZ3kgcmFkaXVzPSIxMCIgb3BlcmF0b3I9ImRpbGF0ZSIvPgorICAgIDwvZmlsdGVyPgor
ICAgIDxmaWx0ZXIgaWQ9ImNvbXBvbmVudHRyYW5zZmVyIj4KKyAgICAgIDxmZUNvbXBvbmVudFRy
YW5zZmVyPgorICAgICAgICA8ZmVGdW5jUiB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAg
ICAgICA8ZmVGdW5jRyB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAgICAgICA8ZmVGdW5j
QiB0eXBlPSJsaW5lYXIiIHNsb3BlPSIwLjUiPgorICAgICAgICA8ZmVGdW5jQSB0eXBlPSJpZGVu
dGl0eSI+CisgICAgICA8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisgICAgPC9maWx0ZXI+CisgICAg
PGZpbHRlciBpZD0iYmx1clkiPgorICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0i
MCA1Ii8+CisgICAgPC9maWx0ZXI+CiAgIDwvZGVmcz4KIDwvc3ZnPgogPHN0eWxlPgpAQCAtMTEs
NCArMjUsOCBAQCBpbWcgewogICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwog
fQogPC9zdHlsZT4KLTxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI015RmlsdGVyKTsg
ZmlsdGVyOiB1cmwoI015RmlsdGVyKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgor
PGltZyBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQt
ZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsgZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsiIHNy
Yz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6
IHVybCgjbW9ycGhvbG9neSk7IGZpbHRlcjogdXJsKCNtb3JwaG9sb2d5KTsiIHNyYz0icmVzb3Vy
Y2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjY29t
cG9uZW50dHJhbnNmZXIpOyBmaWx0ZXI6IHVybCgjY29tcG9uZW50dHJhbnNmZXIpOyIgc3JjPSJy
ZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJs
KCNibHVyWSk7IGZpbHRlcjogdXJsKCNibHVyWSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2Uu
cG5nIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJl
bmNlLW9yZGVyaW5nLWh3Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJl
ZmVyZW5jZS1vcmRlcmluZy1ody5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYTFkODkwMWIyNzAyN2M5MTQ2
ZjJlNzAzMDI3N2NkNzAzYTIzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vcmRlcmluZy1ody5odG1sCkBAIC0wLDAgKzEsMjAg
QEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMCIgaGVp
Z2h0PSIwIiB2ZXJzaW9uPSIxLjEiPgorICA8ZGVmcz4KKyAgICA8ZmlsdGVyIGlkPSJibHVyWCI+
CisgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI1IDAiLz4KKyAgICA8L2ZpbHRl
cj4KKyAgICA8ZmlsdGVyIGlkPSJibHVyWSI+CisgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2
aWF0aW9uPSIwIDUiLz4KKyAgICA8L2ZpbHRlcj4KKyAgPC9kZWZzPgorPC9zdmc+Cis8c3R5bGU+
CitpbWcgeworICAgIG1hcmdpbjogMTBweDsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogIHRyYW5z
bGF0ZVooMCk7Cit9Cis8L3N0eWxlPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgj
Ymx1clkpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Vi
a2l0LWZpbHRlcjogY29udHJhc3QoNTAwJSkgdXJsKCNibHVyWSk7IiBzcmM9InJlc291cmNlcy9y
ZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2JsdXJZKSBj
b250cmFzdCg1MDAlKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHls
ZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjYmx1clgpIGNvbnRyYXN0KDUwMCUpOyB1cmwoI2JsdXJZ
KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwKaW5kZXggNDBkMzUzZDc1Yzk5YmUwNzQ5MzE0
MjIwMTRiNjdiZGU5NWU4YmZmNy4uNGQ5M2M3YmU3Y2Y2ODhlOGI1MzJmMDNlOGNiNDU5Mjg1Yzk5
MWNiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVu
Y2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5o
dG1sCkBAIC0xLDggKzEsMjIgQEAKIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiB2ZXJzaW9uPSIxLjEiPgogICA8ZGVmcz4KLSAgICA8
ZmlsdGVyIGlkPSJNeUZpbHRlciI+CisgICAgPGZpbHRlciBpZD0iY29sb3JtYXRyaXgiPgogICAg
ICAgPGZlQ29sb3JNYXRyaXggdHlwZT0iaHVlUm90YXRlIiB2YWx1ZXM9IjE4MCIvPgogICAgIDwv
ZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9Im1vcnBob2xvZ3kiPgorICAgICAgPGZlTW9ycGhvbG9n
eSByYWRpdXM9IjEwIiBvcGVyYXRvcj0iZGlsYXRlIi8+CisgICAgPC9maWx0ZXI+CisgICAgPGZp
bHRlciBpZD0iY29tcG9uZW50dHJhbnNmZXIiPgorICAgICAgPGZlQ29tcG9uZW50VHJhbnNmZXI+
CisgICAgICAgIDxmZUZ1bmNSIHR5cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxm
ZUZ1bmNHIHR5cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNCIHR5cGU9
ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNBIHR5cGU9ImlkZW50aXR5Ij4K
KyAgICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVy
IGlkPSJibHVyWSI+CisgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIwIDUiLz4K
KyAgICA8L2ZpbHRlcj4KICAgPC9kZWZzPgogPC9zdmc+CiA8c3R5bGU+CkBAIC0xMCw0ICsyNCw4
IEBAIGltZyB7CiAgICAgbWFyZ2luOiAxMHB4OwogfQogPC9zdHlsZT4KLTxpbWcgc3R5bGU9Ii13
ZWJraXQtZmlsdGVyOiB1cmwoI015RmlsdGVyKTsgZmlsdGVyOiB1cmwoI015RmlsdGVyKTsiIHNy
Yz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzcmM9InJlc291cmNlcy9yZWZlcmVu
Y2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsg
ZmlsdGVyOiB1cmwoI2NvbG9ybWF0cml4KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmci
PgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjbW9ycGhvbG9neSk7IGZpbHRlcjog
dXJsKCNtb3JwaG9sb2d5KTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBz
dHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjY29tcG9uZW50dHJhbnNmZXIpOyBmaWx0ZXI6IHVy
bCgjY29tcG9uZW50dHJhbnNmZXIpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8
aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNibHVyWSk7IGZpbHRlcjogdXJsKCNibHVy
WSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg1YjdkYmMyNGQzY2NkYzc3ZTcy
MjRhMmY1ZWNmZmQxZjE0OWIyZTQuLjZkN2M4ZGVkYTZlMDZmYmRlZjM5OGY1N2MxYTY3YTMyZDdm
N2M4NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNDE0MCw2ICs0MTQwLDEwIEBAIHdlYmtpdC5vcmcvYi85OTc0OSBbIE1vdW50YWlu
TGlvbiBdIGNvbXBvc2l0aW5nL2RpcmVjdC1pbWFnZS1jb21wb3NpdGluZy5odG1sIFsKIHdlYmtp
dC5vcmcvYi85OTc0OSBbIE1vdW50YWluTGlvbiBdIGNvbXBvc2l0aW5nL2dlb21ldHJ5L2NsaXBw
aW5nLWZvcmVncm91bmQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5
NzQ5IFsgTW91bnRhaW5MaW9uIF0gZmFzdC9jYW52YXMvZm9udC11cGRhdGUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCit3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3Qt
cmVmZXJlbmNlLWh3Lmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vcmRlcmluZy1ody5odG1s
IFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIE1pc3NpbmcgXQord2Via2l0Lm9yZy9iLzEwMDE0
MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlG
YWlsdXJlIF0KKwogIyBUaGlzIHRlc3QgaXMgcHJvYmFibHkgZWl0aGVyIEZhaWx1cmUgb3IgSW1h
Z2VPbmx5RmFpbHVyZSBkZXBlbmRpbmcgb24gd2hpY2ggZm9udHMgYXJlIGluc3RhbGxlZC4KIHdl
YmtpdC5vcmcvYi85OTc0OSBbIE1vdW50YWluTGlvbiBdIGZhc3QvdGV4dC9taWR3b3JkLWJyZWFr
LWJlZm9yZS1zdXJyb2dhdGUtcGFpci5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyNzFjZjJm
ODU5MzdjODRmYTk3ZjNjYjAwNGEzNWU1YTFjYzBiZWI4Li5iNjQ2NTY1ZTUwZTliZjQ4MmM4NzY5
YmUwYjE2MmE5MWE5MWIyNjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTE2MSwzICsxMTYxLDcgQEAgd2Via2l0Lm9yZy9iLzYxMTM4IGh0dHAvdGVz
dHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcgWyBTa2kKIHBs
YXRmb3JtL21hYy90aWxlZC1kcmF3aW5nLyBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTAwODQ2
IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwg
WyBTa2lwIF0KKword2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVy
ZW5jZS1ody5odG1sIFsgRmFpbCBdCit3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9l
ZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgWyBGYWlsIF0KK3dlYmtpdC5vcmcvYi8x
MDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172573</attachid>
            <date>2012-11-06 06:42:34 -0800</date>
            <delta_ts>2012-11-06 07:31:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100142-20121106093950.patch</filename>
            <type>text/plain</type>
            <size>50854</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0NzcxZjEzOTU5Mjk4
NDY0OGZhMWE1Y2ZjMGNhNzA5ODRjNzRlMzUzLi4wMzNkZjFkMDg3Y2U5YjhhZWU1OWI0YWRmYWE4
OTc1OWJhMjE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yMyAg
U3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbc2tp
YV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgRXhwb3NlIExheWVyOjpzZXRGaWx0ZXIo
KSB0byB0aGUgV2ViS2l0IEFQSS4KKwogMjAxMi0xMS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIGNvbnN0IFNrQml0bWFw
JiBwYXJhbWV0ZXIgZm9yIFdlYkxheWVyVHJlZVZpZXc6OnNldEZvbnRBdGxhcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDYyMDcwMDA5OTA1ZDQ5MzZjNTViY2E4NzczNjBhYTZiNzFhNWQ2MDIuLjc0ZTQ3YTA2ZTVl
Y2RiZWZlMGYxMjI0NTUzYTY3ZjRhN2IxNWQ0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxMi0xMC0yMyAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbc2tpYV0gSW1wbGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNv
bXBvc2l0ZWQgbGF5ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisK
KyAgICAgICAgQ292ZXJlZCBieSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1s
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYXJrIEZpbHRlckVmZmVjdC5oIGFzICJwcml2
YXRlIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRGaWx0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgU2tJbWFnZUZpbHRlciBidWlsZGVyIGFu
ZCBzZXRMYXllcigpIGluZnJhc3RydWN0dXJlLCBidXQKKyAgICAgICAgb25seSBpZiB0aGVyZSdz
IGEgcmVmZXJlbmNlIGZpbHRlciBpbiB0aGUgY2hhaW4uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VGaWx0ZXIp
OgorICAgICAgICBBZGQgY3JlYXRlSW1hZ2VGaWx0ZXIoKSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBi
dWlsZGluZyBTa0ltYWdlRmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
OjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6c2V0RmlsdGVy
RWZmZWN0KToKKyAgICAgICAgQWRkIGEgRmlsdGVyRWZmZWN0IG1lbWJlciB0byBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24sIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAgZm9yIGl0LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIEltcGxlbWVu
dCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUJsZW5kIGZpbHRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29sb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
b2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICBSZWZhY3RvciBjcmVhdGlv
biBvZiBTa0NvbG9yRmlsdGVyIGZyb20gYW4gRkVDb2xvck1hdHJpeCBmaWx0ZXIuCisgICAgICAg
IChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVJbWFnZUZpbHRlcik6CisgICAgICAgIElt
cGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUNvbG9yTWF0cml4IGZpbHRlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjcmVhdGVJbWFnZUZp
bHRlcik6CisgICAgICAgIEltcGxlbWVudCBTa0ltYWdlRmlsdGVyIGJ1aWxkaW5nIGZvciBGRUdh
dXNzaWFuQmx1ciBmaWx0ZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTGlnaHRpbmdTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OmNy
ZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VGaWx0ZXIgYnVpbGRp
bmcgZm9yIEZFTGlnaHRpbmcgZmlsdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3k6OmNyZWF0ZUltYWdlRmlsdGVyKToKKyAgICAgICAgSW1wbGVtZW50IFNrSW1hZ2VG
aWx0ZXIgYnVpbGRpbmcgZm9yIEZFTW9ycGhvbG9neSBmaWx0ZXIuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6
YnVpbGQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1h
Z2VGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIEltcGxlbWVudCBuZXcgaGVscGVyIGNsYXNzIGZv
ciBidWlsZGluZyBhbiBTa0ltYWdlRmlsdGVyIERBRyBmcm9tCisgICAgICAgIGEgRmlsdGVyRWZm
ZWN0IERBRy4gIENhbiBhbHNvIGJ1aWxkIGZyb20gRmlsdGVyT3BlcmF0aW9ucyBsaXN0LgorICAg
ICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICBXaGVuIGJ1aWxkaW5n
IEZpbHRlckVmZmVjdHMgZnJvbSBhIHJlZmVyZW5jZSBmaWx0ZXIsIGFsc28gc3RvcmUgdGhlCisg
ICAgICAgIGdlbmVyYXRlZCBEQUcgb24gdGhlIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiBpdHNl
bGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdCk6CisgICAgICAgIEV2
ZW4gd2hlbiBpbiBjb21wb3NpdGVkIG1vZGUsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgZmlsdGVy
IGluIHRoZSAKKyAgICAgICAgY2hhaW4sIGJ1aWxkIHRoZSBGaWx0ZXJFZmZlY3QgREFHIGZyb20g
aXQuCisKIDIwMTItMTEtMDYgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlcG9ydCBwaHlzaWNhbCBtZW1vcnkgcmVhbGx5IGNv
bW1pdHRlZCBmb3IgSlMgaGVhcCBpbiBOTUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaAppbmRleCA3ZWM1MTY1NTVlZDM5ZDgxZWQwOTgyOWUzYmYyMTQzMDRkNDRm
MGZmLi42YTM3ZDI3OGMxMjA1NTI0N2UwNTE0MWQ4NzYyZTJjMTNmZDYyMTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIGNsYXNzIFNrTWF0cml4NDQ7CitjbGFzcyBTa0ltYWdl
RmlsdGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFuaW1hdGlvbkRlbGVnYXRl
OwpAQCAtMTI1LDYgKzEyNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9u
cyBvYmplY3QuCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3Bl
cmF0aW9ucyYpID0gMDsKIAorICAgIC8vIFNldCB0aGUgcm9vdCBvZiB0aGUgaW1hZ2UgZmlsdGVy
IGdyYXBoIGZvciB0aGlzIGxheWVyLiBUaGUgCisgICAgLy8gaW1wbGVtZW50YXRpb24gc2hvdWxk
IGdyYWIgYSByZWYgb24gdGhlIHBhc3NlZC1pbiBmaWx0ZXIgaW4gb3JkZXIKKyAgICAvLyB0byBy
ZXRhaW4gb3duZXJzaGlwLiBUaGUgcGFzc2VkLWluIGdyYXBoIHdpbGwgYmUgdW5yZWYnZWQgYnkg
dGhlCisgICAgLy8gY2FsbGVyIGFmdGVyIHRoaXMgY2FsbC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlsdGVyKFNrSW1hZ2VGaWx0ZXIqKSA9IDA7CisKICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBp
eGVscyB0aGF0IHNob3cgdGhyb3VnaCB0aGUgYmFja2dyb3VuZCBvZiB0aGlzIGxheWVyLgogICAg
IC8vIE5vdGU6IFRoZXNlIGZpbHRlcnMgYXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJzIHRoYXQg
YXJlIGRyYXduIGRpcmVjdGx5CiAgICAgLy8gdG8gYSByb290IHJlbmRlciBzdXJmYWNlIHdpdGgg
YW4gb3BhcXVlIGJhY2tncm91bmQuIFRoaXMgbWVhbnMgaWYgYW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNTlmNjQ3NDFkOGUyNTllNWMzMDQ3NTk0ZTkyOGJmYThm
Yzk1YjlmMS4uMzIzM2NhYzc5ZTNhNzU1NTMxYzM1ZDQyYjU5N2I1ZTJjOTlkYjE2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTExMyw2ICsxMTMsNyBAQAogICAg
ICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjJywKICAgICAgICcuLi9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L2FybScsCisgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhJywKICAgICAg
ICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9ncHUnLAogICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlJywKICAgICAgICcuLi9wbGF0Zm9ybS9ncmFwaGljcy9za2lhJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCAyNjUxZTYyZDQwMTY1NGFmNTUyOTM1ZWRmNjJkYzBhNWFkOTUzNzMxLi4zMzZj
NGYyMGQyNDBkYjc0Njg1Yzg4NWY5M2MwZmI2MzliNjI1Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC01MDUyLDYgKzUwNTIsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxpZ2h0aW5nU2tpYS5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9Ta2lhSW1hZ2VGaWx0ZXJC
dWlsZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM3MTJhMTI1YTFmYjU5NjlkMTFiYjEzZTkzZWNmOTYwNTMwODBhYjUuLmJiNjFi
N2FmMTBlNzJiZGJmYmEzMzdmNjA0OTY3ZTdjZmEzYjk5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwOSw3ICsyMDksNyBA
QAogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5
MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICovOyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0
MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4NTlCRjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0
ZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxNzBGQ0M3QzRBMDA0
ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCAqLzsgfTsKLQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgw
REVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICov
OyB9OworCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRB
MDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRp
Y1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4Q0EzRDQzMTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdTdGF0aWNQ
cm9wZXJ0eVdpdGhQYXJlbnRUZWFyT2ZmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhENDZDRTMxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1h
dGVkRW51bWVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RDQ2Q0UyMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhF
NEZFNDYwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTRGRTQ1MEUyQkQ0MTQwMEY0
Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAppbmRleCA0OGZiNjczOWQyMWExNjMwZDYzNDc0YjIwMmExNGFiNmVh
OWE0M2RiLi43YTYzYjY4MDFiNjk2ZDRmN2FlYmRhZTZhNzA2YWRmY2Y2ZmRhMjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTU0LDcgKzU0LDkgQEAKICNpbmNs
dWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKKyNpbmNsdWRlICJTa0ltYWdlRmlsdGVyLmgi
CiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlvbi5oPgpAQCAtMzgxLDE1ICszODMsMjUg
QEAgc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVy
YXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGkKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBXZWJG
aWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7Ci0gICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9w
ZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKLSAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRm
b3JtIGxheWVyLCBhcyB0aGV5IGFyZQotICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBz
b2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKFdlYkZp
bHRlck9wZXJhdGlvbnMoKSk7Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoRmls
dGVyT3BlcmF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBG
b3Igbm93LCB3ZSBvbmx5IHVzZSBTa0ltYWdlRmlsdGVycyBpZiB0aGVyZSBpcyBhIHJlZmVyZW5j
ZQorICAgIC8vIGZpbHRlciBpbiB0aGUgY2hhaW4uIE9uY2UgYWxsIGlzc3VlcyBoYXZlIGJlZW4g
aXJvbmVkIG91dCwgd2Ugc2hvdWxkCisgICAgLy8gc3dpdGNoIGFsbCBmaWx0ZXJpbmcgb3ZlciB0
byB0aGlzIHBhdGgsIGFuZCByZW1vdmUgc2V0RmlsdGVycygpIGFuZAorICAgIC8vIFdlYkZpbHRl
ck9wZXJhdGlvbnMgYWx0b2dldGhlci4KKyAgICBpZiAoZmlsdGVycy5oYXNSZWZlcmVuY2VGaWx0
ZXIoKSkgeworICAgICAgICBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAg
IFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVyPiBpbWFnZUZpbHRlcihidWlsZGVyLmJ1aWxkKGZp
bHRlcnMpKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVyKGltYWdlRmlsdGVy
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7
CisgICAgICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVy
YXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZpbHRlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcGxhdGZvcm0gbGF5ZXIsIGFzIHRoZXkg
YXJlCisgICAgICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgor
ICAgICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRp
b25zKCkpOworICAgICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVy
YXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgfQotICAgIG1f
bGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0dXJuIEdyYXBo
aWNzTGF5ZXI6OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKaW5kZXggZTU4YzhhM2QwMWVk
YzRhN2RjODNmMDBiZDgyMDJkMjFhOWU5NjAyNC4uNWM3MWMyYjcyNTA2NjQ3MWJjNzM4MmFkZjJj
Y2QxMmM5NzVlMDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAjaWYgVVNFKFNL
SUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBT
a0ltYWdlRmlsdGVyKiBjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmgKaW5kZXggMjdhNGFjODQzOGY5YTllMjY4NDM5YmMzMmQyZGZkODkyMWNlNDFj
My4uOTliNjUwYjljMWQ4NDVjMjQ0OTc5OTJiZGQxYmI0OTFmY2NiYzM3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKTsKICNpZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZv
cm1BcHBseVNraWEoKTsKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmls
dGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKaW5kZXggMTgxODNlNmNjNThiMGQz
ZmIzZjRhMDNmYjI5NDQ0MWUyYmQ3Yjc5Ny4uNjg0NTRmZDM1N2RjNWRhZDA0ZWJkZGQ1N2RkNTZl
NTNkYzI3ZTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKQEAgLTgxLDYgKzgxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICNp
ZiBVU0UoU0tJQSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2
aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1
aWxkZXIqKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuaAppbmRleCA3YjNiZGNlMjkxNzMzNjcxNjBiMjEwZTNmMDM1MjIwNTdlYTY5ZWQ3Li5kYWYz
ZWYxN2EyYzJmNzk3ODkxMGViMDE0MTliYWE5ZjhhYmE5ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5o
CkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBs
eUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFy
cmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVs
U2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBi
b29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmlydHVhbCBTa0ltYWdlRmlsdGVyKiBjcmVh
dGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKik7CiAjZW5kaWYKIAogICAgIGZs
b2F0IG1fc3RkWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggNDQ4NzgzNWU4YzBlZjMwMjZlOGU5ZmNiNjhhZjQ4
MzkyMmU3Y2FhNS4uMjg4OTg1ZDQyODhlMjkzMGRkODYyZjc0ODIxNTg2YWVhYTE5MTA3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRkVMaWdodGluZyA6IHB1YmxpYyBGaWx0
ZXJFZmZlY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKTsKICNpZiBVU0UoU0tJQSkKKyAgICB2aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUlt
YWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1BcHBseVNraWEoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAppbmRleCAxOWRhNjM1YTJl
MDNhNjFhZjA0MDhlY2Q0ZjkwZmRlNGIwZTA0NzMxLi5iMzhlNjczYzM4MjIyYzY0YjdlZGY4MzM2
ODlkZWM2MzA3MGNhZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICNpZiBVU0UoU0tJ
QSkKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKTsKKyAgICB2aXJ0dWFsIFNr
SW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqKTsK
KwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXgg
MTYyMGFiZjFlM2Q1ZTY2ZDE3ZDQ1MTZlNDQ4Zjc1MTk5YWI4ZDA0ZC4uMDY5ZWRlM2VlYWQzYWY3
MDIzZDllOWU5ZDFjYWI3M2U4OWUwMGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0zNSw2ICszNSwx
MCBAQAogCiBzdGF0aWMgY29uc3QgZmxvYXQga01heEZpbHRlclNpemUgPSA1MDAwLjBmOwogCisj
aWYgVVNFKFNLSUEpCitjbGFzcyBTa0ltYWdlRmlsdGVyOworI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwpAQCAtNDIsNiArNDYsMTAgQEAgY2xhc3MgRmlsdGVy
RWZmZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBUZXh0U3RyZWFtOwogCisjaWYgVVNF
KFNLSUEpCitjbGFzcyBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOworI2VuZGlmCisKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0VmVjdG9yOwogCiBlbnVt
IEZpbHRlckVmZmVjdFR5cGUgewpAQCAtOTUsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAjaWYgVVNFKFNLSUEpCiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIFNrSW1hZ2VGaWx0ZXIqIGNyZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1
aWxkZXIqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzEwZGJjOTEzMDM5ZjMyZmE3N2IwNTNhODhj
OTk2NGEyYzFmYzhjNC4uOTA2NzA2YmVhNzk2OGRmMTdlYWU4OGQ3MzYxMmE4MWY3ZjhkZDc5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
ICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTE3NSw2ICsxNzYsOCBAQCBwdWJsaWM6CiAKICAgICBEYXRhKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAgICAgdm9pZCBzZXREYXRhKFBh
c3NPd25QdHI8RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgRmlsdGVyRWZmZWN0
KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0RmlsdGVyRWZmZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJF
ZmZlY3QpIHsgbV9maWx0ZXJFZmZlY3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJpdmF0ZToKIApA
QCAtMTk2LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0cmlu
ZyBtX2ZyYWdtZW50OwogICAgIE93blB0cjxEYXRhPiBtX2RhdGE7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbV9maWx0ZXJFZmZlY3Q7CiB9OwogCiAvLyBHUkFZU0NBTEUsIFNFUElBLCBTQVRV
UkFURSBhbmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9yIG1hdHJp
eCBlZmZlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFQmxlbmRTa2lhLmNwcAppbmRleCBmZGNhNDMyZjRkMzQ4YTFi
OTdkNDg3MmY1YWI2YzMxNWI1NjQ3MDQxLi44MDg5ZjNiNTBkNjA1OTZmZmI4NDY5YTU0YjViM2U0
Zjg4ZjFiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NraWEvRkVCbGVuZFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUJsZW5kU2tpYS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJTa0JpdG1hcFNvdXJjZS5o
IgogI2luY2x1ZGUgIlNrQmxlbmRJbWFnZUZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZp
bHRlckJ1aWxkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NCw2ICs4NSwxNCBA
QCBib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorU2tJbWFnZUZpbHRlciogRkVCbGVuZDo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmls
dGVyQnVpbGRlciogYnVpbGRlcikKK3sKKyAgICBTa0ltYWdlRmlsdGVyKiBmb3JlZ3JvdW5kID0g
YnVpbGRlci0+YnVpbGQoaW5wdXRFZmZlY3QoMCkpOworICAgIFNrSW1hZ2VGaWx0ZXIqIGJhY2tn
cm91bmQgPSBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgxKSk7CisgICAgU2tCbGVuZEltYWdl
RmlsdGVyOjpNb2RlIG1vZGUgPSB0b1NraWFNb2RlKG1fbW9kZSk7CisgICAgcmV0dXJuIG5ldyBT
a0JsZW5kSW1hZ2VGaWx0ZXIobW9kZSwgYmFja2dyb3VuZCwgZm9yZWdyb3VuZCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29s
b3JNYXRyaXhTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKaW5kZXggMGZkMDc3NzZlMDMwNzMwOGExMThh
NjMwOTYwNDNlMGY5YTUwNTNlYi4uYWZmYmFlYWQwNDgwNTk3ZWZhOWMwM2FiZmU3Y2JlMjM1NmYy
YzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb2xvck1hdHJpeFNraWEuY3BwCkBAIC0yOCw3ICsy
OCw5IEBACiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgogCiAjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VTa2lhLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgorI2luY2x1ZGUgIlNraWFJbWFnZUZpbHRlckJ1aWxk
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwyNCArODIsMTUgQEAgc3RhdGlj
IHZvaWQgbHVtaW5hbmNlVG9BbHBoYU1hdHJpeChTa1NjYWxhciBtYXRyaXhbMjBdKQogICAgIG1h
dHJpeFsxN10gPSAwLjA3MjFmOwogfQogCi1ib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBw
bHlTa2lhKCkKK3N0YXRpYyBTa0NvbG9yRmlsdGVyKiBjcmVhdGVDb2xvckZpbHRlcihDb2xvck1h
dHJpeFR5cGUgdHlwZSwgY29uc3QgZmxvYXQqIHZhbHVlcykKIHsKLSAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0
SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKLQotICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29s
dXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLQogICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07Ci0KLSAg
ICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRkVDT0xP
Uk1BVFJJWF9UWVBFX1VOS05PV046CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1B
VFJJWF9UWVBFX01BVFJJWDoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDsgKytpKQot
ICAgICAgICAgICAgbWF0cml4W2ldID0gbV92YWx1ZXNbaV07CisgICAgICAgICAgICBtYXRyaXhb
aV0gPSB2YWx1ZXNbaV07CiAKICAgICAgICAgbWF0cml4WzRdICo9IFNrU2NhbGFyKDI1NSk7CiAg
ICAgICAgIG1hdHJpeFs5XSAqPSBTa1NjYWxhcigyNTUpOwpAQCAtMTA1LDE1ICs5OCwyOSBAQCBi
b29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICAgICAgbWF0cml4WzE5
XSAqPSBTa1NjYWxhcigyNTUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9TQVRVUkFURTogCi0gICAgICAgIHNhdHVyYXRlTWF0cml4KG1fdmFsdWVzWzBdLCBt
YXRyaXgpOworICAgICAgICBzYXR1cmF0ZU1hdHJpeCh2YWx1ZXNbMF0sIG1hdHJpeCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURToKLSAgICAg
ICAgaHVlUm90YXRlTWF0cml4KG1fdmFsdWVzWzBdLCBtYXRyaXgpOworICAgICAgICBodWVSb3Rh
dGVNYXRyaXgodmFsdWVzWzBdLCBtYXRyaXgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgogICAgICAgICBsdW1pbmFuY2VUb0Fs
cGhhTWF0cml4KG1hdHJpeCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICByZXR1cm4gbmV3
IFNrQ29sb3JNYXRyaXhGaWx0ZXIobWF0cml4KTsKK30KKworYm9vbCBGRUNvbG9yTWF0cml4Ojpw
bGF0Zm9ybUFwcGx5U2tpYSgpCit7CisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CisK
KyAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNp
emUoKSk7CisKKyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gZmlsdGVyKGNyZWF0ZUNv
bG9yRmlsdGVyKG1fdHlwZSwgbV92YWx1ZXMuZGF0YSgpKSk7CiAKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKTsKICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0xMjIsMTIgKzEyOSwxOSBAQCBib29sIEZFQ29sb3JN
YXRyaXg6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrQ2FudmFzKiBjYW52YXMgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgU2tQ
YWludCBwYWludDsKLSAgICBwYWludC5zZXRDb2xvckZpbHRlcihuZXcgU2tDb2xvck1hdHJpeEZp
bHRlcihtYXRyaXgpKS0+dW5yZWYoKTsKKyAgICBwYWludC5zZXRDb2xvckZpbHRlcihmaWx0ZXIp
OwogICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOwogICAg
IGNhbnZhcy0+ZHJhd0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCksIDAsIDAsICZwYWludCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1NrSW1hZ2VGaWx0ZXIqIEZFQ29sb3JNYXRyaXg6OmNy
ZWF0ZUltYWdlRmlsdGVyKFNraWFJbWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAg
U2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZm
ZWN0KDApKSk7CisgICAgU2tBdXRvVFVucmVmPFNrQ29sb3JGaWx0ZXI+IGZpbHRlcihjcmVhdGVD
b2xvckZpbHRlcihtX3R5cGUsIG1fdmFsdWVzLmRhdGEoKSkpOworICAgIHJldHVybiBTa0NvbG9y
RmlsdGVySW1hZ2VGaWx0ZXI6OkNyZWF0ZShmaWx0ZXIsIGlucHV0KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpICYmIFVTRShTS0lBKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lh
L0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbXBvbmVudFRyYW5zZmVyU2tpYS5jcHAKaW5kZXggNTc3
YTViMDY1NWJmNWUzZjdmMDhhMzJjMjY4NjMyMTU3NWNmYjY3OC4uODZkNWQ3ZTY2MmFmNTgyNzky
MWE4NDM0MTUyYTEwY2JlNDcwODJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29tcG9uZW50VHJhbnNmZXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVDb21wb25l
bnRUcmFuc2ZlclNraWEuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiRkVDb21wb25l
bnRUcmFuc2Zlci5oIgogCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAi
U2tDb2xvckZpbHRlckltYWdlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2tUYWJsZUNvbG9yRmlsdGVy
LmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTU1LDYgKzU3LDE4IEBAIGJvb2wgRkVDb21wb25lbnRUcmFuc2Zlcjo6cGxh
dGZvcm1BcHBseVNraWEoKQogICAgIHJldHVybiB0cnVlOwogfQogCitTa0ltYWdlRmlsdGVyKiBG
RUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyKiBidWlsZGVyKQoreworICAgIFNrSW1hZ2VGaWx0ZXIqIGlucHV0ID0gYnVpbGRlci0+YnVp
bGQoaW5wdXRFZmZlY3QoMCkpOworCisgICAgdW5zaWduZWQgY2hhciByVmFsdWVzWzI1Nl0sIGdW
YWx1ZXNbMjU2XSwgYlZhbHVlc1syNTZdLCBhVmFsdWVzWzI1Nl07CisgICAgZ2V0VmFsdWVzKHJW
YWx1ZXMsIGdWYWx1ZXMsIGJWYWx1ZXMsIGFWYWx1ZXMpOworCisgICAgU2tBdXRvVFVucmVmPFNr
Q29sb3JGaWx0ZXI+IGNvbG9yRmlsdGVyKFNrVGFibGVDb2xvckZpbHRlcjo6Q3JlYXRlQVJHQihh
VmFsdWVzLCByVmFsdWVzLCBnVmFsdWVzLCBiVmFsdWVzKSk7CisKKyAgICByZXR1cm4gU2tDb2xv
ckZpbHRlckltYWdlRmlsdGVyOjpDcmVhdGUoY29sb3JGaWx0ZXIsIGlucHV0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVz
c2lhbkJsdXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCmluZGV4IGI2OTRjOWIxYzU1YTgzOGNlNDNh
Y2JlNDk4NWE0ZGQ4OTM3OTA2NTUuLmY1ZjQ2ZGFlZGNhM2I1M2VmMTM0ZjU3ZDZkNjkxODE1YWUz
ZjliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oIgogI2lu
Y2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVp
bGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDUgKzYyLDExIEBAIGJvb2wg
RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorU2tJbWFnZUZpbHRlciogRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZUltYWdlRmlsdGVyKFNraWFJ
bWFnZUZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCit7CisgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VG
aWx0ZXI+IGlucHV0KGJ1aWxkZXItPmJ1aWxkKGlucHV0RWZmZWN0KDApKSk7CisgICAgcmV0dXJu
IG5ldyBTa0JsdXJJbWFnZUZpbHRlcihTa0Zsb2F0VG9TY2FsYXIobV9zdGRYKSwgU2tGbG9hdFRv
U2NhbGFyKG1fc3RkWSksIGlucHV0KTsKK30KKwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRpbmdTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUxp
Z2h0aW5nU2tpYS5jcHAKaW5kZXggMWE2YTJkNzBlZTcwNjM4MWU4YmRjYmMwYTlhOWEzNzQ1ZjM4
NjZlMy4uMTY3MjM0ZDNiMzU5YTBlYTUwYzczMjIxYjIzM2RiNjA4ZThiYWQ5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTGlnaHRp
bmdTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVMaWdodGluZ1NraWEuY3BwCkBAIC0zMSwzMiArMzEsMTQgQEAKICNpbmNsdWRlICJO
YXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJQb2ludExpZ2h0U291cmNlLmgiCiAjaW5jbHVk
ZSAiU2tMaWdodGluZ0ltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVp
bGRlci5oIgogI2luY2x1ZGUgIlNwb3RMaWdodFNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWJvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNraWEoKQorU2tJbWFnZUZpbHRl
ciogRkVMaWdodGluZzo6Y3JlYXRlSW1hZ2VGaWx0ZXIoU2tpYUltYWdlRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKIHsKLSAgICAvLyBGb3Igbm93LCBvbmx5IHVzZSB0aGUgc2tpYSBpbXBsZW1lbnRh
dGlvbiBmb3IgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nLgotICAgIGlmIChmaWx0ZXIoKS0+cmVuZGVy
aW5nTW9kZSgpICE9IEFjY2VsZXJhdGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJ
bWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAg
IGlmICghcmVzdWx0SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKLQotICAgIEludFJlY3QgZHJhd2luZ1JlZ2lvbiA9
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotCi0g
ICAgc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7Ci0KLSAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gaW4tPmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKLSAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQqIGRzdENvbnRl
eHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwotCi0gICAgU2tQYWludCBwYWludDsKKyAgICBT
a0ltYWdlRmlsdGVyKiBpbnB1dCA9IGJ1aWxkZXIgPyBidWlsZGVyLT5idWlsZChpbnB1dEVmZmVj
dCgwKSkgOiAwOwogICAgIHN3aXRjaCAobV9saWdodFNvdXJjZS0+dHlwZSgpKSB7CiAgICAgY2Fz
ZSBMU19ESVNUQU5UOiB7CiAgICAgICAgIERpc3RhbnRMaWdodFNvdXJjZSogZGlzdGFudExpZ2h0
U291cmNlID0gc3RhdGljX2Nhc3Q8RGlzdGFudExpZ2h0U291cmNlKj4obV9saWdodFNvdXJjZS5n
ZXQoKSk7CkBAIC02NiwyMCArNDgsMTggQEAgYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5
U2tpYSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5mKGF6aW11dGhSYWQpICogY29z
ZihlbGV2YXRpb25SYWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZihlbGV2YXRp
b25SYWQpKTsKICAgICAgICAgaWYgKG1fc3BlY3VsYXJDb25zdGFudCA+IDApCi0gICAgICAgICAg
ICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6OkNyZWF0ZURpc3Rh
bnRMaXRTcGVjdWxhcihkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNl
U2NhbGUsIG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50KSktPnVucmVmKCk7
CisgICAgICAgICAgICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVEaXN0YW50
TGl0U3BlY3VsYXIoZGlyZWN0aW9uLCBtX2xpZ2h0aW5nQ29sb3IucmdiKCksIG1fc3VyZmFjZVNj
YWxlLCBtX3NwZWN1bGFyQ29uc3RhbnQsIG1fc3BlY3VsYXJFeHBvbmVudCwgaW5wdXQpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1h
Z2VGaWx0ZXI6OkNyZWF0ZURpc3RhbnRMaXREaWZmdXNlKGRpcmVjdGlvbiwgbV9saWdodGluZ0Nv
bG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQpKS0+dW5yZWYoKTsK
LSAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVy
OjpDcmVhdGVEaXN0YW50TGl0RGlmZnVzZShkaXJlY3Rpb24sIG1fbGlnaHRpbmdDb2xvci5yZ2Io
KSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50LCBpbnB1dCk7CiAgICAgfQogICAg
IGNhc2UgTFNfUE9JTlQ6IHsKICAgICAgICAgUG9pbnRMaWdodFNvdXJjZSogcG9pbnRMaWdodFNv
dXJjZSA9IHN0YXRpY19jYXN0PFBvaW50TGlnaHRTb3VyY2UqPihtX2xpZ2h0U291cmNlLmdldCgp
KTsKICAgICAgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9uID0gcG9pbnRMaWdodFNvdXJjZS0+cG9z
aXRpb24oKTsKICAgICAgICAgU2tQb2ludDMgc2tQb3NpdGlvbihwb3NpdGlvbi54KCksIHBvc2l0
aW9uLnkoKSwgcG9zaXRpb24ueigpKTsKICAgICAgICAgaWYgKG1fc3BlY3VsYXJDb25zdGFudCA+
IDApCi0gICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihTa0xpZ2h0aW5nSW1hZ2VGaWx0
ZXI6OkNyZWF0ZVBvaW50TGl0U3BlY3VsYXIoc2tQb3NpdGlvbiwgbV9saWdodGluZ0NvbG9yLnJn
YigpLCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25l
bnQpKS0+dW5yZWYoKTsKKyAgICAgICAgICAgIHJldHVybiBTa0xpZ2h0aW5nSW1hZ2VGaWx0ZXI6
OkNyZWF0ZVBvaW50TGl0U3BlY3VsYXIoc2tQb3NpdGlvbiwgbV9saWdodGluZ0NvbG9yLnJnYigp
LCBtX3N1cmZhY2VTY2FsZSwgbV9zcGVjdWxhckNvbnN0YW50LCBtX3NwZWN1bGFyRXhwb25lbnQs
IGlucHV0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIo
U2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdERpZmZ1c2Uoc2tQb3NpdGlvbiwg
bV9saWdodGluZ0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQp
KS0+dW5yZWYoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gU2tMaWdodGlu
Z0ltYWdlRmlsdGVyOjpDcmVhdGVQb2ludExpdERpZmZ1c2Uoc2tQb3NpdGlvbiwgbV9saWdodGlu
Z0NvbG9yLnJnYigpLCBtX3N1cmZhY2VTY2FsZSwgbV9kaWZmdXNlQ29uc3RhbnQsIGlucHV0KTsK
ICAgICB9CiAgICAgY2FzZSBMU19TUE9UOiB7CiAgICAgICAgIFNwb3RMaWdodFNvdXJjZSogc3Bv
dExpZ2h0U291cmNlID0gc3RhdGljX2Nhc3Q8U3BvdExpZ2h0U291cmNlKj4obV9saWdodFNvdXJj
ZS5nZXQoKSk7CkBAIC05MCwxNSArNzAsMzkgQEAgYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFw
cGx5U2tpYSgpCiAgICAgICAgIGlmICghbGltaXRpbmdDb25lQW5nbGUgfHwgbGltaXRpbmdDb25l
QW5nbGUgPiA5MCB8fCBsaW1pdGluZ0NvbmVBbmdsZSA8IC05MCkKICAgICAgICAgICAgIGxpbWl0
aW5nQ29uZUFuZ2xlID0gOTA7CiAgICAgICAgIGlmIChtX3NwZWN1bGFyQ29uc3RhbnQgPiAwKQot
ICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpD
cmVhdGVTcG90TGl0U3BlY3VsYXIobG9jYXRpb24sIHRhcmdldCwgc3BlY3VsYXJFeHBvbmVudCwg
bGltaXRpbmdDb25lQW5nbGUsIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUs
IG1fc3BlY3VsYXJDb25zdGFudCwgbV9zcGVjdWxhckV4cG9uZW50KSktPnVucmVmKCk7CisgICAg
ICAgICAgICByZXR1cm4gU2tMaWdodGluZ0ltYWdlRmlsdGVyOjpDcmVhdGVTcG90TGl0U3BlY3Vs
YXIobG9jYXRpb24sIHRhcmdldCwgc3BlY3VsYXJFeHBvbmVudCwgbGltaXRpbmdDb25lQW5nbGUs
IG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fc3BlY3VsYXJDb25zdGFu
dCwgbV9zcGVjdWxhckV4cG9uZW50LCBpbnB1dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHBhaW50LnNldEltYWdlRmlsdGVyKFNrTGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExp
dERpZmZ1c2UobG9jYXRpb24sIHRhcmdldCwgc3BlY3VsYXJFeHBvbmVudCwgbGltaXRpbmdDb25l
QW5nbGUsIG1fbGlnaHRpbmdDb2xvci5yZ2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNv
bnN0YW50KSktPnVucmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFNr
TGlnaHRpbmdJbWFnZUZpbHRlcjo6Q3JlYXRlU3BvdExpdERpZmZ1c2UobG9jYXRpb24sIHRhcmdl
dCwgc3BlY3VsYXJFeHBvbmVudCwgbGltaXRpbmdDb25lQW5nbGUsIG1fbGlnaHRpbmdDb2xvci5y
Z2IoKSwgbV9zdXJmYWNlU2NhbGUsIG1fZGlmZnVzZUNvbnN0YW50LCBpbnB1dCk7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KK30KKworYm9vbCBGRUxpZ2h0aW5n
OjpwbGF0Zm9ybUFwcGx5U2tpYSgpCit7CisgICAgLy8gRm9yIG5vdywgb25seSB1c2UgdGhlIHNr
aWEgaW1wbGVtZW50YXRpb24gZm9yIGFjY2VsZXJhdGVkIHJlbmRlcmluZy4KKyAgICBpZiAoZmls
dGVyKCktPnJlbmRlcmluZ01vZGUoKSAhPSBBY2NlbGVyYXRlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CisKKyAgICBJbnRSZWN0IGRy
YXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKTsKKworICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOworCisg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGluLT5hc0ltYWdlQnVmZmVyKCktPmNvcHlJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworCisgICAgR3JhcGhpY3NDb250
ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKworICAgIFNrUGFpbnQg
cGFpbnQ7CisgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoY3JlYXRlSW1hZ2VGaWx0ZXIoMCkpLT51
bnJlZigpOwogICAgIGRzdENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJh
d0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCksIGRyYXdpbmdSZWdpb24ubG9jYXRpb24oKS54
KCksIGRyYXdpbmdSZWdpb24ubG9jYXRpb24oKS55KCksICZwYWludCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKaW5kZXggZTcyOTBiZWM3
ZTJkZTRhODI5M2NmYTVhZTEzZTliMjhmZjMyZGIwNS4uYjJlOWY0ZmNmYjdlM2VhZjIyMTlhYzQ1
NmM1N2YyODVlODM3NTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogCiAjaW5jbHVkZSAi
U2tNb3JwaG9sb2d5SW1hZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJTa2lhSW1hZ2VGaWx0ZXJCdWls
ZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsNSArNjMsMTUgQEAgYm9vbCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
U2tJbWFnZUZpbHRlciogRkVNb3JwaG9sb2d5OjpjcmVhdGVJbWFnZUZpbHRlcihTa2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyKiBidWlsZGVyKQoreworICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVy
PiBpbnB1dChidWlsZGVyLT5idWlsZChpbnB1dEVmZmVjdCgwKSkpOworICAgIFNrU2NhbGFyIHJh
ZGl1c1ggPSBTa0Zsb2F0VG9TY2FsYXIobV9yYWRpdXNYKTsKKyAgICBTa1NjYWxhciByYWRpdXNZ
ID0gU2tGbG9hdFRvU2NhbGFyKG1fcmFkaXVzWSk7CisgICAgaWYgKG1fdHlwZSA9PSBGRU1PUlBI
T0xPR1lfT1BFUkFUT1JfRElMQVRFKQorICAgICAgICByZXR1cm4gbmV3IFNrRGlsYXRlSW1hZ2VG
aWx0ZXIocmFkaXVzWCwgcmFkaXVzWSwgaW5wdXQpOworICAgIHJldHVybiBuZXcgU2tFcm9kZUlt
YWdlRmlsdGVyKHJhZGl1c1gsIHJhZGl1c1ksIGlucHV0KTsKK30KKwogfTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1Nr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRh
ODkxZmI4NTYwOGE3Mzc5MTU1MWY4YTZlOGRlNGY3MjBkNDRiMjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdl
RmlsdGVyQnVpbGRlci5jcHAKQEAgLTAsMCArMSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiU2tpYUltYWdlRmlsdGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUg
IlNrQmx1ckltYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlckltYWdlRmlsdGVy
LmgiCisjaW5jbHVkZSAiU2tDb2xvck1hdHJpeEZpbHRlci5oIgorI2luY2x1ZGUgIlNrTWF0cml4
LmgiCisKK25hbWVzcGFjZSB7CisKK3ZvaWQgZ2V0QnJpZ2h0bmVzc01hdHJpeChmbG9hdCBhbW91
bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBz
aXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJd
ID0gbWF0cml4WzE4XSA9IDE7CisgICAgbWF0cml4WzRdID0gbWF0cml4WzldID0gbWF0cml4WzE0
XSA9IGFtb3VudCAqIDI1NTsKK30KKwordm9pZCBnZXRDb250cmFzdE1hdHJpeChmbG9hdCBhbW91
bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBz
aXplb2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJd
ID0gYW1vdW50OworICAgIG1hdHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSAoLTAu
NWYgKiBhbW91bnQgKyAwLjVmKSAqIDI1NTsKKyAgICBtYXRyaXhbMThdID0gMTsKK30KKwordm9p
ZCBnZXRTYXR1cmF0ZU1hdHJpeChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7
CisgICAgLy8gTm90ZSwgdGhlc2UgdmFsdWVzIGFyZSBjb21wdXRlZCB0byBlbnN1cmUgbWF0cml4
TmVlZHNDbGFtcGluZyBpcyBmYWxzZQorICAgIC8vIGZvciBhbW91bnQgaW4gWzAuLjFdCisgICAg
bWF0cml4WzBdID0gMC4yMTNmICsgMC43ODdmICogYW1vdW50OworICAgIG1hdHJpeFsxXSA9IDAu
NzE1ZiAtIDAuNzE1ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMl0gPSAxLmYgLSAobWF0cml4WzBd
ICsgbWF0cml4WzFdKTsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhbNF0gPSAwOworICAgIG1hdHJp
eFs1XSA9IDAuMjEzZiAtIDAuMjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbNl0gPSAwLjcxNWYg
KyAwLjI4NWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzddID0gMS5mIC0gKG1hdHJpeFs1XSArIG1h
dHJpeFs2XSk7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBd
ID0gMC4yMTNmIC0gMC4yMTNmICogYW1vdW50OworICAgIG1hdHJpeFsxMV0gPSAwLjcxNWYgLSAw
LjcxNWYgKiBhbW91bnQ7CisgICAgbWF0cml4WzEyXSA9IDEuZiAtIChtYXRyaXhbMTBdICsgbWF0
cml4WzExXSk7CisgICAgbWF0cml4WzEzXSA9IG1hdHJpeFsxNF0gPSAwOworICAgIG1hdHJpeFsx
NV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJp
eFsxOF0gPSAxOworfQorCit2b2lkIGdldEh1ZVJvdGF0ZU1hdHJpeChmbG9hdCBodWUsIFNrU2Nh
bGFyIG1hdHJpeFsyMF0pCit7CisgICAgZmxvYXQgY29zSHVlID0gY29zZihodWUgKiBwaUZsb2F0
IC8gMTgwKTsKKyAgICBmbG9hdCBzaW5IdWUgPSBzaW5mKGh1ZSAqIHBpRmxvYXQgLyAxODApOwor
ICAgIG1hdHJpeFswXSA9IDAuMjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEz
ZjsKKyAgICBtYXRyaXhbMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAw
LjcxNWY7CisgICAgbWF0cml4WzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJmICsgc2luSHVl
ICogMC45MjhmOworICAgIG1hdHJpeFszXSA9IG1hdHJpeFs0XSA9IDA7CisgICAgbWF0cml4WzVd
ID0gMC4yMTNmIC0gY29zSHVlICogMC4yMTNmICsgc2luSHVlICogMC4xNDNmOworICAgIG1hdHJp
eFs2XSA9IDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKKyAgICBt
YXRyaXhbN10gPSAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5IdWUgKiAwLjI4M2Y7Cisg
ICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsKKyAgICBtYXRyaXhbMTBdID0gMC4yMTNmIC0g
Y29zSHVlICogMC4yMTNmIC0gc2luSHVlICogMC43ODdmOworICAgIG1hdHJpeFsxMV0gPSAwLjcx
NWYgLSBjb3NIdWUgKiAwLjcxNWYgKyBzaW5IdWUgKiAwLjcxNWY7CisgICAgbWF0cml4WzEyXSA9
IDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiArIHNpbkh1ZSAqIDAuMDcyZjsKKyAgICBtYXRyaXhb
MTNdID0gbWF0cml4WzE0XSA9IDA7CisgICAgbWF0cml4WzE1XSA9IG1hdHJpeFsxNl0gPSBtYXRy
aXhbMTddID0gMDsKKyAgICBtYXRyaXhbMThdID0gMTsKKyAgICBtYXRyaXhbMTldID0gMDsKK30K
Kwordm9pZCBnZXRJbnZlcnRNYXRyaXgoZmxvYXQgYW1vdW50LCBTa1NjYWxhciBtYXRyaXhbMjBd
KQoreworICAgIG1lbXNldChtYXRyaXgsIDAsIDIwICogc2l6ZW9mKFNrU2NhbGFyKSk7CisgICAg
bWF0cml4WzBdID0gbWF0cml4WzZdID0gbWF0cml4WzEyXSA9IDEgLSAyICogYW1vdW50OworICAg
IG1hdHJpeFs0XSA9IG1hdHJpeFs5XSA9IG1hdHJpeFsxNF0gPSBhbW91bnQgKiAyNTU7CisgICAg
bWF0cml4WzE4XSA9IDE7Cit9CisKK3ZvaWQgZ2V0T3BhY2l0eU1hdHJpeChmbG9hdCBhbW91bnQs
IFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgbWVtc2V0KG1hdHJpeCwgMCwgMjAgKiBzaXpl
b2YoU2tTY2FsYXIpKTsKKyAgICBtYXRyaXhbMF0gPSBtYXRyaXhbNl0gPSBtYXRyaXhbMTJdID0g
MTsKKyAgICBtYXRyaXhbMThdID0gYW1vdW50OworfQorCit2b2lkIGdldEdyYXlzY2FsZU1hdHJp
eChmbG9hdCBhbW91bnQsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCit7CisgICAgLy8gTm90ZSwgdGhl
c2UgdmFsdWVzIGFyZSBjb21wdXRlZCB0byBlbnN1cmUgbWF0cml4TmVlZHNDbGFtcGluZyBpcyBm
YWxzZQorICAgIC8vIGZvciBhbW91bnQgaW4gWzAuLjFdCisgICAgbWF0cml4WzBdID0gMC4yMTI2
ZiArIDAuNzg3NGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzFdID0gMC43MTUyZiAtIDAuNzE1MmYg
KiBhbW91bnQ7CisgICAgbWF0cml4WzJdID0gMS5mIC0gKG1hdHJpeFswXSArIG1hdHJpeFsxXSk7
CisgICAgbWF0cml4WzNdID0gbWF0cml4WzRdID0gMDsKKworICAgIG1hdHJpeFs1XSA9IDAuMjEy
NmYgLSAwLjIxMjZmICogYW1vdW50OworICAgIG1hdHJpeFs2XSA9IDAuNzE1MmYgKyAwLjI4NDhm
ICogYW1vdW50OworICAgIG1hdHJpeFs3XSA9IDEuZiAtIChtYXRyaXhbNV0gKyBtYXRyaXhbNl0p
OworICAgIG1hdHJpeFs4XSA9IG1hdHJpeFs5XSA9IDA7CisKKyAgICBtYXRyaXhbMTBdID0gMC4y
MTI2ZiAtIDAuMjEyNmYgKiBhbW91bnQ7CisgICAgbWF0cml4WzExXSA9IDAuNzE1MmYgLSAwLjcx
NTJmICogYW1vdW50OworICAgIG1hdHJpeFsxMl0gPSAxLmYgLSAobWF0cml4WzEwXSArIG1hdHJp
eFsxMV0pOworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKworICAgIG1hdHJpeFsx
NV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAwOworICAgIG1hdHJp
eFsxOF0gPSAxOworfQorCit2b2lkIGdldFNlcGlhTWF0cml4KGZsb2F0IGFtb3VudCwgU2tTY2Fs
YXIgbWF0cml4WzIwXSkKK3sKKyAgICBtYXRyaXhbMF0gPSAwLjM5M2YgKyAwLjYwN2YgKiBhbW91
bnQ7CisgICAgbWF0cml4WzFdID0gMC43NjlmIC0gMC43NjlmICogYW1vdW50OworICAgIG1hdHJp
eFsyXSA9IDAuMTg5ZiAtIDAuMTg5ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbM10gPSBtYXRyaXhb
NF0gPSAwOworCisgICAgbWF0cml4WzVdID0gMC4zNDlmIC0gMC4zNDlmICogYW1vdW50OworICAg
IG1hdHJpeFs2XSA9IDAuNjg2ZiArIDAuMzE0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbN10gPSAw
LjE2OGYgLSAwLjE2OGYgKiBhbW91bnQ7CisgICAgbWF0cml4WzhdID0gbWF0cml4WzldID0gMDsK
KworICAgIG1hdHJpeFsxMF0gPSAwLjI3MmYgLSAwLjI3MmYgKiBhbW91bnQ7CisgICAgbWF0cml4
WzExXSA9IDAuNTM0ZiAtIDAuNTM0ZiAqIGFtb3VudDsKKyAgICBtYXRyaXhbMTJdID0gMC4xMzFm
ICsgMC44NjlmICogYW1vdW50OworICAgIG1hdHJpeFsxM10gPSBtYXRyaXhbMTRdID0gMDsKKwor
ICAgIG1hdHJpeFsxNV0gPSBtYXRyaXhbMTZdID0gbWF0cml4WzE3XSA9IG1hdHJpeFsxOV0gPSAw
OworICAgIG1hdHJpeFsxOF0gPSAxOworfQorCitTa0ltYWdlRmlsdGVyKiBjcmVhdGVNYXRyaXhJ
bWFnZUZpbHRlcihTa1NjYWxhciBtYXRyaXhbMjBdLCBTa0ltYWdlRmlsdGVyKiBpbnB1dCkKK3sK
KyAgICBTa0F1dG9UVW5yZWY8U2tDb2xvckZpbHRlcj4gY29sb3JGaWx0ZXIobmV3IFNrQ29sb3JN
YXRyaXhGaWx0ZXIobWF0cml4KSk7CisgICAgcmV0dXJuIFNrQ29sb3JGaWx0ZXJJbWFnZUZpbHRl
cjo6Q3JlYXRlKGNvbG9yRmlsdGVyLCBpbnB1dCk7Cit9CisKK307CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6U2tpYUltYWdlRmlsdGVyQnVpbGRlcigp
Cit7Cit9CisKK1NrSW1hZ2VGaWx0ZXIqIFNraWFJbWFnZUZpbHRlckJ1aWxkZXI6OmJ1aWxkKEZp
bHRlckVmZmVjdCogZWZmZWN0KQoreworICAgIGlmICghZWZmZWN0KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIEZpbHRlckJ1aWxkZXJIYXNoTWFwOjppdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQo
ZWZmZWN0KTsKKyAgICBpZiAoaXQgIT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+
dmFsdWU7CisKKyAgICBTa0ltYWdlRmlsdGVyKiBmaWx0ZXIgPSBlZmZlY3QtPmNyZWF0ZUltYWdl
RmlsdGVyKHRoaXMpOworICAgIG1fbWFwLnNldChlZmZlY3QsIGZpbHRlcik7CisgICAgcmV0dXJu
IGZpbHRlcjsKK30KKworU2tJbWFnZUZpbHRlciogU2tpYUltYWdlRmlsdGVyQnVpbGRlcjo6YnVp
bGQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKK3sKKyAgICBTa0ltYWdlRmls
dGVyKiBmaWx0ZXIgPSAwOworICAgIFNrU2NhbGFyIG1hdHJpeFsyMF07CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgb3AgPSAqb3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgc3dpdGNoIChv
cC5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJF
RkVSRU5DRTogeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QgPSBzdGF0
aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5maWx0ZXJFZmZl
Y3QoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBob29rIHVwIHBhcmVudCBmaWx0ZXIgdG8gaW1h
Z2Ugc291cmNlCisgICAgICAgICAgICBmaWx0ZXIgPSBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyOjpi
dWlsZChmaWx0ZXJFZmZlY3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogeworICAgICAgICAgICAgZmxvYXQg
YW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bio+KCZvcCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0R3JheXNjYWxlTWF0cml4KGFtb3Vu
dCwgbWF0cml4KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVy
KG1hdHJpeCwgZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZv
cCktPmFtb3VudCgpOworICAgICAgICAgICAgZ2V0U2VwaWFNYXRyaXgoYW1vdW50LCBtYXRyaXgp
OworICAgICAgICAgICAgZmlsdGVyID0gY3JlYXRlTWF0cml4SW1hZ2VGaWx0ZXIobWF0cml4LCBm
aWx0ZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgICAgICBmbG9hdCBhbW91bnQgPSBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oJm9wKS0+YW1v
dW50KCk7CisgICAgICAgICAgICBnZXRTYXR1cmF0ZU1hdHJpeChhbW91bnQsIG1hdHJpeCk7Cisg
ICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRl
cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3Vu
dCgpOworICAgICAgICAgICAgZ2V0SHVlUm90YXRlTWF0cml4KGFtb3VudCwgbWF0cml4KTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwgZmlsdGVy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5hbW91
bnQoKTsKKyAgICAgICAgICAgIGdldEludmVydE1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAg
ICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFtb3Vu
dCgpOworICAgICAgICAgICAgZ2V0T3BhY2l0eU1hdHJpeChhbW91bnQsIG1hdHJpeCk7CisgICAg
ICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZpbHRlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6QlJJR0hUTkVTUzogeworICAgICAgICAgICAgZmxvYXQgYW1vdW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KCZvcCktPmFt
b3VudCgpOworICAgICAgICAgICAgZ2V0QnJpZ2h0bmVzc01hdHJpeChhbW91bnQsIG1hdHJpeCk7
CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVNYXRyaXhJbWFnZUZpbHRlcihtYXRyaXgsIGZp
bHRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKKyAgICAgICAgICAgIGZsb2F0IGFtb3VudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmb3Ap
LT5hbW91bnQoKTsKKyAgICAgICAgICAgIGdldENvbnRyYXN0TWF0cml4KGFtb3VudCwgbWF0cml4
KTsKKyAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZU1hdHJpeEltYWdlRmlsdGVyKG1hdHJpeCwg
ZmlsdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOiB7CisgICAgICAgICAgICBmbG9hdCBwaXhlbFJhZGl1cyA9IHN0
YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmb3ApLT5zdGREZXZpYXRpb24o
KS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgU2tCbHVySW1hZ2VG
aWx0ZXIocGl4ZWxSYWRpdXMsIHBpeGVsUmFkaXVzLCBmaWx0ZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9X
OiB7CisvLyAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24mIGRyb3BT
aGFkb3dPcCA9ICpzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4o
Jm9wKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyBvZmZzZXQgYW5kIGJsdXIKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RPTToKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkNVU1RPTToKKyAgICAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQuCisjZW5k
aWYKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBBU1NUSFJPVUdIOgorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvU2tpYUltYWdlRmlsdGVyQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1Nr
aWFJbWFnZUZpbHRlckJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2JkNjgzMjBiNmE5MjljNjEwMDk4
NjhiNTcxNDZkMWRmNjI1OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL1NraWFJbWFnZUZpbHRlckJ1aWxkZXIuaApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyX2gKKyNk
ZWZpbmUgU2tpYUltYWdlRmlsdGVyQnVpbGRlcl9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorCitjbGFzcyBTa0ltYWdlRmlsdGVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBG
aWx0ZXJFZmZlY3Q7CitjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOworCitjbGFzcyBTa2lhSW1hZ2VG
aWx0ZXJCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICBTa2lhSW1hZ2VGaWx0ZXJCdWlsZGVyKCk7CisK
KyAgICBTa0ltYWdlRmlsdGVyKiBidWlsZChGaWx0ZXJFZmZlY3QqKTsKKyAgICBTa0ltYWdlRmls
dGVyKiBidWlsZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7Citwcml2YXRlOgorICAgIHR5cGVk
ZWYgSGFzaE1hcDxGaWx0ZXJFZmZlY3QqLCBTa0ltYWdlRmlsdGVyKj4gRmlsdGVyQnVpbGRlckhh
c2hNYXA7CisgICAgRmlsdGVyQnVpbGRlckhhc2hNYXAgbV9tYXA7Cit9OworCit9OworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCmluZGV4IDIxYWUxNmZiMGZkNTMxMjhiYmJkZWYzNDdiOWNmYzRkMjM5YjJhZTEuLjNiZmU1
MmJmODAyYjIzNmE4YTA2NTRjNDRhZjY0OGNkMzJmNTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMjA0LDcgKzIwNCw5
IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbiogZmls
dGVyT3BlcmF0aW9uID0gb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXQoaSkuZ2V0KCk7CiAgICAg
ICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKICAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTogewotICAgICAgICAgICAgZWZmZWN0
ID0gYnVpbGRSZWZlcmVuY2VGaWx0ZXIoZG9jdW1lbnQsIHByZXZpb3VzRWZmZWN0LCBzdGF0aWNf
Y2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pKTsKKyAgICAg
ICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogcmVmZXJlbmNlT3BlcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKGRvY3VtZW50LCBwcmV2aW91
c0VmZmVjdCwgcmVmZXJlbmNlT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIHJlZmVyZW5jZU9wZXJh
dGlvbi0+c2V0RmlsdGVyRWZmZWN0KGVmZmVjdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzOTk3YmRlM2E1MmMzMWQ3OGRh
NzMzZjMxOWI3YmNjZjFjZGI1ZWY5Li4zYThjMDI4YTRlMjNhNGM1NmVkNjc2Mjc4ODhkZmNhODRl
Y2IzNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUx
NzAsNyArNTE3MCwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVm
ZmVjdFJlbmRlcmVyKCkKICAgICAgICAgLy8gZm9yIGxvYWRpbmcgQ1NTIHNoYWRlciBmaWxlcy4K
ICAgICAgICAgaWYgKFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZp
bHRlckluZm8oKSkKICAgICAgICAgICAgIGZpbHRlckluZm8tPnNldFJlbmRlcmVyKDApOwotICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRWFybHktcmV0dXJuIG9ubHkgaWYgd2UgKmRvbid0
KiBoYXZlIHJlZmVyZW5jZSBmaWx0ZXJzLgorICAgICAgICAvLyBGb3IgcmVmZXJlbmNlIGZpbHRl
cnMsIHdlIHN0aWxsIHdhbnQgdGhlIEZpbHRlckVmZmVjdCBncmFwaCBidWlsdAorICAgICAgICAv
LyBmb3IgdXMsIGV2ZW4gaWYgd2UncmUgY29tcG9zaXRlZC4KKyAgICAgICAgaWYgKCFyZW5kZXJl
cigpLT5zdHlsZSgpLT5maWx0ZXIoKS5oYXNSZWZlcmVuY2VGaWx0ZXIoKSkKKyAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJ
bmZvID0gZW5zdXJlRmlsdGVySW5mbygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtaHcuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwKaW5kZXggMjc5OTRkN2VmNTY4NDU5NWIxNTg5NzZk
YTViODlkMGM2NTljZDY2Ni4uMDE0MDJhYWY2MTI5MTg1MTNmOGIyN2EzMjUwMDA4MjU2ZjFiZGNl
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Ut
aHcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1o
dy5odG1sCkBAIC0xLDggKzEsMjIgQEAKIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiB2ZXJzaW9uPSIxLjEiPgogICA8ZGVmcz4KLSAg
ICA8ZmlsdGVyIGlkPSJNeUZpbHRlciI+CisgICAgPGZpbHRlciBpZD0iY29sb3JtYXRyaXgiPgog
ICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT0iaHVlUm90YXRlIiB2YWx1ZXM9IjE4MCIvPgogICAg
IDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9Im1vcnBob2xvZ3kiPgorICAgICAgPGZlTW9ycGhv
bG9neSByYWRpdXM9IjEwIiBvcGVyYXRvcj0iZGlsYXRlIi8+CisgICAgPC9maWx0ZXI+CisgICAg
PGZpbHRlciBpZD0iY29tcG9uZW50dHJhbnNmZXIiPgorICAgICAgPGZlQ29tcG9uZW50VHJhbnNm
ZXI+CisgICAgICAgIDxmZUZ1bmNSIHR5cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAg
IDxmZUZ1bmNHIHR5cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNCIHR5
cGU9ImxpbmVhciIgc2xvcGU9IjAuNSI+CisgICAgICAgIDxmZUZ1bmNBIHR5cGU9ImlkZW50aXR5
Ij4KKyAgICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICA8L2ZpbHRlcj4KKyAgICA8Zmls
dGVyIGlkPSJibHVyWSI+CisgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIwIDUi
Lz4KKyAgICA8L2ZpbHRlcj4KICAgPC9kZWZzPgogPC9zdmc+CiA8c3R5bGU+CkBAIC0xMSw0ICsy
NSw4IEBAIGltZyB7CiAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiB9CiA8
L3N0eWxlPgotPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjTXlGaWx0ZXIpOyBmaWx0
ZXI6IHVybCgjTXlGaWx0ZXIpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1n
IHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0
ZXI6IHVybCgjY29sb3JtYXRyaXgpOyBmaWx0ZXI6IHVybCgjY29sb3JtYXRyaXgpOyIgc3JjPSJy
ZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJs
KCNtb3JwaG9sb2d5KTsgZmlsdGVyOiB1cmwoI21vcnBob2xvZ3kpOyIgc3JjPSJyZXNvdXJjZXMv
cmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNjb21wb25l
bnR0cmFuc2Zlcik7IGZpbHRlcjogdXJsKCNjb21wb25lbnR0cmFuc2Zlcik7IiBzcmM9InJlc291
cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2Js
dXJZKTsgZmlsdGVyOiB1cmwoI2JsdXJZKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmci
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Ut
b3JkZXJpbmctaHcuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJl
bmNlLW9yZGVyaW5nLWh3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVhMWQ4OTAxYjI3MDI3YzkxNDZmMmU3
MDMwMjc3Y2Q3MDNhMjM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwIiBoZWlnaHQ9
IjAiIHZlcnNpb249IjEuMSI+CisgIDxkZWZzPgorICAgIDxmaWx0ZXIgaWQ9ImJsdXJYIj4KKyAg
ICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjUgMCIvPgorICAgIDwvZmlsdGVyPgor
ICAgIDxmaWx0ZXIgaWQ9ImJsdXJZIj4KKyAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRp
b249IjAgNSIvPgorICAgIDwvZmlsdGVyPgorICA8L2RlZnM+Cis8L3N2Zz4KKzxzdHlsZT4KK2lt
ZyB7CisgICAgbWFyZ2luOiAxMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiAgdHJhbnNsYXRl
WigwKTsKK30KKzwvc3R5bGU+Cis8aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNibHVy
WSk7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcgc3R5bGU9Ii13ZWJraXQt
ZmlsdGVyOiBjb250cmFzdCg1MDAlKSB1cmwoI2JsdXJZKTsiIHNyYz0icmVzb3VyY2VzL3JlZmVy
ZW5jZS5wbmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjYmx1clkpIGNvbnRy
YXN0KDUwMCUpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxlPSIt
d2Via2l0LWZpbHRlcjogdXJsKCNibHVyWCkgY29udHJhc3QoNTAwJSk7IHVybCgjYmx1clkpOyIg
c3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0
ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbAppbmRleCA0MGQzNTNkNzVjOTliZTA3NDkzMTQyMjAx
NGI2N2JkZTk1ZThiZmY3Li40ZDkzYzdiZTdjZjY4OGU4YjUzMmYwM2U4Y2I0NTkyODVjOTkxY2Jk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwK
QEAgLTEsOCArMSwyMiBAQAogPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHZlcnNpb249IjEuMSI+CiAgIDxkZWZzPgotICAgIDxmaWx0
ZXIgaWQ9Ik15RmlsdGVyIj4KKyAgICA8ZmlsdGVyIGlkPSJjb2xvcm1hdHJpeCI+CiAgICAgICA8
ZmVDb2xvck1hdHJpeCB0eXBlPSJodWVSb3RhdGUiIHZhbHVlcz0iMTgwIi8+CiAgICAgPC9maWx0
ZXI+CisgICAgPGZpbHRlciBpZD0ibW9ycGhvbG9neSI+CisgICAgICA8ZmVNb3JwaG9sb2d5IHJh
ZGl1cz0iMTAiIG9wZXJhdG9yPSJkaWxhdGUiLz4KKyAgICA8L2ZpbHRlcj4KKyAgICA8ZmlsdGVy
IGlkPSJjb21wb25lbnR0cmFuc2ZlciI+CisgICAgICA8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAg
ICAgICAgPGZlRnVuY1IgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41Ij4KKyAgICAgICAgPGZlRnVu
Y0cgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41Ij4KKyAgICAgICAgPGZlRnVuY0IgdHlwZT0ibGlu
ZWFyIiBzbG9wZT0iMC41Ij4KKyAgICAgICAgPGZlRnVuY0EgdHlwZT0iaWRlbnRpdHkiPgorICAg
ICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorICAgIDwvZmlsdGVyPgorICAgIDxmaWx0ZXIgaWQ9
ImJsdXJZIj4KKyAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjAgNSIvPgorICAg
IDwvZmlsdGVyPgogICA8L2RlZnM+CiA8L3N2Zz4KIDxzdHlsZT4KQEAgLTEwLDQgKzI0LDggQEAg
aW1nIHsKICAgICBtYXJnaW46IDEwcHg7CiB9CiA8L3N0eWxlPgotPGltZyBzdHlsZT0iLXdlYmtp
dC1maWx0ZXI6IHVybCgjTXlGaWx0ZXIpOyBmaWx0ZXI6IHVybCgjTXlGaWx0ZXIpOyIgc3JjPSJy
ZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5w
bmciPgorPGltZyBzdHlsZT0iLXdlYmtpdC1maWx0ZXI6IHVybCgjY29sb3JtYXRyaXgpOyBmaWx0
ZXI6IHVybCgjY29sb3JtYXRyaXgpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8
aW1nIHN0eWxlPSItd2Via2l0LWZpbHRlcjogdXJsKCNtb3JwaG9sb2d5KTsgZmlsdGVyOiB1cmwo
I21vcnBob2xvZ3kpOyIgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLnBuZyI+Cis8aW1nIHN0eWxl
PSItd2Via2l0LWZpbHRlcjogdXJsKCNjb21wb25lbnR0cmFuc2Zlcik7IGZpbHRlcjogdXJsKCNj
b21wb25lbnR0cmFuc2Zlcik7IiBzcmM9InJlc291cmNlcy9yZWZlcmVuY2UucG5nIj4KKzxpbWcg
c3R5bGU9Ii13ZWJraXQtZmlsdGVyOiB1cmwoI2JsdXJZKTsgZmlsdGVyOiB1cmwoI2JsdXJZKTsi
IHNyYz0icmVzb3VyY2VzL3JlZmVyZW5jZS5wbmciPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDc5OTM5ODEwNjM3NDE3MGU1YTIzMDJm
M2M1NjY5NzhmOTc1YTI2OC4uNjI4MTI1NWU4YTg0MDlkODM5ZWQ1MzE5YjRiYjQ2ZDFmZWVhN2Y1
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CkBAIC00MTIxLDYgKzQxMjEsMTAgQEAgd2Via2l0Lm9yZy9iLzk5NzQ5IFsgTW91bnRhaW5MaW9u
IF0gY29tcG9zaXRpbmcvZGlyZWN0LWltYWdlLWNvbXBvc2l0aW5nLmh0bWwgWwogd2Via2l0Lm9y
Zy9iLzk5NzQ5IFsgTW91bnRhaW5MaW9uIF0gY29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xpcHBpbmct
Zm9yZWdyb3VuZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk3NDkg
WyBNb3VudGFpbkxpb24gXSBmYXN0L2NhbnZhcy9mb250LXVwZGF0ZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8xMDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZl
cmVuY2UtaHcuaHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgWyBG
YWlsdXJlIEltYWdlT25seUZhaWx1cmUgTWlzc2luZyBdCit3ZWJraXQub3JnL2IvMTAwMTQyIGNz
czMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1
cmUgXQorCiAjIFRoaXMgdGVzdCBpcyBwcm9iYWJseSBlaXRoZXIgRmFpbHVyZSBvciBJbWFnZU9u
bHlGYWlsdXJlIGRlcGVuZGluZyBvbiB3aGljaCBmb250cyBhcmUgaW5zdGFsbGVkLgogd2Via2l0
Lm9yZy9iLzk5NzQ5IFsgTW91bnRhaW5MaW9uIF0gZmFzdC90ZXh0L21pZHdvcmQtYnJlYWstYmVm
b3JlLXN1cnJvZ2F0ZS1wYWlyLmh0bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDMxMWYzYmMxMzk4
NDY3NDhiMmFhY2NhNDhkMmMyOTI2NTUyOWE0NGUuLjIwMmJmNTIzNGFiMjU0YTljZGYwNjMwOTY5
ZWY2Y2M3MmVmOTUyMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0xMTYxLDMgKzExNjEsNyBAQCBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy8gWyBT
a2lwIF0KIAogd2Via2l0Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIt
cGF1c2UtZGVkaWNhdGVkLXdvcmtlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTAwODQ2
IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci10ZXJtaW5hdGUtZGVkaWNhdGVkLXdvcmtlci13
aGlsZS1wYXVzZWQuaHRtbCBbIFNraXAgXQorCit3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLWh3Lmh0bWwgWyBGYWlsIF0KK3dlYmtpdC5vcmcvYi8xMDAx
NDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Utb3JkZXJpbmctaHcuaHRtbCBbIEZhaWwg
XQord2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS5odG1s
IFsgRmFpbCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>