<?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>178332</bug_id>
          
          <creation_ts>2017-10-16 00:27:47 -0700</creation_ts>
          <short_desc>Text nodes with display:contents parent should render as if they were wrapped in an unstyled &lt;span&gt;</short_desc>
          <delta_ts>2017-10-30 03:02:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157477</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>emilio</cc>
    
    <cc>jbedard</cc>
    
    <cc>jlewis3</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1360689</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-16 00:27:47 -0700</bug_when>
    <thetext>According to https://github.com/w3c/csswg-drafts/issues/1118

&lt;div style=&quot;display:contents;color:green&quot;&gt;text&lt;/div&gt;

must result in green text even though div doesn&apos;t generate a box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360690</commentid>
    <comment_count>1</comment_count>
      <attachid>323877</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-16 00:41:14 -0700</bug_when>
    <thetext>Created attachment 323877
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360705</commentid>
    <comment_count>2</comment_count>
      <attachid>323879</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-16 01:23:45 -0700</bug_when>
    <thetext>Created attachment 323879
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360868</commentid>
    <comment_count>3</comment_count>
      <attachid>323920</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-16 11:53:45 -0700</bug_when>
    <thetext>Created attachment 323920
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360941</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-16 13:46:29 -0700</bug_when>
    <thetext>This patch is currently killing every EWS bot that tries to process it, looking into it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360943</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-16 13:48:04 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; This patch is currently killing every EWS bot that tries to process it,
&gt; looking into it...

Antti has some serious power :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360944</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-16 13:50:57 -0700</bug_when>
    <thetext>There are multiple failures when running tests for this patch manually on the bot, not sure how real they are

[8914/45246] fast/css-generated-content/details-summary-before-after.html failed unexpectedly (text diff)
[13699/45246] fast/html/details-add-child-1.html failed unexpectedly (text diff)
[13788/45246] fast/html/details-add-child-2.html failed unexpectedly (text diff)
[13875/45246] fast/html/details-add-details-child-1.html failed unexpectedly (text diff)
[13963/45246] fast/html/details-add-details-child-2.html failed unexpectedly (text diff)
[14052/45246] fast/html/details-add-summary-1-and-click.html failed unexpectedly (text diff)
[14142/45246] fast/html/details-add-summary-1.html failed unexpectedly (text diff)
[14228/45246] fast/html/details-add-summary-2-and-click.html failed unexpectedly (text diff)
[14378/45246] fast/html/details-add-summary-2.html failed unexpectedly (text diff)
[14456/45246] fast/html/details-add-summary-3-and-click.html failed unexpectedly (text diff)
[14523/45246] fast/html/details-add-summary-3.html failed unexpectedly (text diff)
[14591/45246] fast/html/details-add-summary-4-and-click.html failed unexpectedly (text diff)
[14665/45246] fast/html/details-add-summary-4.html failed unexpectedly (text diff)
[14677/45246] fast/multicol/span/clone-anonymous-block-non-inline-child-crash.html failed unexpectedly (text diff)
[14713/45246] fast/html/details-add-summary-5-and-click.html failed unexpectedly (text diff)
[14738/45246] fast/multicol/span/clone-summary.html failed unexpectedly (text diff)
[14768/45246] fast/html/details-add-summary-5.html failed unexpectedly (text diff)
[14800/45246] fast/html/details-add-summary-6-and-click.html failed unexpectedly (text diff)
[14856/45246] fast/html/details-add-summary-6.html failed unexpectedly (text diff)
[14945/45246] fast/html/details-add-summary-7-and-click.html failed unexpectedly (text diff)
[15014/45246] fast/html/details-add-summary-7.html failed unexpectedly (text diff)
[15081/45246] fast/html/details-add-summary-8-and-click.html failed unexpectedly (text diff)
[15147/45246] fast/html/details-add-summary-8.html failed unexpectedly (text diff)
[15228/45246] fast/html/details-add-summary-9-and-click.html failed unexpectedly (text diff)
[15316/45246] fast/html/details-add-summary-9.html failed unexpectedly (text diff)
[15370/45246] fast/html/details-add-summary-10-and-click.html failed unexpectedly (text diff)
[15466/45246] fast/html/details-add-summary-10.html failed unexpectedly (text diff)
[15664/45246] fast/html/details-add-summary-child-1.html failed unexpectedly (text diff)
[15786/45246] fast/html/details-add-summary-child-2.html failed unexpectedly (text diff)
[16099/45246] fast/html/details-marker-style.html failed unexpectedly (text diff)
...
and then progress stops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360949</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-16 14:03:55 -0700</bug_when>
    <thetext>Looks like the problem is that a patch that causes more than 30 failures kills EWS bots now. There may be some other circumstances required to reproduce, Jonathan will take a look.

In the meanwhile, please don&apos;t post patches that break many tests ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360950</commentid>
    <comment_count>8</comment_count>
      <attachid>323920</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-16 14:04:25 -0700</bug_when>
    <thetext>Comment on attachment 323920
patch

Obsoleting the patch, so that it doesn&apos;t keep destroying EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360953</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-16 14:09:11 -0700</bug_when>
    <thetext>&gt; [8914/45246] fast/css-generated-content/details-summary-before-after.html
&gt; failed unexpectedly (text diff)
&gt; [13699/45246] fast/html/details-add-child-1.html failed unexpectedly (text
&gt; diff)
&gt; [13788/45246] fast/html/details-add-child-2.html failed unexpectedly (text
&gt; diff)
&gt; [13875/45246] fast/html/details-add-details-child-1.html failed unexpectedly
&gt; (text diff)

Wish there was a way to see this while the tests are still running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361169</commentid>
    <comment_count>10</comment_count>
      <attachid>324001</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-17 01:20:27 -0700</bug_when>
    <thetext>Created attachment 324001
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361175</commentid>
    <comment_count>11</comment_count>
      <attachid>324001</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-17 02:12:50 -0700</bug_when>
    <thetext>Comment on attachment 324001
patch

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

&gt; Source/WebCore/rendering/RenderElement.cpp:228
&gt; +        auto* textRendererWithDisplayContentsParent = RenderText::findForDisplayContentsInlineWrapper(rendererForFirstLineStyle);

Maybe we call this findByDisplayContentsInlineWrapperCandidate instead?

&gt; Source/WebCore/rendering/RenderText.cpp:137
&gt; +    static NeverDestroyed&lt;HashMap&lt;const RenderText*, WeakPtr&lt;RenderInline&gt;&gt;&gt; map;

It would be nice if we can make it so that nobody can possibly de-reference RenderText* so that it&apos;s UAF-safe
but that&apos;d require quite a bit of hash traits hackery... :(

&gt; Source/WebCore/rendering/RenderText.cpp:1761
&gt; +        inlineWrapperForDisplayContentsMap().remove(this);

Can we assert that the entry did exist in the map?

&gt; Source/WebCore/rendering/RenderText.cpp:1765
&gt; +    inlineWrapperForDisplayContentsMap().add(this, makeWeakPtr(wrapper));

Can we assert that this is isNewEntry?

&gt; LayoutTests/ChangeLog:10
&gt; +2017-10-16  Antti Koivisto  &lt;antti@apple.com&gt;

Double change log entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361190</commentid>
    <comment_count>12</comment_count>
      <attachid>324006</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-17 02:51:30 -0700</bug_when>
    <thetext>Created attachment 324006
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361197</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-17 02:57:36 -0700</bug_when>
    <thetext>*** Bug 177060 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361199</commentid>
    <comment_count>14</comment_count>
      <attachid>324006</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 03:18:22 -0700</bug_when>
    <thetext>Comment on attachment 324006
patch

Clearing flags on attachment: 324006

Committed r223514: &lt;https://trac.webkit.org/changeset/223514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361200</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-17 03:18:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361201</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-17 03:18:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/35026267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365890</commentid>
    <comment_count>17</comment_count>
      <attachid>324006</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-29 17:49:18 -0700</bug_when>
    <thetext>Comment on attachment 324006
patch

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

&gt; Source/WebCore/style/StyleUpdate.h:73
&gt; +    std::optional&lt;std::unique_ptr&lt;RenderStyle&gt;&gt; inheritedDisplayContentsStyle;

Seems a little strange to use std::optional&lt;std::unique_ptr&lt;&gt;&gt;; gives us both nullopt and nullptr, but do we really need both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365972</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-30 03:02:05 -0700</bug_when>
    <thetext>&gt; Seems a little strange to use std::optional&lt;std::unique_ptr&lt;&gt;&gt;; gives us
&gt; both nullopt and nullptr, but do we really need both?

Yeah, nullopt signals that we don&apos;t have a value and nullptr signals we have a value and it is null.

I did debate with myself about this vs using a separate bit. This looked better in code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323877</attachid>
            <date>2017-10-16 00:41:14 -0700</date>
            <delta_ts>2017-10-16 01:23:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>display-contents-anon-wrapper-6.patch</filename>
            <type>text/plain</type>
            <size>20546</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTEwLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlz
cGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBl
ZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFjY29yZGluZyB0byBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dn
LWRyYWZ0cy9pc3N1ZXMvMTExOAorCisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmNv
bnRlbnRzO2NvbG9yOmdyZWVuIj50ZXh0PC9kaXY+CisKKyAgICAgICAgbXVzdCByZXN1bHQgaW4g
Z3JlZW4gdGV4dCBldmVuIHRob3VnaCBkaXYgZG9lc24ndCBnZW5lcmF0ZSBhIGJveC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yIGJ5IHdyYXBwaW5nIHRleHQg
cmVuZGVyZXJzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgZWxlbWVudAorICAgICAgICBp
biBhbiBhbm9ueW1vdXMgaW5saW5lIHRoYXQgcmVjZWl2ZXMgaXRzIHN0eWxlIGJ5IGluaGVydGlu
ZyBmcm9tIHRoZSBwYXJlbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKworICAgICAgICAgICAgU3ludGhlc2l6
ZSB0aGUgZmlyc3QgbGluZSBzdHlsZSBpbiBkaXNwbGF5OmNvbnRlbnRzIHBhcmVudCBjYXNlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kRGVzdHJveVJvb3RJbmNsdWRpbmdBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveUNsZWFuaW5nVXBBbm9ueW1v
dXNXcmFwcGVycyk6CisKKyAgICAgICAgICAgIEdldCByaWQgb2YgdGhlIGFub255bW91cyB3cmFw
cGVyIGlmIGl0IGV4aXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6UmVuZGVyVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0OjpzZXRJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKToKKwor
ICAgICAgICAgICAgQWRkIGEgd2VhayBtZW1iZXIgKGltcGxlbWVudGVkIGFzIGEgcmFyZSBkYXRh
IG1hcCkgZm9yIGhvbGRpbmcgdGhlIHdyYXBwZXIgcG9pbnRlci4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIpOgorCisg
ICAgICAgICAgICBIZWxwZXIgdG8gZ2V0IHRoZSB0ZXh0IHJlbmRlcmVyIGZvciBhIHdyYXBwZXIu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHN0eWxlL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRleHRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJlbmRl
cmVyKToKKworICAgICAgICAgICAgQ3JlYXRlIHRoZSB3cmFwcGVyIGlmIG5lZWRlZC4KKworICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorCisgICAgICAgICAgICBD
b21wdXRlIHRoZSB3cmFwcGVyIHN0eWxlIGJ5IGluaGVyaXRpbmcgZnJvbSB0aGUgZGlzcGxheTpj
b250ZW50cyBwYXJlbnQuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlRleHRVcGRhdGU6OlRleHRVcGRhdGUpOgorCiAyMDE3LTEwLTE2
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHNv
bWUgU2Nyb2xsaW5nVHJlZU5vZGU6Om5vZGVUeXBlKCkgY2FsbHMgd2l0aCBpcypOb2RlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw3ICsxODcxLDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIAogICAgIFNldEZvclNj
b3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1ZSk7
CiAKICAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRhdGU+
KCp0aGlzKTsKLSAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNl
ZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0IH0pOworICAgIHRleHRVcGRhdGUtPmFkZFRleHQo
dGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIHN0ZDo6
bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0
aGlzKTsKICAgICByZW5kZXJUcmVlVXBkYXRlci5jb21taXQoV1RGTW92ZSh0ZXh0VXBkYXRlKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDMwIEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZmlyc3RMaW5lU3R5bGUpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLmlzQW5vbnltb3VzKCkgfHwgIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNS
ZW5kZXJJbmxpbmUoKSkKKyAgICBpZiAoIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNSZW5k
ZXJJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBwYXJlbnRT
dHlsZSA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUucGFyZW50KCktPmZpcnN0TGluZVN0eWxl
KCk7CiAgICAgaWYgKCZwYXJlbnRTdHlsZSA9PSAmcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5w
YXJlbnQoKS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAocmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc0Fub255bW91cygpKSB7CisgICAgICAgIGF1dG8qIHRl
eHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQYXJlbnQgPSBSZW5kZXJUZXh0OjpmaW5kRm9y
RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlcihyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlKTsK
KyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIGNvbXBvc2VkVHJlZVBhcmVu
dEVsZW1lbnQgPSB0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50LT50ZXh0Tm9k
ZSgpLT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICAgICAgaWYgKCFjb21wb3Nl
ZFRyZWVQYXJlbnRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZwYXJlbnRTdHls
ZSkucmVuZGVyU3R5bGU7CisgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IENPTlRF
TlRTKTsKKworICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxz
cGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVy
aXRhbmNlLgorICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZVB0cigpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKKyAg
ICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlOworICAgIH0KKwogICAgIHJldHVybiByZW5kZXJl
ckZvckZpcnN0TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqZWxlbWVudCgpLCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzMjc5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NTUsMTUgKzE0NTUsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxCZVJl
bW92ZWRGcm9tVHJlZQogICAgIHBhcmVudCgpLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsK
IH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95Q2xlYW5p
bmdVcEFub255bW91c1dyYXBwZXJzKCkKK3N0YXRpYyBSZW5kZXJPYmplY3QmIGZpbmREZXN0cm95
Um9vdEluY2x1ZGluZ0Fub255bW91cyhSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIC8v
IElmIHRoZSB0cmVlIGlzIGRlc3Ryb3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11
cCBwaGFzZS4KLSAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKLSAgICAgICAg
cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBhdXRvKiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gaXM8UmVuZGVyVGV4dD4o
cmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmlubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvKiBkZXN0cm95Um9vdCA9
IHRoaXM7CisgICAgYXV0byogZGVzdHJveVJvb3QgPSBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNv
bnRlbnRzID8gaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA6ICZyZW5kZXJlcjsKICAg
ICBhdXRvKiBkZXN0cm95Um9vdFBhcmVudCA9IGRlc3Ryb3lSb290LT5wYXJlbnQoKTsKICAgICB3
aGlsZSAoZGVzdHJveVJvb3RQYXJlbnQgJiYgZGVzdHJveVJvb3RQYXJlbnQtPmlzQW5vbnltb3Vz
KCkpIHsKICAgICAgICAgaWYgKCFkZXN0cm95Um9vdFBhcmVudC0+aXNUYWJsZUNlbGwoKSAmJiAh
ZGVzdHJveVJvb3RQYXJlbnQtPmlzVGFibGVSb3coKQpAQCAtMTQ3NSwxMSArMTQ3MSwyMyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlCiAgICAgICAgIGRlc3Ryb3lS
b290ID0gZGVzdHJveVJvb3RQYXJlbnQ7CiAgICAgICAgIGRlc3Ryb3lSb290UGFyZW50ID0gZGVz
dHJveVJvb3RQYXJlbnQtPnBhcmVudCgpOwogICAgIH0KKyAgICByZXR1cm4gKmRlc3Ryb3lSb290
OworfQorCit2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVh
bmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoKQoreworICAgIC8vIElmIHRoZSB0cmVlIGlzIGRlc3Ry
b3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11cCBwaGFzZS4KKyAgICBpZiAocmVu
ZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKKyAgICAgICAgcmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGRlc3Ryb3lSb290
ID0gZmluZERlc3Ryb3lSb290SW5jbHVkaW5nQW5vbnltb3VzKCp0aGlzKTsKIAotICAgIGlmIChp
czxSZW5kZXJUYWJsZVJvdz4oKmRlc3Ryb3lSb290KSkKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVy
VGFibGVSb3c+KCpkZXN0cm95Um9vdCkuY29sbGFwc2VBbmREZXN0cm95QW5vbnltb3VzU2libGlu
Z1Jvd3MoKTsKKyAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KSkKKyAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KS5jb2xsYXBzZUFuZERlc3Ry
b3lBbm9ueW1vdXNTaWJsaW5nUm93cygpOwogCi0gICAgZGVzdHJveVJvb3QtPnJlbW92ZUZyb21Q
YXJlbnRBbmREZXN0cm95KCk7CisgICAgZGVzdHJveVJvb3QucmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKICAgICAvLyBXQVJOSU5HOiB8dGhpc3wgaXMgZGVsZXRlZCBoZXJlLgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMjMy
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyVGV4
dCosIFN0cmluZwogICAgIHJldHVybiBtYXA7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJl
bmRlclRleHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+JiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25z
dCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+Pj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CisKIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2
aW91cykKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJU
b1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCkBAIC0x
ODMsNiArMTg5LDcgQEAgaW5saW5lIFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYgbm9kZQog
ICAgICwgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMoZmFsc2UpCiAg
ICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9vcmlnaW5hbFRl
eHREaWZmZXJzRnJvbVJlbmRlcmVkKGZhbHNlKQorICAgICwgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzKGZhbHNlKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
LCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoMCkKICNlbmRpZgpAQCAtMjkxLDYgKzI5OCw4
IEBAIHZvaWQgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIGlmIChtX29yaWdp
bmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQpCiAgICAgICAgIG9yaWdpbmFsVGV4dE1hcCgpLnJl
bW92ZSh0aGlzKTsKKyAgICBpZiAobV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRz
KQorICAgICAgICBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkucmVtb3ZlKHRo
aXMpOwogCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KQEAgLTE3Mzcs
NCArMTc0NiwzOCBAQCBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduCiAg
ICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRpb24g
LSBzdGFydCk7CiB9CiAKK1JlbmRlcklubGluZSogUmVuZGVyVGV4dDo6aW5saW5lV3JhcHBlckZv
ckRpc3BsYXlDb250ZW50cygpCit7CisgICAgaWYgKCFtX2hhc0lubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkuZ2V0KHRoaXMpLmdldCgpOworfQorCit2b2lk
IFJlbmRlclRleHQ6OnNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5s
aW5lKiB3cmFwcGVyKQoreworICAgIGlmICghd3JhcHBlcikgeworICAgICAgICBpZiAoIW1faGFz
SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50c01hcCgpLnJlbW92ZSh0aGlzKTsK
KyAgICAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50
c01hcCgpLmFkZCh0aGlzLCBtYWtlV2Vha1B0cih3cmFwcGVyKSk7CisgICAgbV9oYXNJbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKK30KKworUmVuZGVyVGV4dCogUmVuZGVy
VGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIpCit7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQo
KTsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
Zmlyc3RDaGlsZCk7CisgICAgaWYgKHRleHRSZW5kZXJlci5pbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBB
U1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOworICAgIEFTU0VSVChyZW5kZXJlci5maXJz
dENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOworICAgIHJldHVybiAmdGV4dFJlbmRl
cmVyOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDYgKzE3OSwxMSBA
QCBwdWJsaWM6CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IGRy
YWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHModW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKKyAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMoKTsKKyAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMoUmVuZGVySW5saW5lKik7CisKKyAgICBzdGF0aWMgUmVuZGVyVGV4dCogZmlu
ZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYpOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZs
b2F0IGxlYWRXaWR0aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAg
LTIzMyw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9rbm93blRv
SGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgOiAxOwogICAgIHVuc2lnbmVkIG1fdXNl
QmFja3NsYXNoQXNZZW5TeW1ib2wgOiAxOwogICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxUZXh0RGlm
ZmVyc0Zyb21SZW5kZXJlZCA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2NhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nIDogMTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNj
cmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJ
dGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgpAQCAtNDI2LDI2ICs0Mjcs
NDggQEAgc3RhdGljIGJvb2wgdGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVAogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dE5v
ZGUsIFJlbmRlclRyZWVQb3NpdGlvbiYgcmVuZGVyVHJlZVBvc2l0aW9uKQorc3RhdGljIHZvaWQg
Y3JlYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHROb2RlLCBSZW5kZXJUcmVlUG9zaXRpb24mIHJl
bmRlclRyZWVQb3NpdGlvbiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUqIHRleHRVcGRhdGUpCiB7
CiAgICAgQVNTRVJUKCF0ZXh0Tm9kZS5yZW5kZXJlcigpKTsKIAotICAgIGF1dG8gbmV3UmVuZGVy
ZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBhcmVu
dCgpLnN0eWxlKCkpOwotICAgIEFTU0VSVChuZXdSZW5kZXJlcik7CisgICAgYXV0byB0ZXh0UmVu
ZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBh
cmVudCgpLnN0eWxlKCkpOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uLmNvbXB1dGVOZXh0U2li
bGluZyh0ZXh0Tm9kZSk7CiAKLSAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQo
Km5ld1JlbmRlcmVyKSkKKyAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQoKnRl
eHRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRleHROb2RlLnNldFJlbmRlcmVy
KG5ld1JlbmRlcmVyLmdldCgpKTsKLSAgICByZW5kZXJUcmVlUG9zaXRpb24uaW5zZXJ0KFdURk1v
dmUobmV3UmVuZGVyZXIpKTsKKyAgICB0ZXh0Tm9kZS5zZXRSZW5kZXJlcih0ZXh0UmVuZGVyZXIu
Z2V0KCkpOworCisgICAgaWYgKHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlz
cGxheUNvbnRlbnRzU3R5bGUgJiYgKnRleHRVcGRhdGUtPmluaGVyaXRlZERpc3BsYXlDb250ZW50
c1N0eWxlKSB7CisgICAgICAgIC8vIFdyYXAgdGV4dCByZW5kZXJlciBpbnRvIGFub255bW91cyBp
bmxpbmUgc28gd2UgY2FuIGdpdmUgaXQgYSBzdHlsZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0byBz
dXBwb3J0ICI8ZGl2IHN0eWxlPSdkaXNwbGF5OmNvbnRlbnRzO2NvbG9yOmdyZWVuJz50ZXh0PC9k
aXY+IiB0eXBlIGNhc2VzCisgICAgICAgIGF1dG8gbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3Vz
V3JhcHBlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4odGV4dE5vZGUuZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNsb25lKCoqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUpKTsKKyAgICAgICAgbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlci0+
aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50c0Fub255bW91
c1dyYXBwZXIgPSAqbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlcjsKKyAgICAgICAg
cmVuZGVyVHJlZVBvc2l0aW9uLmluc2VydChXVEZNb3ZlKG5ld0Rpc3BsYXlDb250ZW50c0Fub255
bW91c1dyYXBwZXIpKTsKKworICAgICAgICB0ZXh0UmVuZGVyZXItPnNldElubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoJmRpc3BsYXlDb250ZW50c0Fub255bW91c1dyYXBwZXIpOworICAg
ICAgICBkaXNwbGF5Q29udGVudHNBbm9ueW1vdXNXcmFwcGVyLmFkZENoaWxkKFdURk1vdmUodGV4
dFJlbmRlcmVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZW5kZXJUcmVlUG9z
aXRpb24uaW5zZXJ0KFdURk1vdmUodGV4dFJlbmRlcmVyKSk7CiB9CiAKIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCBjb25zdCBTdHlsZTo6VGV4
dFVwZGF0ZSogdGV4dFVwZGF0ZSkKIHsKICAgICBhdXRvKiBleGlzdGluZ1JlbmRlcmVyID0gdGV4
dC5yZW5kZXJlcigpOwogICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHRleHRSZW5kZXJlcklzTmVl
ZGVkKHRleHQsIHJlbmRlclRyZWVQb3NpdGlvbigpKTsKKworICAgIGlmIChleGlzdGluZ1JlbmRl
cmVyICYmIHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nUmVuZGVyZXItPmlubGluZVdyYXBwZXJGb3JE
aXNwbGF5Q29udGVudHMoKSB8fCAqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB1cGRhdGUgd2l0aG91dCB0
ZWFyZG93bi4KKyAgICAgICAgICAgIHRlYXJEb3duUmVuZGVyZXIodGV4dCk7CisgICAgICAgICAg
ICBleGlzdGluZ1JlbmRlcmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlm
IChleGlzdGluZ1JlbmRlcmVyKSB7CiAgICAgICAgIGlmIChuZWVkc1JlbmRlcmVyKSB7CiAgICAg
ICAgICAgICBpZiAodGV4dFVwZGF0ZSkKQEAgLTQ1OCw3ICs0ODEsNyBAQCB2b2lkIFJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVUZXh0UmVuZGVyCiAgICAgfQogICAgIGlmICghbmVlZHNSZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwotICAgIGNyZWF0ZVRleHRSZW5kZXJlcih0ZXh0LCByZW5kZXJU
cmVlUG9zaXRpb24oKSk7CisgICAgY3JlYXRlVGV4dFJlbmRlcmVyKHRleHQsIHJlbmRlclRyZWVQ
b3NpdGlvbigpLCB0ZXh0VXBkYXRlKTsKICAgICBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0
U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKHRleHQpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3NCw4ICszNzQsMTUgQEAgdm9pZCBUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRy
ZWUoKQogCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAgICAgICAgICAgYXV0byYg
dGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwotICAgICAgICAgICAgaWYgKHRleHQuc3R5bGVW
YWxpZGl0eSgpID49IFZhbGlkaXR5OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJl
bnQuY2hhbmdlICE9IERldGFjaCkKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZS0+YWRkVGV4dCh0
ZXh0LCBwYXJlbnQuZWxlbWVudCwgeyB9KTsKKyAgICAgICAgICAgIGlmICgodGV4dC5zdHlsZVZh
bGlkaXR5KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJlcnNJbnZhbGlkICYmIHBhcmVu
dC5jaGFuZ2UgIT0gRGV0YWNoKSB8fCBwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRT
KSB7CisgICAgICAgICAgICAgICAgVGV4dFVwZGF0ZSB0ZXh0VXBkYXRlOworICAgICAgICAgICAg
ICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRTKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIENvbXB1dGUgc3R5bGUgZm9yIGltYWdpbmFyeSB1bnN0eWxlZCA8c3Bhbj4g
YXJvdW5kIHRoZSB0ZXh0IG5vZGUuCisgICAgICAgICAgICAgICAgICAgIHRleHRVcGRhdGUuaW5o
ZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHRVcGRhdGUuaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5
bGUudmFsdWUoKS0+aW5oZXJpdEZyb20ocGFyZW50LnN0eWxlKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZFRleHQodGV4dCwgcGFyZW50LmVsZW1lbnQs
IFdURk1vdmUodGV4dFVwZGF0ZSkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0ZXh0
LnNldEhhc1ZhbGlkU3R5bGUoKTsKICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5n
Q2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAkocmV2aXNpb24g
MjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsMTUgKzYwLDE3IEBAIHN0cnVjdCBFbGVtZW50VXBkYXRlIHsKIHN0cnVjdCBU
ZXh0VXBkYXRlIHsKICNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMp
CiAgICAgVGV4dFVwZGF0ZSgpID0gZGVmYXVsdDsKLSAgICBUZXh0VXBkYXRlKHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFRleHRVcGRhdGUodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pj4gaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGUpCiAgICAgICAgIDogb2Zmc2V0IHsgb2Zm
c2V0IH0KICAgICAgICAgLCBsZW5ndGggeyBsZW5ndGggfQorICAgICAgICAsIGluaGVyaXRlZERp
c3BsYXlDb250ZW50c1N0eWxlIHsgV1RGTW92ZShpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHls
ZSkgfQogICAgIHsKICAgICB9CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsK
ICAgICB1bnNpZ25lZCBsZW5ndGggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4+IGlu
aGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlOwogfTsKIAogY2xhc3MgVXBkYXRlIHsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMzI3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlzcGxheTpjb250ZW50cyBw
YXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBlZCBpbiBhbiB1bnN0eWxl
ZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczogMTAgbW9yZSBkaXNwbGF5OmNvbnRlbnRzIHRlc3RzIHBhc3Mu
CisKIDIwMTctMTAtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgInRleHQvaHRtbCIgZGF0YSBpcyBub3QgZXhwb3NlZCB3aGVuIGRyYWdnaW5nIGFu
ZCBkcm9wcGluZyBhY3Jvc3Mgb3JpZ2lucwpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAyMjMyNzkpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjc3LDMwICsxMjc3LDIwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvbm8KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBT
VEFSVCBPRiBkaXNwbGF5OiBjb250ZW50cyBmYWlsdXJlcwogCi13ZWJraXQub3JnL2IvMTU3NDc3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxh
eS1jb250ZW50cy1saXN0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5
LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAwMi1pbmxpbmUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtaW5saW5lLWZsZXgt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRl
bnRzLWR5bmFtaWMtYmVmb3JlLWFmdGVyLWZpcnN0LWxldHRlci0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1iZWZvcmUt
YWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0Nzcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5
LWNvbnRlbnRzLWR5bmFtaWMtdGFibGUtMDAyLW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZmxleC0wMDMuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtdGFibGUtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWJlZm9y
ZS1hZnRlci0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3Bs
YXktY29udGVudHMtdGFibGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3Bs
YXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtaW5saW5lLWZsZXgtMDAxLW5vbmUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1p
Yy10YWJsZS0wMDEtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXkt
My9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtZmxleC0wMDItbm9uZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1mbGV4LTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1iZWZvcmUt
YWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0Nzcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5
LWZsb3ctcm9vdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1pbmxpbmUtZmxleC0wMDEtaW5saW5lLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtZmxl
eC0wMDMtbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxh
eS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAwMS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLXN0YXRlLWNoYW5nZS0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1p
Yy1mbGV4LTAwMi1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0z
L2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4LTAwMy1pbmxpbmUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1saXN0LTAw
MS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXkt
Y29udGVudHMtZHluYW1pYy1saXN0LTAwMS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IAogIyMjIEVORCBPRiBkaXNwbGF5OiBjb250ZW50cyBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323879</attachid>
            <date>2017-10-16 01:23:45 -0700</date>
            <delta_ts>2017-10-16 11:53:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>display-contents-anon-wrapper-7.patch</filename>
            <type>text/plain</type>
            <size>20861</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTEwLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlz
cGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBl
ZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFjY29yZGluZyB0byBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dn
LWRyYWZ0cy9pc3N1ZXMvMTExOAorCisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmNv
bnRlbnRzO2NvbG9yOmdyZWVuIj50ZXh0PC9kaXY+CisKKyAgICAgICAgbXVzdCByZXN1bHQgaW4g
Z3JlZW4gdGV4dCBldmVuIHRob3VnaCBkaXYgZG9lc24ndCBnZW5lcmF0ZSBhIGJveC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yIGJ5IHdyYXBwaW5nIHRleHQg
cmVuZGVyZXJzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgZWxlbWVudAorICAgICAgICBp
biBhbiBhbm9ueW1vdXMgaW5saW5lIHRoYXQgcmVjZWl2ZXMgaXRzIHN0eWxlIGJ5IGluaGVydGlu
ZyBmcm9tIHRoZSBwYXJlbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKworICAgICAgICAgICAgU3ludGhlc2l6
ZSB0aGUgZmlyc3QgbGluZSBzdHlsZSBpbiBkaXNwbGF5OmNvbnRlbnRzIHBhcmVudCBjYXNlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kRGVzdHJveVJvb3RJbmNsdWRpbmdBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveUNsZWFuaW5nVXBBbm9ueW1v
dXNXcmFwcGVycyk6CisKKyAgICAgICAgICAgIEdldCByaWQgb2YgdGhlIGFub255bW91cyB3cmFw
cGVyIGlmIGl0IGV4aXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6UmVuZGVyVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0OjpzZXRJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKToKKwor
ICAgICAgICAgICAgQWRkIGEgd2VhayBtZW1iZXIgKGltcGxlbWVudGVkIGFzIGEgcmFyZSBkYXRh
IG1hcCkgZm9yIGhvbGRpbmcgdGhlIHdyYXBwZXIgcG9pbnRlci4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIpOgorCisg
ICAgICAgICAgICBIZWxwZXIgdG8gZ2V0IHRoZSB0ZXh0IHJlbmRlcmVyIGZvciBhIHdyYXBwZXIu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHN0eWxlL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRleHRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJlbmRl
cmVyKToKKworICAgICAgICAgICAgQ3JlYXRlIHRoZSB3cmFwcGVyIGlmIG5lZWRlZC4KKworICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorCisgICAgICAgICAgICBD
b21wdXRlIHRoZSB3cmFwcGVyIHN0eWxlIGJ5IGluaGVyaXRpbmcgZnJvbSB0aGUgZGlzcGxheTpj
b250ZW50cyBwYXJlbnQuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlRleHRVcGRhdGU6OlRleHRVcGRhdGUpOgorCiAyMDE3LTEwLTE2
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHNv
bWUgU2Nyb2xsaW5nVHJlZU5vZGU6Om5vZGVUeXBlKCkgY2FsbHMgd2l0aCBpcypOb2RlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw3ICsxODcxLDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIAogICAgIFNldEZvclNj
b3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1ZSk7
CiAKICAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRhdGU+
KCp0aGlzKTsKLSAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNl
ZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0IH0pOworICAgIHRleHRVcGRhdGUtPmFkZFRleHQo
dGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIHN0ZDo6
bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0
aGlzKTsKICAgICByZW5kZXJUcmVlVXBkYXRlci5jb21taXQoV1RGTW92ZSh0ZXh0VXBkYXRlKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDMwIEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZmlyc3RMaW5lU3R5bGUpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLmlzQW5vbnltb3VzKCkgfHwgIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNS
ZW5kZXJJbmxpbmUoKSkKKyAgICBpZiAoIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNSZW5k
ZXJJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBwYXJlbnRT
dHlsZSA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUucGFyZW50KCktPmZpcnN0TGluZVN0eWxl
KCk7CiAgICAgaWYgKCZwYXJlbnRTdHlsZSA9PSAmcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5w
YXJlbnQoKS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAocmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc0Fub255bW91cygpKSB7CisgICAgICAgIGF1dG8qIHRl
eHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQYXJlbnQgPSBSZW5kZXJUZXh0OjpmaW5kRm9y
RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlcihyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlKTsK
KyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIGNvbXBvc2VkVHJlZVBhcmVu
dEVsZW1lbnQgPSB0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50LT50ZXh0Tm9k
ZSgpLT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICAgICAgaWYgKCFjb21wb3Nl
ZFRyZWVQYXJlbnRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZwYXJlbnRTdHls
ZSkucmVuZGVyU3R5bGU7CisgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IENPTlRF
TlRTKTsKKworICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxz
cGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVy
aXRhbmNlLgorICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZVB0cigpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKKyAg
ICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlOworICAgIH0KKwogICAgIHJldHVybiByZW5kZXJl
ckZvckZpcnN0TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqZWxlbWVudCgpLCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzMjc5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NTUsMTUgKzE0NTUsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxCZVJl
bW92ZWRGcm9tVHJlZQogICAgIHBhcmVudCgpLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsK
IH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95Q2xlYW5p
bmdVcEFub255bW91c1dyYXBwZXJzKCkKK3N0YXRpYyBSZW5kZXJPYmplY3QmIGZpbmREZXN0cm95
Um9vdEluY2x1ZGluZ0Fub255bW91cyhSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIC8v
IElmIHRoZSB0cmVlIGlzIGRlc3Ryb3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11
cCBwaGFzZS4KLSAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKLSAgICAgICAg
cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBhdXRvKiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gaXM8UmVuZGVyVGV4dD4o
cmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmlubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvKiBkZXN0cm95Um9vdCA9
IHRoaXM7CisgICAgYXV0byogZGVzdHJveVJvb3QgPSBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNv
bnRlbnRzID8gaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA6ICZyZW5kZXJlcjsKICAg
ICBhdXRvKiBkZXN0cm95Um9vdFBhcmVudCA9IGRlc3Ryb3lSb290LT5wYXJlbnQoKTsKICAgICB3
aGlsZSAoZGVzdHJveVJvb3RQYXJlbnQgJiYgZGVzdHJveVJvb3RQYXJlbnQtPmlzQW5vbnltb3Vz
KCkpIHsKICAgICAgICAgaWYgKCFkZXN0cm95Um9vdFBhcmVudC0+aXNUYWJsZUNlbGwoKSAmJiAh
ZGVzdHJveVJvb3RQYXJlbnQtPmlzVGFibGVSb3coKQpAQCAtMTQ3NSwxMSArMTQ3MSwyMyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlCiAgICAgICAgIGRlc3Ryb3lS
b290ID0gZGVzdHJveVJvb3RQYXJlbnQ7CiAgICAgICAgIGRlc3Ryb3lSb290UGFyZW50ID0gZGVz
dHJveVJvb3RQYXJlbnQtPnBhcmVudCgpOwogICAgIH0KKyAgICByZXR1cm4gKmRlc3Ryb3lSb290
OworfQorCit2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVh
bmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoKQoreworICAgIC8vIElmIHRoZSB0cmVlIGlzIGRlc3Ry
b3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11cCBwaGFzZS4KKyAgICBpZiAocmVu
ZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKKyAgICAgICAgcmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGRlc3Ryb3lSb290
ID0gZmluZERlc3Ryb3lSb290SW5jbHVkaW5nQW5vbnltb3VzKCp0aGlzKTsKIAotICAgIGlmIChp
czxSZW5kZXJUYWJsZVJvdz4oKmRlc3Ryb3lSb290KSkKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVy
VGFibGVSb3c+KCpkZXN0cm95Um9vdCkuY29sbGFwc2VBbmREZXN0cm95QW5vbnltb3VzU2libGlu
Z1Jvd3MoKTsKKyAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KSkKKyAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KS5jb2xsYXBzZUFuZERlc3Ry
b3lBbm9ueW1vdXNTaWJsaW5nUm93cygpOwogCi0gICAgZGVzdHJveVJvb3QtPnJlbW92ZUZyb21Q
YXJlbnRBbmREZXN0cm95KCk7CisgICAgZGVzdHJveVJvb3QucmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKICAgICAvLyBXQVJOSU5HOiB8dGhpc3wgaXMgZGVsZXRlZCBoZXJlLgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMjMy
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyVGV4
dCosIFN0cmluZwogICAgIHJldHVybiBtYXA7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJl
bmRlclRleHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+JiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25z
dCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+Pj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CisKIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2
aW91cykKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJU
b1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCkBAIC0x
ODMsNiArMTg5LDcgQEAgaW5saW5lIFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYgbm9kZQog
ICAgICwgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMoZmFsc2UpCiAg
ICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9vcmlnaW5hbFRl
eHREaWZmZXJzRnJvbVJlbmRlcmVkKGZhbHNlKQorICAgICwgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzKGZhbHNlKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
LCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoMCkKICNlbmRpZgpAQCAtMjkxLDYgKzI5OCw4
IEBAIHZvaWQgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIGlmIChtX29yaWdp
bmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQpCiAgICAgICAgIG9yaWdpbmFsVGV4dE1hcCgpLnJl
bW92ZSh0aGlzKTsKKyAgICBpZiAobV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRz
KQorICAgICAgICBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkucmVtb3ZlKHRo
aXMpOwogCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KQEAgLTE3Mzcs
NCArMTc0NiwzOCBAQCBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduCiAg
ICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRpb24g
LSBzdGFydCk7CiB9CiAKK1JlbmRlcklubGluZSogUmVuZGVyVGV4dDo6aW5saW5lV3JhcHBlckZv
ckRpc3BsYXlDb250ZW50cygpCit7CisgICAgaWYgKCFtX2hhc0lubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkuZ2V0KHRoaXMpLmdldCgpOworfQorCit2b2lk
IFJlbmRlclRleHQ6OnNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5s
aW5lKiB3cmFwcGVyKQoreworICAgIGlmICghd3JhcHBlcikgeworICAgICAgICBpZiAoIW1faGFz
SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50c01hcCgpLnJlbW92ZSh0aGlzKTsK
KyAgICAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50
c01hcCgpLmFkZCh0aGlzLCBtYWtlV2Vha1B0cih3cmFwcGVyKSk7CisgICAgbV9oYXNJbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKK30KKworUmVuZGVyVGV4dCogUmVuZGVy
VGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIpCit7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQo
KTsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
Zmlyc3RDaGlsZCk7CisgICAgaWYgKHRleHRSZW5kZXJlci5pbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBB
U1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOworICAgIEFTU0VSVChyZW5kZXJlci5maXJz
dENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOworICAgIHJldHVybiAmdGV4dFJlbmRl
cmVyOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDYgKzE3OSwxMSBA
QCBwdWJsaWM6CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IGRy
YWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHModW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKKyAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMoKTsKKyAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMoUmVuZGVySW5saW5lKik7CisKKyAgICBzdGF0aWMgUmVuZGVyVGV4dCogZmlu
ZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYpOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZs
b2F0IGxlYWRXaWR0aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAg
LTIzMyw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9rbm93blRv
SGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgOiAxOwogICAgIHVuc2lnbmVkIG1fdXNl
QmFja3NsYXNoQXNZZW5TeW1ib2wgOiAxOwogICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxUZXh0RGlm
ZmVyc0Zyb21SZW5kZXJlZCA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2NhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nIDogMTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNj
cmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJ
dGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgpAQCAtNDI2LDI2ICs0Mjcs
NDggQEAgc3RhdGljIGJvb2wgdGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVAogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dE5v
ZGUsIFJlbmRlclRyZWVQb3NpdGlvbiYgcmVuZGVyVHJlZVBvc2l0aW9uKQorc3RhdGljIHZvaWQg
Y3JlYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHROb2RlLCBSZW5kZXJUcmVlUG9zaXRpb24mIHJl
bmRlclRyZWVQb3NpdGlvbiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUqIHRleHRVcGRhdGUpCiB7
CiAgICAgQVNTRVJUKCF0ZXh0Tm9kZS5yZW5kZXJlcigpKTsKIAotICAgIGF1dG8gbmV3UmVuZGVy
ZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBhcmVu
dCgpLnN0eWxlKCkpOwotICAgIEFTU0VSVChuZXdSZW5kZXJlcik7CisgICAgYXV0byB0ZXh0UmVu
ZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBh
cmVudCgpLnN0eWxlKCkpOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uLmNvbXB1dGVOZXh0U2li
bGluZyh0ZXh0Tm9kZSk7CiAKLSAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQo
Km5ld1JlbmRlcmVyKSkKKyAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQoKnRl
eHRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRleHROb2RlLnNldFJlbmRlcmVy
KG5ld1JlbmRlcmVyLmdldCgpKTsKLSAgICByZW5kZXJUcmVlUG9zaXRpb24uaW5zZXJ0KFdURk1v
dmUobmV3UmVuZGVyZXIpKTsKKyAgICB0ZXh0Tm9kZS5zZXRSZW5kZXJlcih0ZXh0UmVuZGVyZXIu
Z2V0KCkpOworCisgICAgaWYgKHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlz
cGxheUNvbnRlbnRzU3R5bGUgJiYgKnRleHRVcGRhdGUtPmluaGVyaXRlZERpc3BsYXlDb250ZW50
c1N0eWxlKSB7CisgICAgICAgIC8vIFdyYXAgdGV4dCByZW5kZXJlciBpbnRvIGFub255bW91cyBp
bmxpbmUgc28gd2UgY2FuIGdpdmUgaXQgYSBzdHlsZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0byBz
dXBwb3J0ICI8ZGl2IHN0eWxlPSdkaXNwbGF5OmNvbnRlbnRzO2NvbG9yOmdyZWVuJz50ZXh0PC9k
aXY+IiB0eXBlIGNhc2VzCisgICAgICAgIGF1dG8gbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3Vz
V3JhcHBlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4odGV4dE5vZGUuZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNsb25lKCoqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUpKTsKKyAgICAgICAgbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlci0+
aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50c0Fub255bW91
c1dyYXBwZXIgPSAqbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlcjsKKyAgICAgICAg
cmVuZGVyVHJlZVBvc2l0aW9uLmluc2VydChXVEZNb3ZlKG5ld0Rpc3BsYXlDb250ZW50c0Fub255
bW91c1dyYXBwZXIpKTsKKworICAgICAgICB0ZXh0UmVuZGVyZXItPnNldElubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoJmRpc3BsYXlDb250ZW50c0Fub255bW91c1dyYXBwZXIpOworICAg
ICAgICBkaXNwbGF5Q29udGVudHNBbm9ueW1vdXNXcmFwcGVyLmFkZENoaWxkKFdURk1vdmUodGV4
dFJlbmRlcmVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZW5kZXJUcmVlUG9z
aXRpb24uaW5zZXJ0KFdURk1vdmUodGV4dFJlbmRlcmVyKSk7CiB9CiAKIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCBjb25zdCBTdHlsZTo6VGV4
dFVwZGF0ZSogdGV4dFVwZGF0ZSkKIHsKICAgICBhdXRvKiBleGlzdGluZ1JlbmRlcmVyID0gdGV4
dC5yZW5kZXJlcigpOwogICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHRleHRSZW5kZXJlcklzTmVl
ZGVkKHRleHQsIHJlbmRlclRyZWVQb3NpdGlvbigpKTsKKworICAgIGlmIChleGlzdGluZ1JlbmRl
cmVyICYmIHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nUmVuZGVyZXItPmlubGluZVdyYXBwZXJGb3JE
aXNwbGF5Q29udGVudHMoKSB8fCAqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB1cGRhdGUgd2l0aG91dCB0
ZWFyZG93bi4KKyAgICAgICAgICAgIHRlYXJEb3duUmVuZGVyZXIodGV4dCk7CisgICAgICAgICAg
ICBleGlzdGluZ1JlbmRlcmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlm
IChleGlzdGluZ1JlbmRlcmVyKSB7CiAgICAgICAgIGlmIChuZWVkc1JlbmRlcmVyKSB7CiAgICAg
ICAgICAgICBpZiAodGV4dFVwZGF0ZSkKQEAgLTQ1OCw3ICs0ODEsNyBAQCB2b2lkIFJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVUZXh0UmVuZGVyCiAgICAgfQogICAgIGlmICghbmVlZHNSZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwotICAgIGNyZWF0ZVRleHRSZW5kZXJlcih0ZXh0LCByZW5kZXJU
cmVlUG9zaXRpb24oKSk7CisgICAgY3JlYXRlVGV4dFJlbmRlcmVyKHRleHQsIHJlbmRlclRyZWVQ
b3NpdGlvbigpLCB0ZXh0VXBkYXRlKTsKICAgICBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0
U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKHRleHQpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1MCw2ICszNTAsMTYgQEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxlc2hlZXQoY29u
c3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGVJZk5lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCit7CisgICAgaWYgKHBhcmVudFN0eWxlLmRpc3Bs
YXkoKSAhPSBDT05URU5UUykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gQ29tcHV0
ZSBzdHlsZSBmb3IgaW1hZ2luYXJ5IHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQgbm9k
ZS4KKyAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOworICAgIHN0eWxl
LT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CisgICAgcmV0dXJuIHN0eWxlOworfQorCiB2b2lk
IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFy
ZW50U3RhY2suc2l6ZSgpID09IDEpOwpAQCAtMzc0LDggKzM4NCwxMyBAQCB2b2lkIFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAKICAgICAgICAgaWYgKGlzPFRleHQ+KG5vZGUp
KSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7Ci0gICAg
ICAgICAgICBpZiAodGV4dC5zdHlsZVZhbGlkaXR5KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRS
ZW5kZXJlcnNJbnZhbGlkICYmIHBhcmVudC5jaGFuZ2UgIT0gRGV0YWNoKQotICAgICAgICAgICAg
ICAgIG1fdXBkYXRlLT5hZGRUZXh0KHRleHQsIHBhcmVudC5lbGVtZW50LCB7IH0pOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5
OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkg
fHwgcGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgICAgICAgICAgICAg
IFRleHRVcGRhdGUgdGV4dFVwZGF0ZTsKKyAgICAgICAgICAgICAgICB0ZXh0VXBkYXRlLmluaGVy
aXRlZERpc3BsYXlDb250ZW50c1N0eWxlID0gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGVJZk5lZWRlZChwYXJlbnQuc3R5bGUpOworCisgICAgICAgICAgICAgICAgbV91cGRhdGUt
PmFkZFRleHQodGV4dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4dFVwZGF0ZSkpOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlkU3R5bGUoKTsKICAgICAg
ICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTUgKzYwLDE3IEBAIHN0
cnVjdCBFbGVtZW50VXBkYXRlIHsKIHN0cnVjdCBUZXh0VXBkYXRlIHsKICNpZiAhQ09NUElMRVJf
U1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgVGV4dFVwZGF0ZSgpID0gZGVmYXVs
dDsKLSAgICBUZXh0VXBkYXRlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IFRleHRVcGRhdGUodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPj4gaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpCiAgICAgICAgIDogb2Zmc2V0IHsgb2Zmc2V0IH0KICAgICAgICAgLCBsZW5ndGggeyBs
ZW5ndGggfQorICAgICAgICAsIGluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlIHsgV1RGTW92
ZShpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkgfQogICAgIHsKICAgICB9CiAjZW5kaWYK
IAogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBsZW5ndGggeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4+IGluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxl
OwogfTsKIAogY2xhc3MgVXBkYXRlIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzI3OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3
LTEwLTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0
IG5vZGVzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0
aGV5IHdlcmUgd3JhcHBlZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogMTAgbW9y
ZSBkaXNwbGF5OmNvbnRlbnRzIHRlc3RzIHBhc3MuCisKIDIwMTctMTAtMTMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgInRleHQvaHRtbCIgZGF0YSBp
cyBub3QgZXhwb3NlZCB3aGVuIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBhY3Jvc3Mgb3JpZ2lucwpJ
bmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjMyNzkpCisrKyBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDMwICsxMjc3LDIwIEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvbm8KICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFSVCBPRiBkaXNwbGF5OiBjb250ZW50cyBm
YWlsdXJlcwogCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1saXN0LTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWlj
LXRhYmxlLTAwMi1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0z
L2Rpc3BsYXktY29udGVudHMtaW5saW5lLWZsZXgtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtYmVmb3JlLWFmdGVyLWZp
cnN0LWxldHRlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1iZWZvcmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtdGFibGUtMDAy
LW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29u
dGVudHMtZmxleC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtdGFibGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRp
c3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWJlZm9yZS1hZnRlci0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtdGFibGUtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFt
aWMtaW5saW5lLWZsZXgtMDAxLW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlz
cGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy10YWJsZS0wMDEtaW5saW5lLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMt
ZmxleC0wMDItbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3
NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlz
cGxheS1jb250ZW50cy1mbGV4LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNw
bGF5LTMvZGlzcGxheS1jb250ZW50cy1iZWZvcmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWZsb3ctcm9vdC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1pbmxp
bmUtZmxleC0wMDEtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXkt
My9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtZmxleC0wMDMtbm9uZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAw
MS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNv
bnRlbnRzLXN0YXRlLWNoYW5nZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlz
cGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4LTAwMi1pbmxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1m
bGV4LTAwMy1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1saXN0LTAwMS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1saXN0LTAwMS1u
b25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyMjIEVORCBPRiBkaXNwbGF5OiBjb250
ZW50cyBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323920</attachid>
            <date>2017-10-16 11:53:45 -0700</date>
            <delta_ts>2017-10-16 14:04:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>display-contents-anon-wrapper-7.patch</filename>
            <type>text/plain</type>
            <size>20861</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTEwLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlz
cGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBl
ZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFjY29yZGluZyB0byBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dn
LWRyYWZ0cy9pc3N1ZXMvMTExOAorCisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmNv
bnRlbnRzO2NvbG9yOmdyZWVuIj50ZXh0PC9kaXY+CisKKyAgICAgICAgbXVzdCByZXN1bHQgaW4g
Z3JlZW4gdGV4dCBldmVuIHRob3VnaCBkaXYgZG9lc24ndCBnZW5lcmF0ZSBhIGJveC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yIGJ5IHdyYXBwaW5nIHRleHQg
cmVuZGVyZXJzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgZWxlbWVudAorICAgICAgICBp
biBhbiBhbm9ueW1vdXMgaW5saW5lIHRoYXQgcmVjZWl2ZXMgaXRzIHN0eWxlIGJ5IGluaGVydGlu
ZyBmcm9tIHRoZSBwYXJlbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKworICAgICAgICAgICAgU3ludGhlc2l6
ZSB0aGUgZmlyc3QgbGluZSBzdHlsZSBpbiBkaXNwbGF5OmNvbnRlbnRzIHBhcmVudCBjYXNlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kRGVzdHJveVJvb3RJbmNsdWRpbmdBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveUNsZWFuaW5nVXBBbm9ueW1v
dXNXcmFwcGVycyk6CisKKyAgICAgICAgICAgIEdldCByaWQgb2YgdGhlIGFub255bW91cyB3cmFw
cGVyIGlmIGl0IGV4aXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6UmVuZGVyVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0OjpzZXRJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKToKKwor
ICAgICAgICAgICAgQWRkIGEgd2VhayBtZW1iZXIgKGltcGxlbWVudGVkIGFzIGEgcmFyZSBkYXRh
IG1hcCkgZm9yIGhvbGRpbmcgdGhlIHdyYXBwZXIgcG9pbnRlci4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIpOgorCisg
ICAgICAgICAgICBIZWxwZXIgdG8gZ2V0IHRoZSB0ZXh0IHJlbmRlcmVyIGZvciBhIHdyYXBwZXIu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHN0eWxlL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRleHRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJlbmRl
cmVyKToKKworICAgICAgICAgICAgQ3JlYXRlIHRoZSB3cmFwcGVyIGlmIG5lZWRlZC4KKworICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorCisgICAgICAgICAgICBD
b21wdXRlIHRoZSB3cmFwcGVyIHN0eWxlIGJ5IGluaGVyaXRpbmcgZnJvbSB0aGUgZGlzcGxheTpj
b250ZW50cyBwYXJlbnQuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlRleHRVcGRhdGU6OlRleHRVcGRhdGUpOgorCiAyMDE3LTEwLTE2
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHNv
bWUgU2Nyb2xsaW5nVHJlZU5vZGU6Om5vZGVUeXBlKCkgY2FsbHMgd2l0aCBpcypOb2RlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw3ICsxODcxLDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIAogICAgIFNldEZvclNj
b3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1ZSk7
CiAKICAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRhdGU+
KCp0aGlzKTsKLSAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNl
ZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0IH0pOworICAgIHRleHRVcGRhdGUtPmFkZFRleHQo
dGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIHN0ZDo6
bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0
aGlzKTsKICAgICByZW5kZXJUcmVlVXBkYXRlci5jb21taXQoV1RGTW92ZSh0ZXh0VXBkYXRlKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDMwIEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqZmlyc3RMaW5lU3R5bGUpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLmlzQW5vbnltb3VzKCkgfHwgIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNS
ZW5kZXJJbmxpbmUoKSkKKyAgICBpZiAoIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNSZW5k
ZXJJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBwYXJlbnRT
dHlsZSA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUucGFyZW50KCktPmZpcnN0TGluZVN0eWxl
KCk7CiAgICAgaWYgKCZwYXJlbnRTdHlsZSA9PSAmcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5w
YXJlbnQoKS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAocmVu
ZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc0Fub255bW91cygpKSB7CisgICAgICAgIGF1dG8qIHRl
eHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQYXJlbnQgPSBSZW5kZXJUZXh0OjpmaW5kRm9y
RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlcihyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlKTsK
KyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIGNvbXBvc2VkVHJlZVBhcmVu
dEVsZW1lbnQgPSB0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50LT50ZXh0Tm9k
ZSgpLT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICAgICAgaWYgKCFjb21wb3Nl
ZFRyZWVQYXJlbnRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIo
KS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZwYXJlbnRTdHls
ZSkucmVuZGVyU3R5bGU7CisgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IENPTlRF
TlRTKTsKKworICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxz
cGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVy
aXRhbmNlLgorICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZVB0cigpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKKyAg
ICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlOworICAgIH0KKwogICAgIHJldHVybiByZW5kZXJl
ckZvckZpcnN0TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxl
bWVudCgqZWxlbWVudCgpLCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzMjc5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NTUsMTUgKzE0NTUsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxCZVJl
bW92ZWRGcm9tVHJlZQogICAgIHBhcmVudCgpLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsK
IH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95Q2xlYW5p
bmdVcEFub255bW91c1dyYXBwZXJzKCkKK3N0YXRpYyBSZW5kZXJPYmplY3QmIGZpbmREZXN0cm95
Um9vdEluY2x1ZGluZ0Fub255bW91cyhSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIC8v
IElmIHRoZSB0cmVlIGlzIGRlc3Ryb3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11
cCBwaGFzZS4KLSAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKLSAgICAgICAg
cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBhdXRvKiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gaXM8UmVuZGVyVGV4dD4o
cmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmlubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvKiBkZXN0cm95Um9vdCA9
IHRoaXM7CisgICAgYXV0byogZGVzdHJveVJvb3QgPSBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNv
bnRlbnRzID8gaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA6ICZyZW5kZXJlcjsKICAg
ICBhdXRvKiBkZXN0cm95Um9vdFBhcmVudCA9IGRlc3Ryb3lSb290LT5wYXJlbnQoKTsKICAgICB3
aGlsZSAoZGVzdHJveVJvb3RQYXJlbnQgJiYgZGVzdHJveVJvb3RQYXJlbnQtPmlzQW5vbnltb3Vz
KCkpIHsKICAgICAgICAgaWYgKCFkZXN0cm95Um9vdFBhcmVudC0+aXNUYWJsZUNlbGwoKSAmJiAh
ZGVzdHJveVJvb3RQYXJlbnQtPmlzVGFibGVSb3coKQpAQCAtMTQ3NSwxMSArMTQ3MSwyMyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlCiAgICAgICAgIGRlc3Ryb3lS
b290ID0gZGVzdHJveVJvb3RQYXJlbnQ7CiAgICAgICAgIGRlc3Ryb3lSb290UGFyZW50ID0gZGVz
dHJveVJvb3RQYXJlbnQtPnBhcmVudCgpOwogICAgIH0KKyAgICByZXR1cm4gKmRlc3Ryb3lSb290
OworfQorCit2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVh
bmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoKQoreworICAgIC8vIElmIHRoZSB0cmVlIGlzIGRlc3Ry
b3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11cCBwaGFzZS4KKyAgICBpZiAocmVu
ZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKKyAgICAgICAgcmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGRlc3Ryb3lSb290
ID0gZmluZERlc3Ryb3lSb290SW5jbHVkaW5nQW5vbnltb3VzKCp0aGlzKTsKIAotICAgIGlmIChp
czxSZW5kZXJUYWJsZVJvdz4oKmRlc3Ryb3lSb290KSkKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVy
VGFibGVSb3c+KCpkZXN0cm95Um9vdCkuY29sbGFwc2VBbmREZXN0cm95QW5vbnltb3VzU2libGlu
Z1Jvd3MoKTsKKyAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KSkKKyAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KS5jb2xsYXBzZUFuZERlc3Ry
b3lBbm9ueW1vdXNTaWJsaW5nUm93cygpOwogCi0gICAgZGVzdHJveVJvb3QtPnJlbW92ZUZyb21Q
YXJlbnRBbmREZXN0cm95KCk7CisgICAgZGVzdHJveVJvb3QucmVtb3ZlRnJvbVBhcmVudEFuZERl
c3Ryb3koKTsKICAgICAvLyBXQVJOSU5HOiB8dGhpc3wgaXMgZGVsZXRlZCBoZXJlLgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMjMy
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyVGV4
dCosIFN0cmluZwogICAgIHJldHVybiBtYXA7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IFJl
bmRlclRleHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+JiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25z
dCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+Pj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CisKIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2
aW91cykKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJU
b1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCkBAIC0x
ODMsNiArMTg5LDcgQEAgaW5saW5lIFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYgbm9kZQog
ICAgICwgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMoZmFsc2UpCiAg
ICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9vcmlnaW5hbFRl
eHREaWZmZXJzRnJvbVJlbmRlcmVkKGZhbHNlKQorICAgICwgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzKGZhbHNlKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
LCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoMCkKICNlbmRpZgpAQCAtMjkxLDYgKzI5OCw4
IEBAIHZvaWQgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIGlmIChtX29yaWdp
bmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQpCiAgICAgICAgIG9yaWdpbmFsVGV4dE1hcCgpLnJl
bW92ZSh0aGlzKTsKKyAgICBpZiAobV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRz
KQorICAgICAgICBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkucmVtb3ZlKHRo
aXMpOwogCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KQEAgLTE3Mzcs
NCArMTc0NiwzOCBAQCBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduCiAg
ICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRpb24g
LSBzdGFydCk7CiB9CiAKK1JlbmRlcklubGluZSogUmVuZGVyVGV4dDo6aW5saW5lV3JhcHBlckZv
ckRpc3BsYXlDb250ZW50cygpCit7CisgICAgaWYgKCFtX2hhc0lubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkuZ2V0KHRoaXMpLmdldCgpOworfQorCit2b2lk
IFJlbmRlclRleHQ6OnNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5s
aW5lKiB3cmFwcGVyKQoreworICAgIGlmICghd3JhcHBlcikgeworICAgICAgICBpZiAoIW1faGFz
SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50c01hcCgpLnJlbW92ZSh0aGlzKTsK
KyAgICAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50
c01hcCgpLmFkZCh0aGlzLCBtYWtlV2Vha1B0cih3cmFwcGVyKSk7CisgICAgbV9oYXNJbmxpbmVX
cmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKK30KKworUmVuZGVyVGV4dCogUmVuZGVy
VGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIpCit7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQo
KTsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
Zmlyc3RDaGlsZCk7CisgICAgaWYgKHRleHRSZW5kZXJlci5pbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBB
U1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOworICAgIEFTU0VSVChyZW5kZXJlci5maXJz
dENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOworICAgIHJldHVybiAmdGV4dFJlbmRl
cmVyOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDYgKzE3OSwxMSBA
QCBwdWJsaWM6CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IGRy
YWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHModW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKKyAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMoKTsKKyAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JEaXNw
bGF5Q29udGVudHMoUmVuZGVySW5saW5lKik7CisKKyAgICBzdGF0aWMgUmVuZGVyVGV4dCogZmlu
ZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYpOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZs
b2F0IGxlYWRXaWR0aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAg
LTIzMyw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9rbm93blRv
SGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgOiAxOwogICAgIHVuc2lnbmVkIG1fdXNl
QmFja3NsYXNoQXNZZW5TeW1ib2wgOiAxOwogICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxUZXh0RGlm
ZmVyc0Zyb21SZW5kZXJlZCA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2NhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nIDogMTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNj
cmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJ
dGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgpAQCAtNDI2LDI2ICs0Mjcs
NDggQEAgc3RhdGljIGJvb2wgdGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVAogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dE5v
ZGUsIFJlbmRlclRyZWVQb3NpdGlvbiYgcmVuZGVyVHJlZVBvc2l0aW9uKQorc3RhdGljIHZvaWQg
Y3JlYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHROb2RlLCBSZW5kZXJUcmVlUG9zaXRpb24mIHJl
bmRlclRyZWVQb3NpdGlvbiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUqIHRleHRVcGRhdGUpCiB7
CiAgICAgQVNTRVJUKCF0ZXh0Tm9kZS5yZW5kZXJlcigpKTsKIAotICAgIGF1dG8gbmV3UmVuZGVy
ZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBhcmVu
dCgpLnN0eWxlKCkpOwotICAgIEFTU0VSVChuZXdSZW5kZXJlcik7CisgICAgYXV0byB0ZXh0UmVu
ZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBh
cmVudCgpLnN0eWxlKCkpOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uLmNvbXB1dGVOZXh0U2li
bGluZyh0ZXh0Tm9kZSk7CiAKLSAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQo
Km5ld1JlbmRlcmVyKSkKKyAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQoKnRl
eHRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRleHROb2RlLnNldFJlbmRlcmVy
KG5ld1JlbmRlcmVyLmdldCgpKTsKLSAgICByZW5kZXJUcmVlUG9zaXRpb24uaW5zZXJ0KFdURk1v
dmUobmV3UmVuZGVyZXIpKTsKKyAgICB0ZXh0Tm9kZS5zZXRSZW5kZXJlcih0ZXh0UmVuZGVyZXIu
Z2V0KCkpOworCisgICAgaWYgKHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlz
cGxheUNvbnRlbnRzU3R5bGUgJiYgKnRleHRVcGRhdGUtPmluaGVyaXRlZERpc3BsYXlDb250ZW50
c1N0eWxlKSB7CisgICAgICAgIC8vIFdyYXAgdGV4dCByZW5kZXJlciBpbnRvIGFub255bW91cyBp
bmxpbmUgc28gd2UgY2FuIGdpdmUgaXQgYSBzdHlsZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0byBz
dXBwb3J0ICI8ZGl2IHN0eWxlPSdkaXNwbGF5OmNvbnRlbnRzO2NvbG9yOmdyZWVuJz50ZXh0PC9k
aXY+IiB0eXBlIGNhc2VzCisgICAgICAgIGF1dG8gbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3Vz
V3JhcHBlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4odGV4dE5vZGUuZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNsb25lKCoqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUpKTsKKyAgICAgICAgbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlci0+
aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50c0Fub255bW91
c1dyYXBwZXIgPSAqbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlcjsKKyAgICAgICAg
cmVuZGVyVHJlZVBvc2l0aW9uLmluc2VydChXVEZNb3ZlKG5ld0Rpc3BsYXlDb250ZW50c0Fub255
bW91c1dyYXBwZXIpKTsKKworICAgICAgICB0ZXh0UmVuZGVyZXItPnNldElubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoJmRpc3BsYXlDb250ZW50c0Fub255bW91c1dyYXBwZXIpOworICAg
ICAgICBkaXNwbGF5Q29udGVudHNBbm9ueW1vdXNXcmFwcGVyLmFkZENoaWxkKFdURk1vdmUodGV4
dFJlbmRlcmVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZW5kZXJUcmVlUG9z
aXRpb24uaW5zZXJ0KFdURk1vdmUodGV4dFJlbmRlcmVyKSk7CiB9CiAKIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCBjb25zdCBTdHlsZTo6VGV4
dFVwZGF0ZSogdGV4dFVwZGF0ZSkKIHsKICAgICBhdXRvKiBleGlzdGluZ1JlbmRlcmVyID0gdGV4
dC5yZW5kZXJlcigpOwogICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHRleHRSZW5kZXJlcklzTmVl
ZGVkKHRleHQsIHJlbmRlclRyZWVQb3NpdGlvbigpKTsKKworICAgIGlmIChleGlzdGluZ1JlbmRl
cmVyICYmIHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nUmVuZGVyZXItPmlubGluZVdyYXBwZXJGb3JE
aXNwbGF5Q29udGVudHMoKSB8fCAqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB1cGRhdGUgd2l0aG91dCB0
ZWFyZG93bi4KKyAgICAgICAgICAgIHRlYXJEb3duUmVuZGVyZXIodGV4dCk7CisgICAgICAgICAg
ICBleGlzdGluZ1JlbmRlcmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlm
IChleGlzdGluZ1JlbmRlcmVyKSB7CiAgICAgICAgIGlmIChuZWVkc1JlbmRlcmVyKSB7CiAgICAg
ICAgICAgICBpZiAodGV4dFVwZGF0ZSkKQEAgLTQ1OCw3ICs0ODEsNyBAQCB2b2lkIFJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVUZXh0UmVuZGVyCiAgICAgfQogICAgIGlmICghbmVlZHNSZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwotICAgIGNyZWF0ZVRleHRSZW5kZXJlcih0ZXh0LCByZW5kZXJU
cmVlUG9zaXRpb24oKSk7CisgICAgY3JlYXRlVGV4dFJlbmRlcmVyKHRleHQsIHJlbmRlclRyZWVQ
b3NpdGlvbigpLCB0ZXh0VXBkYXRlKTsKICAgICBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0
U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKHRleHQpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1MCw2ICszNTAsMTYgQEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxlc2hlZXQoY29u
c3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGVJZk5lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCit7CisgICAgaWYgKHBhcmVudFN0eWxlLmRpc3Bs
YXkoKSAhPSBDT05URU5UUykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gQ29tcHV0
ZSBzdHlsZSBmb3IgaW1hZ2luYXJ5IHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQgbm9k
ZS4KKyAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOworICAgIHN0eWxl
LT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CisgICAgcmV0dXJuIHN0eWxlOworfQorCiB2b2lk
IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFy
ZW50U3RhY2suc2l6ZSgpID09IDEpOwpAQCAtMzc0LDggKzM4NCwxMyBAQCB2b2lkIFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAKICAgICAgICAgaWYgKGlzPFRleHQ+KG5vZGUp
KSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7Ci0gICAg
ICAgICAgICBpZiAodGV4dC5zdHlsZVZhbGlkaXR5KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRS
ZW5kZXJlcnNJbnZhbGlkICYmIHBhcmVudC5jaGFuZ2UgIT0gRGV0YWNoKQotICAgICAgICAgICAg
ICAgIG1fdXBkYXRlLT5hZGRUZXh0KHRleHQsIHBhcmVudC5lbGVtZW50LCB7IH0pOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5
OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkg
fHwgcGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgICAgICAgICAgICAg
IFRleHRVcGRhdGUgdGV4dFVwZGF0ZTsKKyAgICAgICAgICAgICAgICB0ZXh0VXBkYXRlLmluaGVy
aXRlZERpc3BsYXlDb250ZW50c1N0eWxlID0gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGVJZk5lZWRlZChwYXJlbnQuc3R5bGUpOworCisgICAgICAgICAgICAgICAgbV91cGRhdGUt
PmFkZFRleHQodGV4dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4dFVwZGF0ZSkpOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlkU3R5bGUoKTsKICAgICAg
ICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTUgKzYwLDE3IEBAIHN0
cnVjdCBFbGVtZW50VXBkYXRlIHsKIHN0cnVjdCBUZXh0VXBkYXRlIHsKICNpZiAhQ09NUElMRVJf
U1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgVGV4dFVwZGF0ZSgpID0gZGVmYXVs
dDsKLSAgICBUZXh0VXBkYXRlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAg
IFRleHRVcGRhdGUodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIHN0ZDo6b3B0aW9u
YWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPj4gaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRz
U3R5bGUpCiAgICAgICAgIDogb2Zmc2V0IHsgb2Zmc2V0IH0KICAgICAgICAgLCBsZW5ndGggeyBs
ZW5ndGggfQorICAgICAgICAsIGluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlIHsgV1RGTW92
ZShpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkgfQogICAgIHsKICAgICB9CiAjZW5kaWYK
IAogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBsZW5ndGggeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4+IGluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxl
OwogfTsKIAogY2xhc3MgVXBkYXRlIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzI3OSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3
LTEwLTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0
IG5vZGVzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0
aGV5IHdlcmUgd3JhcHBlZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogMTAgbW9y
ZSBkaXNwbGF5OmNvbnRlbnRzIHRlc3RzIHBhc3MuCisKIDIwMTctMTAtMTMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgInRleHQvaHRtbCIgZGF0YSBp
cyBub3QgZXhwb3NlZCB3aGVuIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBhY3Jvc3Mgb3JpZ2lucwpJ
bmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjMyNzkpCisrKyBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDMwICsxMjc3LDIwIEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvbm8KICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFSVCBPRiBkaXNwbGF5OiBjb250ZW50cyBm
YWlsdXJlcwogCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1saXN0LTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWlj
LXRhYmxlLTAwMi1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0z
L2Rpc3BsYXktY29udGVudHMtaW5saW5lLWZsZXgtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtYmVmb3JlLWFmdGVyLWZp
cnN0LWxldHRlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1iZWZvcmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtdGFibGUtMDAy
LW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29u
dGVudHMtZmxleC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtdGFibGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRp
c3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWJlZm9yZS1hZnRlci0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtdGFibGUtMDAyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFt
aWMtaW5saW5lLWZsZXgtMDAxLW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlz
cGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy10YWJsZS0wMDEtaW5saW5lLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMt
ZmxleC0wMDItbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3
NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlz
cGxheS1jb250ZW50cy1mbGV4LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNw
bGF5LTMvZGlzcGxheS1jb250ZW50cy1iZWZvcmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWZsb3ctcm9vdC0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1pbmxp
bmUtZmxleC0wMDEtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXkt
My9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtZmxleC0wMDMtbm9uZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAw
MS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNv
bnRlbnRzLXN0YXRlLWNoYW5nZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlz
cGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4LTAwMi1pbmxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1m
bGV4LTAwMy1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1saXN0LTAwMS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1saXN0LTAwMS1u
b25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyMjIEVORCBPRiBkaXNwbGF5OiBjb250
ZW50cyBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324001</attachid>
            <date>2017-10-17 01:20:27 -0700</date>
            <delta_ts>2017-10-17 02:51:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>display-contents-anon-wrapper-8.patch</filename>
            <type>text/plain</type>
            <size>21370</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTEwLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlz
cGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBl
ZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFjY29yZGluZyB0byBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dn
LWRyYWZ0cy9pc3N1ZXMvMTExOAorCisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmNv
bnRlbnRzO2NvbG9yOmdyZWVuIj50ZXh0PC9kaXY+CisKKyAgICAgICAgbXVzdCByZXN1bHQgaW4g
Z3JlZW4gdGV4dCBldmVuIHRob3VnaCBkaXYgZG9lc24ndCBnZW5lcmF0ZSBhIGJveC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yIGJ5IHdyYXBwaW5nIHRleHQg
cmVuZGVyZXJzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgZWxlbWVudAorICAgICAgICBp
biBhbiBhbm9ueW1vdXMgaW5saW5lIHRoYXQgcmVjZWl2ZXMgaXRzIHN0eWxlIGJ5IGluaGVydGlu
ZyBmcm9tIHRoZSBwYXJlbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKworICAgICAgICAgICAgU3ludGhlc2l6
ZSB0aGUgZmlyc3QgbGluZSBzdHlsZSBpbiBkaXNwbGF5OmNvbnRlbnRzIHBhcmVudCBjYXNlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kRGVzdHJveVJvb3RJbmNsdWRpbmdBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveUNsZWFuaW5nVXBBbm9ueW1v
dXNXcmFwcGVycyk6CisKKyAgICAgICAgICAgIEdldCByaWQgb2YgdGhlIGFub255bW91cyB3cmFw
cGVyIGlmIGl0IGV4aXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6UmVuZGVyVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0OjpzZXRJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKToKKwor
ICAgICAgICAgICAgQWRkIGEgd2VhayBtZW1iZXIgKGltcGxlbWVudGVkIGFzIGEgcmFyZSBkYXRh
IG1hcCkgZm9yIGhvbGRpbmcgdGhlIHdyYXBwZXIgcG9pbnRlci4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIpOgorCisg
ICAgICAgICAgICBIZWxwZXIgdG8gZ2V0IHRoZSB0ZXh0IHJlbmRlcmVyIGZvciBhIHdyYXBwZXIu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHN0eWxlL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRleHRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJlbmRl
cmVyKToKKworICAgICAgICAgICAgQ3JlYXRlIHRoZSB3cmFwcGVyIGlmIG5lZWRlZC4KKworICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorCisgICAgICAgICAgICBD
b21wdXRlIHRoZSB3cmFwcGVyIHN0eWxlIGJ5IGluaGVyaXRpbmcgZnJvbSB0aGUgZGlzcGxheTpj
b250ZW50cyBwYXJlbnQuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlRleHRVcGRhdGU6OlRleHRVcGRhdGUpOgorCiAyMDE3LTEwLTE2
ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIERv
bid0IHVzZSBpbnRyaW5zaWMgd2lkdGggaWYgb3VyIGNvbnRhaW5lcidzIHdpZHRoIGlzIHplcm8K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw3ICsxODcx
LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIAogICAgIFNldEZv
clNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1
ZSk7CiAKICAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRh
dGU+KCp0aGlzKTsKLSAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBs
YWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0IH0pOworICAgIHRleHRVcGRhdGUtPmFkZFRl
eHQodGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIHN0
ZDo6bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVy
KCp0aGlzKTsKICAgICByZW5kZXJUcmVlVXBkYXRlci5jb21taXQoV1RGTW92ZSh0ZXh0VXBkYXRl
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDMwIEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpj
bG9uZVB0cigqZmlyc3RMaW5lU3R5bGUpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlckZvckZp
cnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkgfHwgIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUu
aXNSZW5kZXJJbmxpbmUoKSkKKyAgICBpZiAoIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuaXNS
ZW5kZXJJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBwYXJl
bnRTdHlsZSA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUucGFyZW50KCktPmZpcnN0TGluZVN0
eWxlKCk7CiAgICAgaWYgKCZwYXJlbnRTdHlsZSA9PSAmcmVuZGVyZXJGb3JGaXJzdExpbmVTdHls
ZS5wYXJlbnQoKS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAo
cmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc0Fub255bW91cygpKSB7CisgICAgICAgIGF1dG8q
IHRleHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQYXJlbnQgPSBSZW5kZXJUZXh0OjpmaW5k
Rm9yRGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlcihyZW5kZXJlckZvckZpcnN0TGluZVN0eWxl
KTsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIGNvbXBvc2VkVHJlZVBh
cmVudEVsZW1lbnQgPSB0ZXh0UmVuZGVyZXJXaXRoRGlzcGxheUNvbnRlbnRzUGFyZW50LT50ZXh0
Tm9kZSgpLT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICAgICAgaWYgKCFjb21w
b3NlZFRyZWVQYXJlbnRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2
ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZwYXJlbnRT
dHlsZSkucmVuZGVyU3R5bGU7CisgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IENP
TlRFTlRTKTsKKworICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVk
IDxzcGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGlu
aGVyaXRhbmNlLgorICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZVB0cigpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsK
KyAgICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlOworICAgIH0KKwogICAgIHJldHVybiByZW5k
ZXJlckZvckZpcnN0TGluZVN0eWxlLmVsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9y
RWxlbWVudCgqZWxlbWVudCgpLCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIz
Mjc5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NTUsMTUgKzE0NTUsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OndpbGxC
ZVJlbW92ZWRGcm9tVHJlZQogICAgIHBhcmVudCgpLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUo
KTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95Q2xl
YW5pbmdVcEFub255bW91c1dyYXBwZXJzKCkKK3N0YXRpYyBSZW5kZXJPYmplY3QmIGZpbmREZXN0
cm95Um9vdEluY2x1ZGluZ0Fub255bW91cyhSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAg
IC8vIElmIHRoZSB0cmVlIGlzIGRlc3Ryb3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVh
bi11cCBwaGFzZS4KLSAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKLSAgICAg
ICAgcmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBhdXRvKiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gaXM8UmVuZGVyVGV4
dD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmlubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvKiBkZXN0cm95Um9v
dCA9IHRoaXM7CisgICAgYXV0byogZGVzdHJveVJvb3QgPSBpbmxpbmVXcmFwcGVyRm9yRGlzcGxh
eUNvbnRlbnRzID8gaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA6ICZyZW5kZXJlcjsK
ICAgICBhdXRvKiBkZXN0cm95Um9vdFBhcmVudCA9IGRlc3Ryb3lSb290LT5wYXJlbnQoKTsKICAg
ICB3aGlsZSAoZGVzdHJveVJvb3RQYXJlbnQgJiYgZGVzdHJveVJvb3RQYXJlbnQtPmlzQW5vbnlt
b3VzKCkpIHsKICAgICAgICAgaWYgKCFkZXN0cm95Um9vdFBhcmVudC0+aXNUYWJsZUNlbGwoKSAm
JiAhZGVzdHJveVJvb3RQYXJlbnQtPmlzVGFibGVSb3coKQpAQCAtMTQ3NSwxMSArMTQ3MSwyMyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlCiAgICAgICAgIGRlc3Ry
b3lSb290ID0gZGVzdHJveVJvb3RQYXJlbnQ7CiAgICAgICAgIGRlc3Ryb3lSb290UGFyZW50ID0g
ZGVzdHJveVJvb3RQYXJlbnQtPnBhcmVudCgpOwogICAgIH0KKyAgICByZXR1cm4gKmRlc3Ryb3lS
b290OworfQorCit2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lD
bGVhbmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoKQoreworICAgIC8vIElmIHRoZSB0cmVlIGlzIGRl
c3Ryb3llZCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBjbGVhbi11cCBwaGFzZS4KKyAgICBpZiAo
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKKyAgICAgICAgcmVtb3ZlRnJvbVBhcmVudEFu
ZERlc3Ryb3koKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGRlc3Ryb3lS
b290ID0gZmluZERlc3Ryb3lSb290SW5jbHVkaW5nQW5vbnltb3VzKCp0aGlzKTsKIAotICAgIGlm
IChpczxSZW5kZXJUYWJsZVJvdz4oKmRlc3Ryb3lSb290KSkKLSAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyVGFibGVSb3c+KCpkZXN0cm95Um9vdCkuY29sbGFwc2VBbmREZXN0cm95QW5vbnltb3VzU2li
bGluZ1Jvd3MoKTsKKyAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KSkKKyAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGRlc3Ryb3lSb290KS5jb2xsYXBzZUFuZERl
c3Ryb3lBbm9ueW1vdXNTaWJsaW5nUm93cygpOwogCi0gICAgZGVzdHJveVJvb3QtPnJlbW92ZUZy
b21QYXJlbnRBbmREZXN0cm95KCk7CisgICAgZGVzdHJveVJvb3QucmVtb3ZlRnJvbVBhcmVudEFu
ZERlc3Ryb3koKTsKICAgICAvLyBXQVJOSU5HOiB8dGhpc3wgaXMgZGVsZXRlZCBoZXJlLgogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAy
MjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVy
VGV4dCosIFN0cmluZwogICAgIHJldHVybiBtYXA7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPGNvbnN0
IFJlbmRlclRleHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+JiBpbmxpbmVXcmFwcGVyRm9yRGlz
cGxheUNvbnRlbnRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxj
b25zdCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+Pj4gbWFwOworICAgIHJldHVy
biBtYXA7Cit9CisKIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBw
cmV2aW91cykKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9z
dHJUb1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCkBA
IC0xODMsNiArMTg5LDcgQEAgaW5saW5lIFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYgbm9k
ZQogICAgICwgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMoZmFsc2Up
CiAgICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9vcmlnaW5h
bFRleHREaWZmZXJzRnJvbVJlbmRlcmVkKGZhbHNlKQorICAgICwgbV9oYXNJbmxpbmVXcmFwcGVy
Rm9yRGlzcGxheUNvbnRlbnRzKGZhbHNlKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgLCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoMCkKICNlbmRpZgpAQCAtMjkxLDYgKzI5
OCw4IEBAIHZvaWQgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIGlmIChtX29y
aWdpbmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQpCiAgICAgICAgIG9yaWdpbmFsVGV4dE1hcCgp
LnJlbW92ZSh0aGlzKTsKKyAgICBpZiAobV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRl
bnRzKQorICAgICAgICBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkucmVtb3Zl
KHRoaXMpOwogCiAgICAgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KQEAgLTE3
MzcsNCArMTc0NiwzOCBAQCBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWdu
CiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRp
b24gLSBzdGFydCk7CiB9CiAKK1JlbmRlcklubGluZSogUmVuZGVyVGV4dDo6aW5saW5lV3JhcHBl
ckZvckRpc3BsYXlDb250ZW50cygpCit7CisgICAgaWYgKCFtX2hhc0lubGluZVdyYXBwZXJGb3JE
aXNwbGF5Q29udGVudHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBpbmxp
bmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKCkuZ2V0KHRoaXMpLmdldCgpOworfQorCit2
b2lkIFJlbmRlclRleHQ6OnNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVy
SW5saW5lKiB3cmFwcGVyKQoreworICAgIGlmICghd3JhcHBlcikgeworICAgICAgICBpZiAoIW1f
aGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50c01hcCgpLnJlbW92ZSh0aGlz
KTsKKyAgICAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gZmFsc2U7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250
ZW50c01hcCgpLmFkZCh0aGlzLCBtYWtlV2Vha1B0cih3cmFwcGVyKSk7CisgICAgbV9oYXNJbmxp
bmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKK30KKworUmVuZGVyVGV4dCogUmVu
ZGVyVGV4dDo6ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCit7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlcmVyLmZpcnN0Q2hp
bGQoKTsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0
PigqZmlyc3RDaGlsZCk7CisgICAgaWYgKHRleHRSZW5kZXJlci5pbmxpbmVXcmFwcGVyRm9yRGlz
cGxheUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOworICAgIEFTU0VSVChyZW5kZXJlci5m
aXJzdENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOworICAgIHJldHVybiAmdGV4dFJl
bmRlcmVyOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDYgKzE3OSwx
MSBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+
IGRyYWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHModW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKKyAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdy
YXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKTsKKyAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JE
aXNwbGF5Q29udGVudHMoUmVuZGVySW5saW5lKik7CisKKyAgICBzdGF0aWMgUmVuZGVyVGV4dCog
ZmluZEZvckRpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXIoUmVuZGVyRWxlbWVudCYpOworCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KGZsb2F0IGxlYWRXaWR0aCk7CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
QEAgLTIzMyw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9rbm93
blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgOiAxOwogICAgIHVuc2lnbmVkIG1f
dXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgOiAxOwogICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxUZXh0
RGlmZmVyc0Zyb21SZW5kZXJlZCA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNJbmxpbmVXcmFwcGVy
Rm9yRGlzcGxheUNvbnRlbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2NhblVzZVNpbXBsaWZpZWRU
ZXh0TWVhc3VyaW5nIDogMTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjMy
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVs
bFNjcmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlckxp
c3RJdGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgpAQCAtNDI2LDI2ICs0
MjcsNDggQEAgc3RhdGljIGJvb2wgdGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4
dE5vZGUsIFJlbmRlclRyZWVQb3NpdGlvbiYgcmVuZGVyVHJlZVBvc2l0aW9uKQorc3RhdGljIHZv
aWQgY3JlYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHROb2RlLCBSZW5kZXJUcmVlUG9zaXRpb24m
IHJlbmRlclRyZWVQb3NpdGlvbiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUqIHRleHRVcGRhdGUp
CiB7CiAgICAgQVNTRVJUKCF0ZXh0Tm9kZS5yZW5kZXJlcigpKTsKIAotICAgIGF1dG8gbmV3UmVu
ZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9uLnBh
cmVudCgpLnN0eWxlKCkpOwotICAgIEFTU0VSVChuZXdSZW5kZXJlcik7CisgICAgYXV0byB0ZXh0
UmVuZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIocmVuZGVyVHJlZVBvc2l0aW9u
LnBhcmVudCgpLnN0eWxlKCkpOwogCiAgICAgcmVuZGVyVHJlZVBvc2l0aW9uLmNvbXB1dGVOZXh0
U2libGluZyh0ZXh0Tm9kZSk7CiAKLSAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNl
cnQoKm5ld1JlbmRlcmVyKSkKKyAgICBpZiAoIXJlbmRlclRyZWVQb3NpdGlvbi5jYW5JbnNlcnQo
KnRleHRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRleHROb2RlLnNldFJlbmRl
cmVyKG5ld1JlbmRlcmVyLmdldCgpKTsKLSAgICByZW5kZXJUcmVlUG9zaXRpb24uaW5zZXJ0KFdU
Rk1vdmUobmV3UmVuZGVyZXIpKTsKKyAgICB0ZXh0Tm9kZS5zZXRSZW5kZXJlcih0ZXh0UmVuZGVy
ZXIuZ2V0KCkpOworCisgICAgaWYgKHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVk
RGlzcGxheUNvbnRlbnRzU3R5bGUgJiYgKnRleHRVcGRhdGUtPmluaGVyaXRlZERpc3BsYXlDb250
ZW50c1N0eWxlKSB7CisgICAgICAgIC8vIFdyYXAgdGV4dCByZW5kZXJlciBpbnRvIGFub255bW91
cyBpbmxpbmUgc28gd2UgY2FuIGdpdmUgaXQgYSBzdHlsZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0
byBzdXBwb3J0ICI8ZGl2IHN0eWxlPSdkaXNwbGF5OmNvbnRlbnRzO2NvbG9yOmdyZWVuJz50ZXh0
PC9kaXY+IiB0eXBlIGNhc2VzCisgICAgICAgIGF1dG8gbmV3RGlzcGxheUNvbnRlbnRzQW5vbnlt
b3VzV3JhcHBlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4odGV4dE5vZGUuZG9jdW1l
bnQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKCoqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNv
bnRlbnRzU3R5bGUpKTsKKyAgICAgICAgbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBl
ci0+aW5pdGlhbGl6ZVN0eWxlKCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50c0Fub255
bW91c1dyYXBwZXIgPSAqbmV3RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlcjsKKyAgICAg
ICAgcmVuZGVyVHJlZVBvc2l0aW9uLmluc2VydChXVEZNb3ZlKG5ld0Rpc3BsYXlDb250ZW50c0Fu
b255bW91c1dyYXBwZXIpKTsKKworICAgICAgICB0ZXh0UmVuZGVyZXItPnNldElubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMoJmRpc3BsYXlDb250ZW50c0Fub255bW91c1dyYXBwZXIpOwor
ICAgICAgICBkaXNwbGF5Q29udGVudHNBbm9ueW1vdXNXcmFwcGVyLmFkZENoaWxkKFdURk1vdmUo
dGV4dFJlbmRlcmVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZW5kZXJUcmVl
UG9zaXRpb24uaW5zZXJ0KFdURk1vdmUodGV4dFJlbmRlcmVyKSk7CiB9CiAKIHZvaWQgUmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCBjb25zdCBTdHlsZTo6
VGV4dFVwZGF0ZSogdGV4dFVwZGF0ZSkKIHsKICAgICBhdXRvKiBleGlzdGluZ1JlbmRlcmVyID0g
dGV4dC5yZW5kZXJlcigpOwogICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHRleHRSZW5kZXJlcklz
TmVlZGVkKHRleHQsIHJlbmRlclRyZWVQb3NpdGlvbigpKTsKKworICAgIGlmIChleGlzdGluZ1Jl
bmRlcmVyICYmIHRleHRVcGRhdGUgJiYgdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nUmVuZGVyZXItPmlubGluZVdyYXBwZXJG
b3JEaXNwbGF5Q29udGVudHMoKSB8fCAqdGV4dFVwZGF0ZS0+aW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB1cGRhdGUgd2l0aG91
dCB0ZWFyZG93bi4KKyAgICAgICAgICAgIHRlYXJEb3duUmVuZGVyZXIodGV4dCk7CisgICAgICAg
ICAgICBleGlzdGluZ1JlbmRlcmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmIChleGlzdGluZ1JlbmRlcmVyKSB7CiAgICAgICAgIGlmIChuZWVkc1JlbmRlcmVyKSB7CiAg
ICAgICAgICAgICBpZiAodGV4dFVwZGF0ZSkKQEAgLTQ1OCw3ICs0ODEsNyBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjp1cGRhdGVUZXh0UmVuZGVyCiAgICAgfQogICAgIGlmICghbmVlZHNSZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuOwotICAgIGNyZWF0ZVRleHRSZW5kZXJlcih0ZXh0LCByZW5k
ZXJUcmVlUG9zaXRpb24oKSk7CisgICAgY3JlYXRlVGV4dFJlbmRlcmVyKHRleHQsIHJlbmRlclRy
ZWVQb3NpdGlvbigpLCB0ZXh0VXBkYXRlKTsKICAgICBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlU
ZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKHRleHQpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjMyNzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1MCw2ICszNTAsMTggQEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxlc2hlZXQo
Y29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGVJZk5lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50RWxlbWVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50Qm94U3R5bGUpCit7CisgICAgaWYgKHBhcmVudEVsZW1lbnRTdHlsZS5kaXNwbGF5KCkg
IT0gQ09OVEVOVFMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChwYXJlbnRCb3hT
dHlsZSAmJiAhcGFyZW50Qm94U3R5bGUtPmluaGVyaXRlZE5vdEVxdWFsKCZwYXJlbnRFbGVtZW50
U3R5bGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBDb21wdXRlIHN0eWxlIGZv
ciBpbWFnaW5hcnkgdW5zdHlsZWQgPHNwYW4+IGFyb3VuZCB0aGUgdGV4dCBub2RlLgorICAgIGF1
dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CisgICAgc3R5bGUtPmluaGVyaXRG
cm9tKHBhcmVudEVsZW1lbnRTdHlsZSk7CisgICAgcmV0dXJuIHN0eWxlOworfQorCiB2b2lkIFRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFyZW50
U3RhY2suc2l6ZSgpID09IDEpOwpAQCAtMzc0LDggKzM4NiwxMyBAQCB2b2lkIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAKICAgICAgICAgaWYgKGlzPFRleHQ+KG5vZGUpKSB7
CiAgICAgICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7Ci0gICAgICAg
ICAgICBpZiAodGV4dC5zdHlsZVZhbGlkaXR5KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5k
ZXJlcnNJbnZhbGlkICYmIHBhcmVudC5jaGFuZ2UgIT0gRGV0YWNoKQotICAgICAgICAgICAgICAg
IG1fdXBkYXRlLT5hZGRUZXh0KHRleHQsIHBhcmVudC5lbGVtZW50LCB7IH0pOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5OjpT
dWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkgfHwg
cGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgICAgICAgICAgICAgIFRl
eHRVcGRhdGUgdGV4dFVwZGF0ZTsKKyAgICAgICAgICAgICAgICB0ZXh0VXBkYXRlLmluaGVyaXRl
ZERpc3BsYXlDb250ZW50c1N0eWxlID0gY3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5
bGVJZk5lZWRlZChwYXJlbnQuc3R5bGUsIHBhcmVudEJveFN0eWxlKCkpOworCisgICAgICAgICAg
ICAgICAgbV91cGRhdGUtPmFkZFRleHQodGV4dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4
dFVwZGF0ZSkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlk
U3R5bGUoKTsKICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAkocmV2aXNpb24gMjIzMjc5KQorKysg
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
MTUgKzYwLDE3IEBAIHN0cnVjdCBFbGVtZW50VXBkYXRlIHsKIHN0cnVjdCBUZXh0VXBkYXRlIHsK
ICNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgVGV4dFVw
ZGF0ZSgpID0gZGVmYXVsdDsKLSAgICBUZXh0VXBkYXRlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIFRleHRVcGRhdGUodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPj4gaW5oZXJpdGVk
RGlzcGxheUNvbnRlbnRzU3R5bGUpCiAgICAgICAgIDogb2Zmc2V0IHsgb2Zmc2V0IH0KICAgICAg
ICAgLCBsZW5ndGggeyBsZW5ndGggfQorICAgICAgICAsIGluaGVyaXRlZERpc3BsYXlDb250ZW50
c1N0eWxlIHsgV1RGTW92ZShpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkgfQogICAgIHsK
ICAgICB9CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25l
ZCBsZW5ndGggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4+IGluaGVyaXRlZERpc3Bs
YXlDb250ZW50c1N0eWxlOwogfTsKIAogY2xhc3MgVXBkYXRlIHsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyMzI3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE3LTEwLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
KworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlzcGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxk
IHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBlZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczogMTAgbW9yZSBkaXNwbGF5OmNvbnRlbnRzIHRlc3RzIHBhc3MuCisKKzIwMTctMTAt
MTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbm9k
ZXMgd2l0aCBkaXNwbGF5OmNvbnRlbnRzIHBhcmVudCBzaG91bGQgcmVuZGVyIGFzIGlmIHRoZXkg
d2VyZSB3cmFwcGVkIGluIGFuIHVuc3R5bGVkIDxzcGFuPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiAxMCBtb3JlIGRp
c3BsYXk6Y29udGVudHMgdGVzdHMgcGFzcy4KKwogMjAxNy0xMC0xMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICAidGV4dC9odG1sIiBkYXRhIGlzIG5v
dCBleHBvc2VkIHdoZW4gZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIGFjcm9zcyBvcmlnaW5zCkluZGV4
OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIyMzI3OSkKKysrIExheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNzcsMzAgKzEyNzcsMjAgQEAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ubwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIFNUQVJUIE9GIGRpc3BsYXk6IGNvbnRlbnRzIGZhaWx1
cmVzCiAKLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWxpc3QtMDAxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtdGFi
bGUtMDAyLWlubGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3
NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlz
cGxheS1jb250ZW50cy1pbmxpbmUtZmxleC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1iZWZvcmUtYWZ0ZXItZmlyc3Qt
bGV0dGVyLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxh
eS1jb250ZW50cy1keW5hbWljLWJlZm9yZS1hZnRlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy10YWJsZS0wMDItbm9u
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50
cy1mbGV4LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxh
eS1jb250ZW50cy10YWJsZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxh
eS0zL2Rpc3BsYXktY29udGVudHMtYmVmb3JlLWFmdGVyLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy10YWJsZS0wMDIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1p
bmxpbmUtZmxleC0wMDEtbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5
LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAwMS1pbmxpbmUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4
LTAwMi1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0Nzcg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5
LWNvbnRlbnRzLWZsZXgtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXkt
My9kaXNwbGF5LWNvbnRlbnRzLWJlZm9yZS1hZnRlci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktZmxvdy1yb290LTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLWlubGluZS1m
bGV4LTAwMS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4LTAwMy1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtdGFibGUtMDAxLW5v
bmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVu
dHMtc3RhdGUtY2hhbmdlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5
LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLWZsZXgtMDAyLWlubGluZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLWZsZXgt
MDAzLWlubGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxh
eS1jb250ZW50cy1keW5hbWljLWxpc3QtMDAxLWlubGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLWxpc3QtMDAxLW5vbmUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIyMgRU5EIE9GIGRpc3BsYXk6IGNvbnRlbnRz
IGZhaWx1cmVzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>
<flag name="review"
          id="343653"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324006</attachid>
            <date>2017-10-17 02:51:30 -0700</date>
            <delta_ts>2017-10-17 03:18:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>display-contents-anon-wrapper-9.patch</filename>
            <type>text/plain</type>
            <size>21290</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTEwLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IG5vZGVzIHdpdGggZGlz
cGxheTpjb250ZW50cyBwYXJlbnQgc2hvdWxkIHJlbmRlciBhcyBpZiB0aGV5IHdlcmUgd3JhcHBl
ZCBpbiBhbiB1bnN0eWxlZCA8c3Bhbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1k
cmFmdHMvaXNzdWVzLzExMTgKKworICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpjb250
ZW50cztjb2xvcjpncmVlbiI+dGV4dDwvZGl2PgorCisgICAgICAgIG11c3QgcmVzdWx0IGluIGdy
ZWVuIHRleHQgZXZlbiB0aG91Z2ggZGl2IGRvZXNuJ3QgZ2VuZXJhdGUgYSBib3guCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBiZWhhdmlvciBieSB3cmFwcGluZyB0ZXh0IHJl
bmRlcmVycyB3aXRoIGRpc3BsYXk6Y29udGVudHMgcGFyZW50IGVsZW1lbnQKKyAgICAgICAgaW4g
YW4gYW5vbnltb3VzIGlubGluZSBib3ggdGhhdCByZWNlaXZlcyBpdHMgc3R5bGUgYnkgaW5oZXJp
dGluZyBmcm9tIHRoZSBwYXJlbnQgZWxlbWVudC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5lU3R5bGUgY29uc3QpOgorCisgICAgICAgICAg
ICBTeW50aGVzaXplIHRoZSBmaXJzdCBsaW5lIHN0eWxlIGluIGRpc3BsYXk6Y29udGVudHMgcGFy
ZW50IGNhc2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmREZXN0cm95Um9vdEluY2x1ZGluZ0Fub255bW91cyk6CisKKyAgICAg
ICAgICAgIEZhY3RvciBpbnRvIGEgZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVhbmluZ1VwQW5vbnltb3VzV3Jh
cHBlcnMpOgorCisgICAgICAgICAgICBHZXQgcmlkIG9mIHRoZSBhbm9ueW1vdXMgd3JhcHBlciBp
ZiBpdCBleGlzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OlJlbmRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6c2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyk6CisKKyAgICAg
ICAgICAgIEFkZCBhIHdlYWsgbWVtYmVyIChpbXBsZW1lbnRlZCBhcyBhIHJhcmUgZGF0YSBtYXAp
IGZvciBob2xkaW5nIHRoZSB3cmFwcGVyIHBvaW50ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUpOgor
CisgICAgICAgICAgICBIZWxwZXIgdG8gZ2V0IHRoZSB0ZXh0IHJlbmRlcmVyIGZvciBhIHdyYXBw
ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHN0eWxl
L1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRleHRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJl
bmRlcmVyKToKKworICAgICAgICAgICAgQ3JlYXRlIHRoZSB3cmFwcGVyIGlmIG5lZWRlZC4KKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorCisgICAgICAgICAg
ICBDb21wdXRlIHRoZSB3cmFwcGVyIHN0eWxlIGJ5IGluaGVyaXRpbmcgZnJvbSB0aGUgZGlzcGxh
eTpjb250ZW50cyBwYXJlbnQuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRleHRVcGRhdGU6OlRleHRVcGRhdGUpOgorCiAyMDE3LTEw
LTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IERvbid0IHVzZSBpbnRyaW5zaWMgd2lkdGggaWYgb3VyIGNvbnRhaW5lcidzIHdpZHRoIGlzIHpl
cm8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzMjc5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3MSw3ICsx
ODcxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIAogICAgIFNl
dEZvclNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwg
dHJ1ZSk7CiAKICAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpV
cGRhdGU+KCp0aGlzKTsKLSAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZS
ZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0IH0pOworICAgIHRleHRVcGRhdGUtPmFk
ZFRleHQodGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQs
IHN0ZDo6bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRh
dGVyKCp0aGlzKTsKICAgICByZW5kZXJUcmVlVXBkYXRlci5jb21taXQoV1RGTW92ZSh0ZXh0VXBk
YXRlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMiArMjE3LDMwIEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqZmlyc3RMaW5lU3R5bGUpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlckZv
ckZpcnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkgfHwgIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5
bGUuaXNSZW5kZXJJbmxpbmUoKSkKKyAgICBpZiAoIXJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUu
aXNSZW5kZXJJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBw
YXJlbnRTdHlsZSA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUucGFyZW50KCktPmZpcnN0TGlu
ZVN0eWxlKCk7CiAgICAgaWYgKCZwYXJlbnRTdHlsZSA9PSAmcmVuZGVyZXJGb3JGaXJzdExpbmVT
dHlsZS5wYXJlbnQoKS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAocmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc0Fub255bW91cygpKSB7CisgICAgICAgIGF1
dG8qIHRleHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQYXJlbnQgPSBSZW5kZXJUZXh0Ojpm
aW5kQnlEaXNwbGF5Q29udGVudHNJbmxpbmVXcmFwcGVyQ2FuZGlkYXRlKHJlbmRlcmVyRm9yRmly
c3RMaW5lU3R5bGUpOworICAgICAgICBpZiAoIXRleHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVu
dHNQYXJlbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byogY29t
cG9zZWRUcmVlUGFyZW50RWxlbWVudCA9IHRleHRSZW5kZXJlcldpdGhEaXNwbGF5Q29udGVudHNQ
YXJlbnQtPnRleHROb2RlKCktPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpOworICAgICAg
ICBpZiAoIWNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICBhdXRvIHN0eWxlID0gY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudC0+
c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqY29tcG9zZWRUcmVlUGFyZW50RWxlbWVu
dCwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLT5kaXNw
bGF5KCkgPT0gQ09OVEVOVFMpOworCisgICAgICAgIC8vIFdlIGFjdCBhcyBpZiB0aGVyZSB3YXMg
YW4gdW5zdHlsZWQgPHNwYW4+IGFyb3VuZCB0aGUgdGV4dCBub2RlLiBPbmx5IHN0eWxpbmcgaGFw
cGVucyB2aWEgaW5oZXJpdGFuY2UuCisgICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CisgICAgICAgIGZpcnN0TGluZVN0eWxlLT5pbmhlcml0RnJv
bSgqc3R5bGUpOworICAgICAgICByZXR1cm4gZmlyc3RMaW5lU3R5bGU7CisgICAgfQorCiAgICAg
cmV0dXJuIHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuZWxlbWVudCgpLT5zdHlsZVJlc29sdmVy
KCkuc3R5bGVGb3JFbGVtZW50KCplbGVtZW50KCksICZwYXJlbnRTdHlsZSkucmVuZGVyU3R5bGU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1NSwxNSArMTQ1NSwxMSBAQCB2b2lkIFJlbmRlck9i
amVjdDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlCiAgICAgcGFyZW50KCktPnNldE5lZWRzQm91bmRh
cmllc1VwZGF0ZSgpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlRnJvbVBhcmVudEFu
ZERlc3Ryb3lDbGVhbmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoKQorc3RhdGljIFJlbmRlck9iamVj
dCYgZmluZERlc3Ryb3lSb290SW5jbHVkaW5nQW5vbnltb3VzKFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIpCiB7Ci0gICAgLy8gSWYgdGhlIHRyZWUgaXMgZGVzdHJveWVkLCB0aGVyZSBpcyBubyBuZWVk
IGZvciBhIGNsZWFuLXVwIHBoYXNlLgotICAgIGlmIChyZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQo
KSkgewotICAgICAgICByZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGF1dG8qIGlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMgPSBp
czxSZW5kZXJUZXh0PihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlciku
aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygpIDogbnVsbHB0cjsKIAotICAgIGF1dG8q
IGRlc3Ryb3lSb290ID0gdGhpczsKKyAgICBhdXRvKiBkZXN0cm95Um9vdCA9IGlubGluZVdyYXBw
ZXJGb3JEaXNwbGF5Q29udGVudHMgPyBpbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzIDog
JnJlbmRlcmVyOwogICAgIGF1dG8qIGRlc3Ryb3lSb290UGFyZW50ID0gZGVzdHJveVJvb3QtPnBh
cmVudCgpOwogICAgIHdoaWxlIChkZXN0cm95Um9vdFBhcmVudCAmJiBkZXN0cm95Um9vdFBhcmVu
dC0+aXNBbm9ueW1vdXMoKSkgewogICAgICAgICBpZiAoIWRlc3Ryb3lSb290UGFyZW50LT5pc1Rh
YmxlQ2VsbCgpICYmICFkZXN0cm95Um9vdFBhcmVudC0+aXNUYWJsZVJvdygpCkBAIC0xNDc1LDEx
ICsxNDcxLDIzIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50QW5kRGUKICAg
ICAgICAgZGVzdHJveVJvb3QgPSBkZXN0cm95Um9vdFBhcmVudDsKICAgICAgICAgZGVzdHJveVJv
b3RQYXJlbnQgPSBkZXN0cm95Um9vdFBhcmVudC0+cGFyZW50KCk7CiAgICAgfQorICAgIHJldHVy
biAqZGVzdHJveVJvb3Q7Cit9CisKK3ZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVGcm9tUGFyZW50
QW5kRGVzdHJveUNsZWFuaW5nVXBBbm9ueW1vdXNXcmFwcGVycygpCit7CisgICAgLy8gSWYgdGhl
IHRyZWUgaXMgZGVzdHJveWVkLCB0aGVyZSBpcyBubyBuZWVkIGZvciBhIGNsZWFuLXVwIHBoYXNl
LgorICAgIGlmIChyZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkgeworICAgICAgICByZW1vdmVG
cm9tUGFyZW50QW5kRGVzdHJveSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byYgZGVzdHJveVJvb3QgPSBmaW5kRGVzdHJveVJvb3RJbmNsdWRpbmdBbm9ueW1vdXMoKnRoaXMp
OwogCi0gICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PigqZGVzdHJveVJvb3QpKQotICAgICAgICBk
b3duY2FzdDxSZW5kZXJUYWJsZVJvdz4oKmRlc3Ryb3lSb290KS5jb2xsYXBzZUFuZERlc3Ryb3lB
bm9ueW1vdXNTaWJsaW5nUm93cygpOworICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4oZGVzdHJv
eVJvb3QpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJUYWJsZVJvdz4oZGVzdHJveVJvb3QpLmNv
bGxhcHNlQW5kRGVzdHJveUFub255bW91c1NpYmxpbmdSb3dzKCk7CiAKLSAgICBkZXN0cm95Um9v
dC0+cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKKyAgICBkZXN0cm95Um9vdC5yZW1vdmVG
cm9tUGFyZW50QW5kRGVzdHJveSgpOwogICAgIC8vIFdBUk5JTkc6IHx0aGlzfCBpcyBkZWxldGVk
IGhlcmUuCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJ
KHJldmlzaW9uIDIyMzI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxMiBAQCBzdGF0aWMgSGFzaE1hcDxj
b25zdCBSZW5kZXJUZXh0KiwgU3RyaW5nCiAgICAgcmV0dXJuIG1hcDsKIH0KIAorc3RhdGljIEhh
c2hNYXA8Y29uc3QgUmVuZGVyVGV4dCosIFdlYWtQdHI8UmVuZGVySW5saW5lPj4mIGlubGluZVdy
YXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPGNvbnN0IFJlbmRlclRleHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+PiBtYXA7
CisgICAgcmV0dXJuIG1hcDsKK30KKwogdm9pZCBtYWtlQ2FwaXRhbGl6ZWQoU3RyaW5nKiBzdHJp
bmcsIFVDaGFyIHByZXZpb3VzKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGNoYW5nZSB0aGlz
IHRvIHVzZSB1X3N0clRvVGl0bGUgaW5zdGVhZCBvZiB1X3RvdGl0bGUgYW5kIHRvIGNvbnNpZGVy
IGxvY2FsZS4KQEAgLTE4Myw2ICsxODksNyBAQCBpbmxpbmUgUmVuZGVyVGV4dDo6UmVuZGVyVGV4
dChOb2RlJiBub2RlCiAgICAgLCBtX2tub3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tG
b250cyhmYWxzZSkKICAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2woZmFsc2UpCiAgICAg
LCBtX29yaWdpbmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQoZmFsc2UpCisgICAgLCBtX2hhc0lu
bGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoZmFsc2UpCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICAsIG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgwKQogI2VuZGlmCkBA
IC0yOTIsNiArMjk5LDggQEAgdm9pZCBSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAg
IGlmIChtX29yaWdpbmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQpCiAgICAgICAgIG9yaWdpbmFs
VGV4dE1hcCgpLnJlbW92ZSh0aGlzKTsKIAorICAgIHNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5
Q29udGVudHMobnVsbHB0cik7CisKICAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgp
OwogfQogCkBAIC0xNzM3LDQgKzE3NDYsNDIgQEAgU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJp
bmdWaWV3KHVuc2lnbgogICAgIHJldHVybiBTdHJpbmdWaWV3KGNoYXJhY3RlcnMxNigpICsgc3Rh
cnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOwogfQogCitSZW5kZXJJbmxpbmUqIFJlbmRlclRleHQ6
OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKQoreworICAgIEFTU0VSVChtX2hhc0lu
bGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMgPT0gaW5saW5lV3JhcHBlckZvckRpc3BsYXlD
b250ZW50c01hcCgpLmNvbnRhaW5zKHRoaXMpKTsKKworICAgIGlmICghbV9oYXNJbmxpbmVXcmFw
cGVyRm9yRGlzcGxheUNvbnRlbnRzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50c01hcCgpLmdldCh0aGlzKS5nZXQoKTsK
K30KKwordm9pZCBSZW5kZXJUZXh0OjpzZXRJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRz
KFJlbmRlcklubGluZSogd3JhcHBlcikKK3sKKyAgICBBU1NFUlQobV9oYXNJbmxpbmVXcmFwcGVy
Rm9yRGlzcGxheUNvbnRlbnRzID09IGlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXAo
KS5jb250YWlucyh0aGlzKSk7CisKKyAgICBpZiAoIXdyYXBwZXIpIHsKKyAgICAgICAgaWYgKCFt
X2hhc0lubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHNNYXAoKS5yZW1vdmUodGhp
cyk7CisgICAgICAgIG1faGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA9IGZhbHNl
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29u
dGVudHNNYXAoKS5hZGQodGhpcywgbWFrZVdlYWtQdHIod3JhcHBlcikpOworICAgIG1faGFzSW5s
aW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA9IHRydWU7Cit9CisKK1JlbmRlclRleHQqIFJl
bmRlclRleHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIpCit7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRlcmVy
LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PigqZmlyc3RDaGlsZCk7CisgICAgaWYgKHRleHRSZW5kZXJlci5pbmxpbmVXcmFw
cGVyRm9yRGlzcGxheUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOworICAgIEFTU0VSVChy
ZW5kZXJlci5maXJzdENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOworICAgIHJldHVy
biAmdGV4dFJlbmRlcmVyOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMjIzMjc5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5
LDYgKzE3OSwxMSBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4+IGRyYWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHModW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKKyAgICBSZW5kZXJJbmxpbmUq
IGlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKTsKKyAgICB2b2lkIHNldElubGluZVdy
YXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5saW5lKik7CisKKyAgICBzdGF0aWMgUmVu
ZGVyVGV4dCogZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5k
ZXJFbGVtZW50Jik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoKTsKICAgICB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlOwpAQCAtMjMzLDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX2tub3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tGb250cyA6IDE7
CiAgICAgdW5zaWduZWQgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9vcmlnaW5hbFRleHREaWZmZXJzRnJvbVJlbmRlcmVkIDogMTsKKyAgICB1bnNpZ25lZCBt
X2hhc0lubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMgOiAxOwogICAgIHVuc2lnbmVkIG1f
Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgOiAxOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5j
cHAJKHJldmlzaW9uIDIyMzI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlBz
ZXVkb0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlckZp
cnN0TGV0dGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50
LmgiCkBAIC00MjYsMjYgKzQyNyw0OCBAQCBzdGF0aWMgYm9vbCB0ZXh0UmVuZGVyZXJJc05lZWRl
ZChjb25zdCBUCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZVRleHRS
ZW5kZXJlcihUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVHJlZVBvc2l0aW9uJiByZW5kZXJUcmVlUG9z
aXRpb24pCitzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dE5vZGUsIFJl
bmRlclRyZWVQb3NpdGlvbiYgcmVuZGVyVHJlZVBvc2l0aW9uLCBjb25zdCBTdHlsZTo6VGV4dFVw
ZGF0ZSogdGV4dFVwZGF0ZSkKIHsKICAgICBBU1NFUlQoIXRleHROb2RlLnJlbmRlcmVyKCkpOwog
Ci0gICAgYXV0byBuZXdSZW5kZXJlciA9IHRleHROb2RlLmNyZWF0ZVRleHRSZW5kZXJlcihyZW5k
ZXJUcmVlUG9zaXRpb24ucGFyZW50KCkuc3R5bGUoKSk7Ci0gICAgQVNTRVJUKG5ld1JlbmRlcmVy
KTsKKyAgICBhdXRvIHRleHRSZW5kZXJlciA9IHRleHROb2RlLmNyZWF0ZVRleHRSZW5kZXJlcihy
ZW5kZXJUcmVlUG9zaXRpb24ucGFyZW50KCkuc3R5bGUoKSk7CiAKICAgICByZW5kZXJUcmVlUG9z
aXRpb24uY29tcHV0ZU5leHRTaWJsaW5nKHRleHROb2RlKTsKIAotICAgIGlmICghcmVuZGVyVHJl
ZVBvc2l0aW9uLmNhbkluc2VydCgqbmV3UmVuZGVyZXIpKQorICAgIGlmICghcmVuZGVyVHJlZVBv
c2l0aW9uLmNhbkluc2VydCgqdGV4dFJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
dGV4dE5vZGUuc2V0UmVuZGVyZXIobmV3UmVuZGVyZXIuZ2V0KCkpOwotICAgIHJlbmRlclRyZWVQ
b3NpdGlvbi5pbnNlcnQoV1RGTW92ZShuZXdSZW5kZXJlcikpOworICAgIHRleHROb2RlLnNldFJl
bmRlcmVyKHRleHRSZW5kZXJlci5nZXQoKSk7CisKKyAgICBpZiAodGV4dFVwZGF0ZSAmJiB0ZXh0
VXBkYXRlLT5pbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSAmJiAqdGV4dFVwZGF0ZS0+aW5o
ZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGUpIHsKKyAgICAgICAgLy8gV3JhcCB0ZXh0IHJlbmRl
cmVyIGludG8gYW5vbnltb3VzIGlubGluZSBzbyB3ZSBjYW4gZ2l2ZSBpdCBhIHN0eWxlLgorICAg
ICAgICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgIjxkaXYgc3R5bGU9J2Rpc3BsYXk6Y29udGVudHM7
Y29sb3I6Z3JlZW4nPnRleHQ8L2Rpdj4iIHR5cGUgY2FzZXMKKyAgICAgICAgYXV0byBuZXdEaXNw
bGF5Q29udGVudHNBbm9ueW1vdXNXcmFwcGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5l
Pih0ZXh0Tm9kZS5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUoKip0ZXh0VXBkYXRlLT5p
bmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkpOworICAgICAgICBuZXdEaXNwbGF5Q29udGVu
dHNBbm9ueW1vdXNXcmFwcGVyLT5pbml0aWFsaXplU3R5bGUoKTsKKyAgICAgICAgYXV0byYgZGlz
cGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlciA9ICpuZXdEaXNwbGF5Q29udGVudHNBbm9ueW1v
dXNXcmFwcGVyOworICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24uaW5zZXJ0KFdURk1vdmUobmV3
RGlzcGxheUNvbnRlbnRzQW5vbnltb3VzV3JhcHBlcikpOworCisgICAgICAgIHRleHRSZW5kZXJl
ci0+c2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygmZGlzcGxheUNvbnRlbnRzQW5v
bnltb3VzV3JhcHBlcik7CisgICAgICAgIGRpc3BsYXlDb250ZW50c0Fub255bW91c1dyYXBwZXIu
YWRkQ2hpbGQoV1RGTW92ZSh0ZXh0UmVuZGVyZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHJlbmRlclRyZWVQb3NpdGlvbi5pbnNlcnQoV1RGTW92ZSh0ZXh0UmVuZGVyZXIpKTsK
IH0KIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRl
eHQsIGNvbnN0IFN0eWxlOjpUZXh0VXBkYXRlKiB0ZXh0VXBkYXRlKQogewogICAgIGF1dG8qIGV4
aXN0aW5nUmVuZGVyZXIgPSB0ZXh0LnJlbmRlcmVyKCk7CiAgICAgYm9vbCBuZWVkc1JlbmRlcmVy
ID0gdGV4dFJlbmRlcmVySXNOZWVkZWQodGV4dCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkpOworCisg
ICAgaWYgKGV4aXN0aW5nUmVuZGVyZXIgJiYgdGV4dFVwZGF0ZSAmJiB0ZXh0VXBkYXRlLT5pbmhl
cml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkgeworICAgICAgICBpZiAoZXhpc3RpbmdSZW5kZXJl
ci0+aW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygpIHx8ICp0ZXh0VXBkYXRlLT5pbmhl
cml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIHVwZGF0ZSB3aXRob3V0IHRlYXJkb3duLgorICAgICAgICAgICAgdGVhckRvd25SZW5kZXJl
cih0ZXh0KTsKKyAgICAgICAgICAgIGV4aXN0aW5nUmVuZGVyZXIgPSBudWxscHRyOworICAgICAg
ICB9CisgICAgfQorCiAgICAgaWYgKGV4aXN0aW5nUmVuZGVyZXIpIHsKICAgICAgICAgaWYgKG5l
ZWRzUmVuZGVyZXIpIHsKICAgICAgICAgICAgIGlmICh0ZXh0VXBkYXRlKQpAQCAtNDU4LDcgKzQ4
MSw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVRleHRSZW5kZXIKICAgICB9CiAg
ICAgaWYgKCFuZWVkc1JlbmRlcmVyKQogICAgICAgICByZXR1cm47Ci0gICAgY3JlYXRlVGV4dFJl
bmRlcmVyKHRleHQsIHJlbmRlclRyZWVQb3NpdGlvbigpKTsKKyAgICBjcmVhdGVUZXh0UmVuZGVy
ZXIodGV4dCwgcmVuZGVyVHJlZVBvc2l0aW9uKCksIHRleHRVcGRhdGUpOwogICAgIGludmFsaWRh
dGVXaGl0ZXNwYWNlT25seVRleHRTaWJsaW5nc0FmdGVyQXR0YWNoSWZOZWVkZWQodGV4dCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJl
dmlzaW9uIDIyMzI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDYgKzM1MCwxOCBAQCBzdGF0aWMgYm9vbCBoYXNM
b2FkaW5nU3R5bGVzaGVldChjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbmhlcml0ZWREaXNwbGF5Q29udGVu
dHNTdHlsZUlmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRFbGVtZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkKK3sKKyAgICBpZiAocGFyZW50RWxlbWVu
dFN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgaWYgKHBhcmVudEJveFN0eWxlICYmICFwYXJlbnRCb3hTdHlsZS0+aW5oZXJpdGVkTm90RXF1
YWwoJnBhcmVudEVsZW1lbnRTdHlsZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8v
IENvbXB1dGUgc3R5bGUgZm9yIGltYWdpbmFyeSB1bnN0eWxlZCA8c3Bhbj4gYXJvdW5kIHRoZSB0
ZXh0IG5vZGUuCisgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKKyAg
ICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50RWxlbWVudFN0eWxlKTsKKyAgICByZXR1cm4gc3R5
bGU7Cit9CisKIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKIHsKICAg
ICBBU1NFUlQobV9wYXJlbnRTdGFjay5zaXplKCkgPT0gMSk7CkBAIC0zNzQsOCArMzg2LDEzIEBA
IHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKIAogICAgICAgICBpZiAo
aXM8VGV4dD4obm9kZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHQgPSBkb3duY2FzdDxUZXh0
Pihub2RlKTsKLSAgICAgICAgICAgIGlmICh0ZXh0LnN0eWxlVmFsaWRpdHkoKSA+PSBWYWxpZGl0
eTo6U3VidHJlZUFuZFJlbmRlcmVyc0ludmFsaWQgJiYgcGFyZW50LmNoYW5nZSAhPSBEZXRhY2gp
Ci0gICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZFRleHQodGV4dCwgcGFyZW50LmVsZW1lbnQs
IHsgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgodGV4dC5zdHlsZVZhbGlkaXR5
KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJlcnNJbnZhbGlkICYmIHBhcmVudC5jaGFu
Z2UgIT0gRGV0YWNoKSB8fCBwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRTKSB7Cisg
ICAgICAgICAgICAgICAgVGV4dFVwZGF0ZSB0ZXh0VXBkYXRlOworICAgICAgICAgICAgICAgIHRl
eHRVcGRhdGUuaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGUgPSBjcmVhdGVJbmhlcml0ZWRE
aXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKHBhcmVudC5zdHlsZSwgcGFyZW50Qm94U3R5bGUo
KSk7CisKKyAgICAgICAgICAgICAgICBtX3VwZGF0ZS0+YWRkVGV4dCh0ZXh0LCBwYXJlbnQuZWxl
bWVudCwgV1RGTW92ZSh0ZXh0VXBkYXRlKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHRleHQuc2V0SGFzVmFsaWRTdHlsZSgpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tp
cHBpbmdDaGlsZHJlbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCShyZXZp
c2lvbiAyMjMyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCwxNSArNjAsMTcgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGUgewogc3Ry
dWN0IFRleHRVcGRhdGUgewogI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVH
QVRFUykKICAgICBUZXh0VXBkYXRlKCkgPSBkZWZhdWx0OwotICAgIFRleHRVcGRhdGUodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgVGV4dFVwZGF0ZSh1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgc3RkOjpvcHRpb25hbDxzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+PiBpbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSkKICAgICAgICAgOiBvZmZzZXQg
eyBvZmZzZXQgfQogICAgICAgICAsIGxlbmd0aCB7IGxlbmd0aCB9CisgICAgICAgICwgaW5oZXJp
dGVkRGlzcGxheUNvbnRlbnRzU3R5bGUgeyBXVEZNb3ZlKGluaGVyaXRlZERpc3BsYXlDb250ZW50
c1N0eWxlKSB9CiAgICAgewogICAgIH0KICNlbmRpZgogCiAgICAgdW5zaWduZWQgb2Zmc2V0IHsg
MCB9OwogICAgIHVuc2lnbmVkIGxlbmd0aCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSB9OworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
Pj4gaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGU7CiB9OwogCiBjbGFzcyBVcGRhdGUgewpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjIzMjc5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMTAtMTcgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbm9kZXMgd2l0aCBkaXNwbGF5OmNvbnRl
bnRzIHBhcmVudCBzaG91bGQgcmVuZGVyIGFzIGlmIHRoZXkgd2VyZSB3cmFwcGVkIGluIGFuIHVu
c3R5bGVkIDxzcGFuPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc4MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczogMTAgbW9yZSBkaXNwbGF5OmNvbnRlbnRzIHRlc3RzIHBh
c3MuCisKIDIwMTctMTAtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgInRleHQvaHRtbCIgZGF0YSBpcyBub3QgZXhwb3NlZCB3aGVuIGRyYWdnaW5n
IGFuZCBkcm9wcGluZyBhY3Jvc3Mgb3JpZ2lucwpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAyMjMyNzkpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjc3LDMwICsxMjc3LDIwIEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvbm8KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMj
IyBTVEFSVCBPRiBkaXNwbGF5OiBjb250ZW50cyBmYWlsdXJlcwogCi13ZWJraXQub3JnL2IvMTU3
NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlz
cGxheS1jb250ZW50cy1saXN0LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNw
bGF5LTMvZGlzcGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAwMi1pbmxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtaW5saW5lLWZs
ZXgtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNv
bnRlbnRzLWR5bmFtaWMtYmVmb3JlLWFmdGVyLWZpcnN0LWxldHRlci0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1iZWZv
cmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0
NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNw
bGF5LWNvbnRlbnRzLWR5bmFtaWMtdGFibGUtMDAyLW5vbmUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZmxleC0wMDMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtdGFibGUtMDAxLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWJl
Zm9yZS1hZnRlci0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1
NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rp
c3BsYXktY29udGVudHMtdGFibGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRp
c3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtaW5saW5lLWZsZXgtMDAxLW5vbmUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHlu
YW1pYy10YWJsZS0wMDEtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3Bs
YXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMtZmxleC0wMDItbm9uZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1mbGV4LTAwMi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3NDc3IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlzcGxheS1jb250ZW50cy1iZWZv
cmUtYWZ0ZXItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0
NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNw
bGF5LWZsb3ctcm9vdC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0z
L2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1pbmxpbmUtZmxleC0wMDEtaW5saW5lLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLWR5bmFtaWMt
ZmxleC0wMDMtbm9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU3
NDc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1kaXNwbGF5LTMvZGlz
cGxheS1jb250ZW50cy1keW5hbWljLXRhYmxlLTAwMS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xNTc0NzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWRpc3BsYXktMy9kaXNwbGF5LWNvbnRlbnRzLXN0YXRlLWNoYW5nZS0wMDEuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHlu
YW1pYy1mbGV4LTAwMi1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxh
eS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1mbGV4LTAwMy1pbmxpbmUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3BsYXktY29udGVudHMtZHluYW1pYy1saXN0
LTAwMS1pbmxpbmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE1NzQ3
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZGlzcGxheS0zL2Rpc3Bs
YXktY29udGVudHMtZHluYW1pYy1saXN0LTAwMS1ub25lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAogIyMjIEVORCBPRiBkaXNwbGF5OiBjb250ZW50cyBmYWlsdXJlcwogIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>