<?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>212424</bug_id>
          
          <creation_ts>2020-05-27 11:45:20 -0700</creation_ts>
          <short_desc>REGRESSION(r260023): ITP sparse plist decoding fails silently</short_desc>
          <delta_ts>2020-05-27 17:48:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210414</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1656477</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-27 11:45:20 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/260023 broke the build:
Regression in ITP sparse plist decoding.

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656478</commentid>
    <comment_count>1</comment_count>
      <attachid>400358</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-27 11:45:25 -0700</bug_when>
    <thetext>Created attachment 400358
REVERT of r260023

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656481</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 11:46:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/63683055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656484</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 11:47:12 -0700</bug_when>
    <thetext>*** Bug 212422 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656489</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 11:48:47 -0700</bug_when>
    <thetext>*** Bug 212423 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656500</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 11:56:22 -0700</bug_when>
    <thetext>Looks like the revert patch needs to be fixed up.  Working on that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656528</commentid>
    <comment_count>6</comment_count>
      <attachid>400367</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 13:06:24 -0700</bug_when>
    <thetext>Created attachment 400367
Changes required  on top of revert

Changes necessary on top of revert when rolling out r260023.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656532</commentid>
    <comment_count>7</comment_count>
      <attachid>400370</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 13:09:47 -0700</bug_when>
    <thetext>Created attachment 400370
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656579</commentid>
    <comment_count>8</comment_count>
      <attachid>400370</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-27 14:19:48 -0700</bug_when>
    <thetext>Comment on attachment 400370
Patch v2

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

&gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:126
&gt; +static void decodeHashCountedSet(KeyedDecoder&amp; decoder, const String&amp; label, HashCountedSet&lt;RegistrableDomain&gt;&amp; hashCountedSet)

Wouldn&apos;t it be simpler to just return true here with a comment explaining why we need to always return true here, for compatibility?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656585</commentid>
    <comment_count>9</comment_count>
      <attachid>400370</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-27 14:27:24 -0700</bug_when>
    <thetext>Comment on attachment 400370
Patch v2

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

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:126
&gt;&gt; +static void decodeHashCountedSet(KeyedDecoder&amp; decoder, const String&amp; label, HashCountedSet&lt;RegistrableDomain&gt;&amp; hashCountedSet)
&gt; 
&gt; Wouldn&apos;t it be simpler to just return true here with a comment explaining why we need to always return true here, for compatibility?

That would work too. Or it could return an optional boolean where the tristate is true == found and decoded a value, nullopt == didn&apos;t find a value, false == found a value but failed to decode it.

Yet another option is to return a bool but create empty instances for false in ResourceLoadStatistics::decode() instead of bailing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656620</commentid>
    <comment_count>10</comment_count>
      <attachid>400370</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 15:24:04 -0700</bug_when>
    <thetext>Comment on attachment 400370
Patch v2

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

&gt;&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:126
&gt;&gt;&gt; +static void decodeHashCountedSet(KeyedDecoder&amp; decoder, const String&amp; label, HashCountedSet&lt;RegistrableDomain&gt;&amp; hashCountedSet)
&gt;&gt; 
&gt;&gt; Wouldn&apos;t it be simpler to just return true here with a comment explaining why we need to always return true here, for compatibility?
&gt; 
&gt; That would work too. Or it could return an optional boolean where the tristate is true == found and decoded a value, nullopt == didn&apos;t find a value, false == found a value but failed to decode it.
&gt; 
&gt; Yet another option is to return a bool but create empty instances for false in ResourceLoadStatistics::decode() instead of bailing out.

Now is not the time to redesign the code.  We&apos;re trying to do a rollout.

I went with a third (hybrid) option that changes decodeHashCountedSet() and decodeHashSet() to return the `bool` value from KeyedDecoder::decodeObjects(), which fixes the compiler warning but leaves the return value of these static methods unchecked.  Semantically, this is no worse than what the patch was doing before—we just pass the bool up to a different function to ignore, and assume the caller knows what it&apos;s doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656621</commentid>
    <comment_count>11</comment_count>
      <attachid>400389</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 15:24:22 -0700</bug_when>
    <thetext>Created attachment 400389
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656632</commentid>
    <comment_count>12</comment_count>
      <attachid>400370</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 15:33:11 -0700</bug_when>
    <thetext>Comment on attachment 400370
Patch v2

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

&gt;&gt;&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:126
&gt;&gt;&gt;&gt; +static void decodeHashCountedSet(KeyedDecoder&amp; decoder, const String&amp; label, HashCountedSet&lt;RegistrableDomain&gt;&amp; hashCountedSet)
&gt;&gt;&gt; 
&gt;&gt;&gt; Wouldn&apos;t it be simpler to just return true here with a comment explaining why we need to always return true here, for compatibility?
&gt;&gt; 
&gt;&gt; That would work too. Or it could return an optional boolean where the tristate is true == found and decoded a value, nullopt == didn&apos;t find a value, false == found a value but failed to decode it.
&gt;&gt; 
&gt;&gt; Yet another option is to return a bool but create empty instances for false in ResourceLoadStatistics::decode() instead of bailing out.
&gt; 
&gt; Now is not the time to redesign the code.  We&apos;re trying to do a rollout.
&gt; 
&gt; I went with a third (hybrid) option that changes decodeHashCountedSet() and decodeHashSet() to return the `bool` value from KeyedDecoder::decodeObjects(), which fixes the compiler warning but leaves the return value of these static methods unchecked.  Semantically, this is no worse than what the patch was doing before—we just pass the bool up to a different function to ignore, and assume the caller knows what it&apos;s doing.

Could also add a IGNORE_CLANG_WARNINGS_BEGIN(&quot;unused-result&quot;)/IGNORE_CLANG_WARNINGS_END around the KeyedDecoder::decodeObjects() function calls and change decodeHashCountedSet() and decodeHashSet() back to void functions.  Maybe that&apos;s a bit more self-documenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656636</commentid>
    <comment_count>13</comment_count>
      <attachid>400394</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 15:39:17 -0700</bug_when>
    <thetext>Created attachment 400394
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656639</commentid>
    <comment_count>14</comment_count>
      <attachid>400394</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-27 15:41:06 -0700</bug_when>
    <thetext>Comment on attachment 400394
Patch v4

Yes, I like this version better. Self-documenting, as you say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656653</commentid>
    <comment_count>15</comment_count>
      <attachid>400389</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 15:57:00 -0700</bug_when>
    <thetext>Comment on attachment 400389
Patch v3

Marking obsolete in order to take Patch v4.  Thanks for the review, Alex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656658</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 16:04:44 -0700</bug_when>
    <thetext>Waiting for EWS before marking cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656696</commentid>
    <comment_count>17</comment_count>
      <attachid>400394</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-27 17:42:21 -0700</bug_when>
    <thetext>Comment on attachment 400394
Patch v4

Windows layout test failures appear to be unrelated to this change, so marking cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656702</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-27 17:48:47 -0700</bug_when>
    <thetext>Committed r262228: &lt;https://trac.webkit.org/changeset/262228&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400394.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400358</attachid>
            <date>2020-05-27 11:45:25 -0700</date>
            <delta_ts>2020-05-27 13:06:24 -0700</delta_ts>
            <desc>REVERT of r260023</desc>
            <filename>bug-212424-20200527184524.patch</filename>
            <type>text/plain</type>
            <size>13681</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwMzM0YzNmYjJlODg1
NWI4Njg1MGI3ZjU1NjAyZDdiZTM0NGVjYy4uYmY2MDRjZWMyMmI1ODRhNjEwNTgwZWViMzY4YmM4
MTQwNjRmNTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA1LTI3ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2MDAyMy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQyNAorCisgICAgICAgIFJlZ3Jlc3Npb24gaW4gSVRQIHNwYXJzZSBw
bGlzdCBkZWNvZGluZy4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IktleWVkRGVjb2RlciBmdW5jdGlvbnMgaW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcy57Y3BwLGh9
CisgICAgICAgIHNob3VsZCByZXR1cm4gYm9vbCBhbmQgdXNlIFdBUk5fVU5VU0VEX1JFVFVSTiIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDQxNAor
ICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjYwMDIzCisKIDIwMjAt
MDUtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlcGxhY2UgYGZlYXR1cmVHdWFyZGAgYW5kIGBhdmFpbGFiaWxpdHlgIHdpdGgg
YSBjb21iaW5lZCBgY29uZGl0aW9uYCB0aGF0IGFjY2VwdHMgYW55IG1hY3JvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggYWE4NGNi
MDQ0NzY0OTE2MGE2YTU0MGMwYTRkZDNmOTdhYWM5ZTgwZi4uOWEzMTNjOTA0ZDdkMWQxMmRiMGIz
MzZiOGFkYzg1Mjk1YjM0YTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtMTIzLDEwICsxMjMsMTAgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVIYXNoQ291bnRl
ZFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hDb3Vu
dGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaENvdW50ZWRTZXQpCitzdGF0aWMgdm9pZCBk
ZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaENvdW50ZWRTZXQp
CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gaWdub3JlOwotICAgIHJldHVybiBkZWNvZGVyLmRlY29k
ZU9iamVjdHMobGFiZWwsIGlnbm9yZSwgWyZoYXNoQ291bnRlZFNldF0oS2V5ZWREZWNvZGVyJiBk
ZWNvZGVySW5uZXIsIFN0cmluZyYgZG9tYWluKSB7CisgICAgZGVjb2Rlci5kZWNvZGVPYmplY3Rz
KGxhYmVsLCBpZ25vcmUsIFsmaGFzaENvdW50ZWRTZXRdKEtleWVkRGVjb2RlciYgZGVjb2Rlcklu
bmVyLCBTdHJpbmcmIGRvbWFpbikgewogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVT
dHJpbmcoIm9yaWdpbiIsIGRvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIApAQCAtMTM5LDEwICsxMzksMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QKICAgICB9
KTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hTZXQoS2V5
ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGtl
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGhhc2hTZXQpCitzdGF0aWMgdm9pZCBkZWNv
ZGVIYXNoU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBrZXksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoU2V0KQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IGlnbm9yZTsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVPYmpl
Y3RzKGxhYmVsLCBpZ25vcmUsIFsmaGFzaFNldCwgJmtleV0oS2V5ZWREZWNvZGVyJiBkZWNvZGVy
SW5uZXIsIFN0cmluZyYgZG9tYWluKSB7CisgICAgZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVs
LCBpZ25vcmUsIFsmaGFzaFNldCwgJmtleV0oS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIsIFN0
cmluZyYgZG9tYWluKSB7CiAgICAgICAgIGlmICghZGVjb2RlcklubmVyLmRlY29kZVN0cmluZyhr
ZXksIGRvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMTUy
LDI0ICsxNTIsMjIgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hT
ZXQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25TZXQo
S2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBPcHRpb25TZXQ8VD4m
IG9wdGlvblNldCkKK3N0YXRpYyB2b2lkIGRlY29kZU9wdGlvblNldChLZXllZERlY29kZXImIGRl
Y29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogewog
ICAgIHVpbnQ2NF90IG9wdGlvblNldEJpdE1hc2sgPSAwOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVVSW50NjQobGFiZWwsIG9wdGlvblNldEJpdE1hc2spKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgZGVjb2Rlci5kZWNvZGVVSW50NjQobGFiZWwsIG9wdGlvblNldEJpdE1hc2spOwogICAg
IG9wdGlvblNldCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdyhvcHRpb25TZXRCaXRNYXNrKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRm9udEhhc2hTZXQoS2V5ZWREZWNvZGVy
JiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBIYXNoU2V0PFN0cmluZz4mIGhhc2hTZXQp
CitzdGF0aWMgdm9pZCBkZWNvZGVGb250SGFzaFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIEhhc2hTZXQ8U3RyaW5nPiYgaGFzaFNldCkKIHsKLSAgICByZXR1
cm4gZGVjb2RlSGFzaFNldChkZWNvZGVyLCBsYWJlbCwgImZvbnQiLCBoYXNoU2V0KTsKKyAgICBk
ZWNvZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAiZm9udCIsIGhhc2hTZXQpOwogfQogICAgIAot
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3Jk
KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ2FudmFzQWN0aXZp
dHlSZWNvcmQmIGNhbnZhc0FjdGl2aXR5UmVjb3JkKQorc3RhdGljIHZvaWQgZGVjb2RlQ2FudmFz
QWN0aXZpdHlSZWNvcmQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCiB7Ci0gICAgcmV0
dXJuIGRlY29kZXIuZGVjb2RlT2JqZWN0KGxhYmVsLCBjYW52YXNBY3Rpdml0eVJlY29yZCwgW10g
KEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFz
QWN0aXZpdHlSZWNvcmQpIHsKKyAgICBkZWNvZGVyLmRlY29kZU9iamVjdChsYWJlbCwgY2FudmFz
QWN0aXZpdHlSZWNvcmQsIFtdIChLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgQ2FudmFzQWN0
aXZpdHlSZWNvcmQmIGNhbnZhc0FjdGl2aXR5UmVjb3JkKSB7CiAgICAgICAgIGlmICghZGVjb2Rl
cklubmVyLmRlY29kZUJvb2woIndhc0RhdGFSZWFkIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQud2Fz
RGF0YVJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBpZ25vcmU7CkBAIC0yMDEsODUgKzE5OSw2OCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lv
bgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTdG9yYWdlIGFjY2VzcwotICAgIGlm
IChtb2RlbFZlcnNpb24gPj0gMTUpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29k
ZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3RvcmFn
ZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyIsICJvcmlnaW4iLCBzdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICBpZiAobW9kZWxWZXJzaW9uID49IDE1KQorICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICBlbHNlCisgICAgICAgIGRlY29kZUhhc2hT
ZXQoZGVjb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lT3JpZ2lucyIsICJvcmlnaW4i
LCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9wIGZyYW1l
IHN0YXRzCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAgICBpZiAoIWRlY29k
ZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwg
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNGcm9tIiwgImRvbWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
byk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogICAgIH0g
ZWxzZSBpZiAobW9kZWxWZXJzaW9uID49IDExKSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZDsKLSAgICAg
ICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUbyIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRl
ZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
LmFkZChkb21haW4pOwogICAgICAgICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFi
bGVEb21haW4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgIGlm
ICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
RnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tQ291
bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNGcm9tQ291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbS5hZGQoZG9tYWluKTsKICAgICB9CiAKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE2
KSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIiwgImRvbWFpbiIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2Rlciwg
InRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20pOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbCgiZ290TGlua0Rl
Y29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UiLCBnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2
YWxlbnRSZXNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
aWYgKG1vZGVsVmVyc2lvbiA+PSAxNykgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQ7Ci0gICAg
ICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lTG9hZGVkVGhp
cmRQYXJ0eVNjcmlwdHMiLCB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJ0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgdG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6
IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkLnZhbHVlcygpKQogICAgICAg
ICAgICAgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cy5hZGQoZG9tYWluKTsKICAgICB9
CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwotICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpIHsK
LSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSBpZiAobW9kZWxWZXJzaW9uID49IDE0
KSB7CisgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkKKyAgICAgICAgZGVjb2RlSGFzaFNldChk
ZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTQp
IHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVk
U2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWluc0NvdW50ZWQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucyIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKICAgICAgICAg
Zm9yIChhdXRvJiBkb21haW4gOiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZC52
YWx1ZXMoKSkKICAgICAgICAgICAgIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKGRv
bWFpbik7CiAgICAgfQogCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKICAgICBpZiAobW9kZWxW
ZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYg
KCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwg
ImRvbWFpbiIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNo
U2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIs
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgICAgICBkZWNvZGVIYXNoU2V0
KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgImRvbWFpbiIsIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tKTsKICAgICB9IGVsc2UgewogICAgICAgICBIYXNoQ291bnRlZFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50
ZWQ7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
Q291bnRlZCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWlu
KTsKIAogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQ7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaENvdW50
ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpOwogICAgICAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVk
LnZhbHVlcygpKQogICAgICAgICAgICAgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQo
ZG9tYWluKTsKICAgICAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewogICAgICAgICAgICAg
SGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb21Db3VudGVkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCk7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLmFkZChkb21haW4pOwogICAgICAgICB9CkBAIC0zMTgsMjYgKzI5OSwy
MCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRl
Y29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogICAgIGxhc3RTZWVuID0gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGxhc3RTZWVuVGltZUFzRG91YmxlKTsKIAogICAgIGlmIChtb2RlbFZlcnNp
b24gPj0gMTEpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwgdGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24i
LCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pKQogICAgICAg
ICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uID0gMDsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNj
ZXNzQVBJIiwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkp
IHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlE
dWVUb1N0b3JhZ2VBY2Nlc3NBUEkpKQogICAgICAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQogICAg
IGlmIChtb2RlbFZlcnNpb24gPj0gMTMpIHsKLSAgICAgICAgaWYgKCEoZGVjb2RlRm9udEhhc2hT
ZXQoZGVjb2RlciwgImZvbnRzRmFpbGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpCi0gICAg
ICAgICAgICAmJiBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlM
b2FkZWQiLCBmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCkKLSAgICAgICAgICAgICYmIGRlY29kZUhh
c2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNj
ZXNzZWRXZWJBUElzIiwgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2Vi
QVBJcykKLSAgICAgICAgICAgICYmIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGRlY29kZXIs
ICJjYW52YXNBY3Rpdml0eVJlY29yZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkKQotICAgICAgICAg
ICAgJiYgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3Nl
ZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCkKLSAgICAgICAgICAgICYmIGRl
Y29kZU9wdGlvblNldChkZWNvZGVyLCAic2NyZWVuRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIiwg
c2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9CisgICAgICAgIGRlY29kZUZvbnRIYXNoU2V0KGRlY29kZXIsICJmb250c0ZhaWxl
ZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKTsKKyAgICAgICAgZGVjb2RlRm9udEhhc2hTZXQo
ZGVjb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkIiwgZm9udHNTdWNjZXNzZnVsbHlMb2Fk
ZWQpOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdp
c3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyIsIHRvcEZyYW1lUmVnaXN0cmFibGVE
b21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpOworICAgICAgICBkZWNvZGVDYW52YXNBY3Rpdml0
eVJlY29yZChkZWNvZGVyLCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNBY3Rpdml0eVJl
Y29yZCk7CisgICAgICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAibmF2aWdhdG9yRnVuY3Rp
b25zQWNjZXNzZWRCaXRNYXNrIiwgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpOworICAgICAg
ICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFz
ayIsIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKaW5kZXggNjMyNjMxY2Jk
MDFkMGM3MjBhNzBiNzFkMTAzZGEwMmFmMTJhZTUzYi4uZDU4N2E1MTQxZjM4ZWY4YmM3MDhlZTc3
ZTc4MWNmMGY1YmQwMjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV2FsbFRpbWUgcmVkdWNlVGltZVJl
c29sdXRpb24oV2FsbFRpbWUpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoS2V5
ZWRFbmNvZGVyJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbik7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgdW5zaWduZWQgbW9kZWxW
ZXJzaW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Owog
Cg==
</data>
<flag name="review"
          id="415770"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="415764"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400367</attachid>
            <date>2020-05-27 13:06:24 -0700</date>
            <delta_ts>2020-05-27 13:06:24 -0700</delta_ts>
            <desc>Changes required  on top of revert</desc>
            <filename>bug-212424-non-revert-changes.diff</filename>
            <type>text/plain</type>
            <size>2286</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApp
bmRleCA5YTMxM2M5MDRkNy4uMjY3MjZiNzVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTEyNSw4ICsxMjUsOCBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAKIHN0YXRpYyB2b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGVjb2RlciYgZGVj
b2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiBoYXNoQ291bnRlZFNldCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0gICAg
ZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmUsIFsmaGFzaENvdW50ZWRTZXRdKEtl
eWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgeworICAgIFZlY3RvcjxT
dHJpbmc+IGlnbm9yZU9iamVjdHM7CisgICAgYm9vbCBkZWNvZGVJc09wdGlvbmFsID0gZGVjb2Rl
ci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVPYmplY3RzLCBbJmhhc2hDb3VudGVkU2V0XShL
ZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKICAgICAgICAgaWYg
KCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJvcmlnaW4iLCBkb21haW4pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTEzNywyNiArMTM3LDI4IEBAIHN0YXRpYyB2
b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgSGFzCiAgICAgICAgIGhhc2hDb3VudGVkU2V0LmFkZChSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGRvbWFpbiks
IGNvdW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKGRlY29kZUlzT3B0aW9uYWwpOwogfQogCiBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoU2V0KEtl
eWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBr
ZXksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoU2V0KQogewotICAgIFZlY3RvcjxT
dHJpbmc+IGlnbm9yZTsKLSAgICBkZWNvZGVyLmRlY29kZU9iamVjdHMobGFiZWwsIGlnbm9yZSwg
WyZoYXNoU2V0LCAma2V5XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21h
aW4pIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmVPYmplY3RzOworICAgIGJvb2wgZGVjb2Rl
SXNPcHRpb25hbCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0cyhsYWJlbCwgaWdub3JlT2JqZWN0cywg
WyZoYXNoU2V0LCAma2V5XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21h
aW4pIHsKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKGtleSwgZG9tYWlu
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGhhc2hTZXQu
YWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoZG9tYWluKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOworICAgIFVO
VVNFRF9WQVJJQUJMRShkZWNvZGVJc09wdGlvbmFsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIHN0YXRpYyB2b2lkIGRlY29kZU9wdGlvblNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogewogICAgIHVpbnQ2
NF90IG9wdGlvblNldEJpdE1hc2sgPSAwOwotICAgIGRlY29kZXIuZGVjb2RlVUludDY0KGxhYmVs
LCBvcHRpb25TZXRCaXRNYXNrKTsKLSAgICBvcHRpb25TZXQgPSBPcHRpb25TZXQ8VD46OmZyb21S
YXcob3B0aW9uU2V0Qml0TWFzayk7CisgICAgaWYgKGRlY29kZXIuZGVjb2RlVUludDY0KGxhYmVs
LCBvcHRpb25TZXRCaXRNYXNrKSkKKyAgICAgICAgb3B0aW9uU2V0ID0gT3B0aW9uU2V0PFQ+Ojpm
cm9tUmF3KG9wdGlvblNldEJpdE1hc2spOwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElT
VElDUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400370</attachid>
            <date>2020-05-27 13:09:47 -0700</date>
            <delta_ts>2020-05-27 15:24:34 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-212424-20200527131127.patch</filename>
            <type>text/plain</type>
            <size>14871</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwMzM0YzNmYjJlODg1
NWI4Njg1MGI3ZjU1NjAyZDdiZTM0NGVjYy4uMmU1NmY3NGI4MzJlMTU1Y2U0NGVmNzI5NDMzOGIx
OTcwZWExOGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2
MDAyMyk6IElUUCBzcGFyc2UgcGxpc3QgZGVjb2RpbmcuCisgICAgICAgIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDI0PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM2ODMwNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJLZXllZERlY29kZXIgZnVuY3Rp
b25zIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mue2NwcCxofSBzaG91bGQgcmV0dXJuIGJvb2wg
YW5kIHVzZSBXQVJOX1VOVVNFRF9SRVRVUk4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MTQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI2MDAyMworCisgICAgICAgIFRoZSByZXZlcnQgZGlkIG5vdCBjb21waWxl
IGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBLZXllZERlY29kZXIKKyAgICAgICAgY2xhc3MgdGhhdCBy
ZXF1aXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgaXRzIG1ldGhvZHMsIHNvCisgICAg
ICAgIGFkZGl0aW9uYWwgY2hhbmdlcyB3ZXJlIG1hZGUgYmVsb3cuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIYXNoU2V0KToKKyAgICAg
ICAgLSBSZW5hbWUgYGlnbm9yZWRgIHRvIGBpZ25vcmVkT2JqZWN0c2AgdG8gYmUgbW9yZSBkZXNj
cmlwdGl2ZS4KKyAgICAgICAgLSBJZ25vcmUgcmV0dXJuIHZhbHVlIG9mIEtleWVkRGVjb2Rlcjo6
ZGVjb2RlT2JqZWN0cygpIHNpbmNlCisgICAgICAgICAgdGhlc2Ugb2JqZWN0cyBhcmUgb3B0aW9u
YWwuICBVc2UgYGRlY29kZUlzT3B0aW9uYWxgIHZhcmlhYmxlCisgICAgICAgICAgbmFtZSBhbmQg
VU5VU0VEX1ZBUklBQkxFKCkgdG8gaWdvbnJlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OmRl
Y29kZU9wdGlvblNldCk6CisgICAgICAgIC0gQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIEtleWVkRGVj
b2Rlcjo6ZGVjb2RlVUludDY0KCkgYmVmb3JlCisgICAgICAgICAgc2V0dGluZyBgb3B0aW9uU2V0
YCBwYXJhbWV0ZXIuCisKIDIwMjAtMDUtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlcGxhY2UgYGZlYXR1cmVHdWFyZGAgYW5k
IGBhdmFpbGFiaWxpdHlgIHdpdGggYSBjb21iaW5lZCBgY29uZGl0aW9uYCB0aGF0IGFjY2VwdHMg
YW55IG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5jcHAKaW5kZXggYWE4NGNiMDQ0NzY0OTE2MGE2YTU0MGMwYTRkZDNmOTdhYWM5ZTgwZi4u
MjY3MjZiNzVhY2M0OGI0NTg1ZmM0ZTQ1ZGYyMjkxOWYwNmEwYjBjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtMTIzLDEwICsx
MjMsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaENvdW50
ZWRTZXQpCitzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERlY29kZXImIGRl
Y29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYgaGFzaENvdW50ZWRTZXQpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWdub3JlOwotICAg
IHJldHVybiBkZWNvZGVyLmRlY29kZU9iamVjdHMobGFiZWwsIGlnbm9yZSwgWyZoYXNoQ291bnRl
ZFNldF0oS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIsIFN0cmluZyYgZG9tYWluKSB7CisgICAg
VmVjdG9yPFN0cmluZz4gaWdub3JlT2JqZWN0czsKKyAgICBib29sIGRlY29kZUlzT3B0aW9uYWwg
PSBkZWNvZGVyLmRlY29kZU9iamVjdHMobGFiZWwsIGlnbm9yZU9iamVjdHMsIFsmaGFzaENvdW50
ZWRTZXRdKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgewogICAg
ICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiIsIGRvbWFpbikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMTM3LDM5ICsxMzcsMzkgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QKICAgICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
ZG9tYWluKSwgY291bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoZGVjb2RlSXNPcHRpb25hbCk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVIYXNoU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBrZXksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiBoYXNoU2V0KQorc3RhdGljIHZvaWQgZGVjb2RlSGFzaFNldChLZXllZERlY29kZXImIGRlY29k
ZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYga2V5LCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYgaGFzaFNldCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0g
ICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlT2JqZWN0cyhsYWJlbCwgaWdub3JlLCBbJmhhc2hTZXQs
ICZrZXldKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgeworICAg
IFZlY3RvcjxTdHJpbmc+IGlnbm9yZU9iamVjdHM7CisgICAgYm9vbCBkZWNvZGVJc09wdGlvbmFs
ID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVPYmplY3RzLCBbJmhhc2hTZXQs
ICZrZXldKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgewogICAg
ICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVTdHJpbmcoa2V5LCBkb21haW4pKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaGFzaFNldC5hZGQoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhk
b21haW4pKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKGRlY29kZUlzT3B0aW9uYWwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvblNldChLZXllZERlY29kZXImIGRl
Y29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQorc3Rh
dGljIHZvaWQgZGVjb2RlT3B0aW9uU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgT3B0aW9uU2V0PFQ+JiBvcHRpb25TZXQpCiB7CiAgICAgdWludDY0X3Qgb3B0
aW9uU2V0Qml0TWFzayA9IDA7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQ2NChsYWJlbCwg
b3B0aW9uU2V0Qml0TWFzaykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBvcHRpb25TZXQg
PSBPcHRpb25TZXQ8VD46OmZyb21SYXcob3B0aW9uU2V0Qml0TWFzayk7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKGRlY29kZXIuZGVjb2RlVUludDY0KGxhYmVsLCBvcHRpb25TZXRCaXRNYXNr
KSkKKyAgICAgICAgb3B0aW9uU2V0ID0gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KG9wdGlvblNldEJp
dE1hc2spOwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGb250SGFzaFNldChLZXllZERlY29kZXImIGRlY29k
ZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hTZXQ8U3RyaW5nPiYgaGFzaFNldCkKK3N0YXRp
YyB2b2lkIGRlY29kZUZvbnRIYXNoU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgSGFzaFNldDxTdHJpbmc+JiBoYXNoU2V0KQogewotICAgIHJldHVybiBkZWNv
ZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAiZm9udCIsIGhhc2hTZXQpOworICAgIGRlY29kZUhh
c2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250IiwgaGFzaFNldCk7CiB9CiAgICAgCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5ZWRE
ZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDYW52YXNBY3Rpdml0eVJlY29y
ZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCitzdGF0aWMgdm9pZCBkZWNvZGVDYW52YXNBY3Rpdml0
eVJlY29yZChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIENhbnZh
c0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29yZCkKIHsKLSAgICByZXR1cm4gZGVj
b2Rlci5kZWNvZGVPYmplY3QobGFiZWwsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWRE
ZWNvZGVyJiBkZWNvZGVySW5uZXIsIENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0
eVJlY29yZCkgeworICAgIGRlY29kZXIuZGVjb2RlT2JqZWN0KGxhYmVsLCBjYW52YXNBY3Rpdml0
eVJlY29yZCwgW10gKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBDYW52YXNBY3Rpdml0eVJl
Y29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpIHsKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIu
ZGVjb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBjYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVh
ZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGln
bm9yZTsKQEAgLTIwMSw4NSArMjAxLDY4IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCi0gICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxNSkgewotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIm9yaWdpbiIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWlucykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmICht
b2RlbFZlcnNpb24gPj0gMTUpCisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4iLCBzdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGVsc2UKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNv
ZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIm9yaWdpbiIsIHN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICAvLyBUb3AgZnJhbWUgc3RhdHMK
ICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNl
dChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsICJkb21haW4iLCB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20i
LCAiZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUbyIsICJkb21haW4iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAg
ICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
IiwgImRvbWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSk7CiAgICAgfSBlbHNlIGlm
IChtb2RlbFZlcnNpb24gPj0gMTEpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFi
bGVEb21haW4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkOwotICAgICAgICBpZiAo
IWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
IiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkKTsKICAg
ICAgICAgZm9yIChhdXRvJiBkb21haW4gOiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRl
ZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uYWRkKGRv
bWFpbik7CiAgICAgICAgIAogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFp
bj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNv
ZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwg
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21D
b3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
LmFkZChkb21haW4pOwogICAgIH0KIAogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTYpIHsKLSAg
ICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tIiwgImRvbWFpbiIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25z
RnJvbSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJnb3RMaW5rRGVjb3JhdGlv
bkZyb21QcmV2YWxlbnRSZXNvdXJjZSIsIGdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJl
c291cmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobW9k
ZWxWZXJzaW9uID49IDE3KSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZDsKLSAgICAgICAgaWYg
KCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5
U2NyaXB0cyIsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rl
ciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCB0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJh
bWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0
b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzLmFkZChkb21haW4pOwogICAgIH0KIAogICAg
IC8vIFN1YmZyYW1lIHN0YXRzCi0gICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAg
ICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMiLCAiZG9tYWluIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTQpIHsKKyAg
ICBpZiAobW9kZWxWZXJzaW9uID49IDE1KQorICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnMpOworICAgIGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNCkgewogICAg
ICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVj
b2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zQ291bnRlZCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRl
Y29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
Iiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygp
KQogICAgICAgICAgICAgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWluKTsK
ICAgICB9CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwogICAgIGlmIChtb2RlbFZlcnNpb24g
Pj0gMTUpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29k
ZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWlu
Iiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVj
b2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2Rl
ciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbyk7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZDsKLSAg
ICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2lucyIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVk
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRT
ZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWlu
IDogc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQudmFsdWVzKCkpCiAgICAg
ICAgICAgICBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZChkb21haW4pOwogCiAg
ICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG9Db3VudGVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCk7CiAgICAgICAgIGZvciAo
YXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQudmFsdWVz
KCkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChkb21haW4p
OwogICAgICAgICBpZiAobW9kZWxWZXJzaW9uID49IDExKSB7CiAgICAgICAgICAgICBIYXNoQ291
bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
Q291bnRlZDsKLSAgICAgICAgICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwg
InN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
Q291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgICAgIH0KQEAgLTMxOCwyNiArMzAxLDIwIEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2Rlciwg
dW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAgbGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwogCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAx
MSkgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24iLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24pKSB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50
MzIoInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIHRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikpCiAgICAgICAgICAgICB0
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSAwOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEki
LCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkgeworICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3Rv
cmFnZUFjY2Vzc0FQSSkpCiAgICAgICAgICAgICB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9TdG9yYWdlQWNjZXNzQVBJID0gMDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQogICAgIH0KIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1v
ZGVsVmVyc2lvbiA+PSAxMykgewotICAgICAgICBpZiAoIShkZWNvZGVGb250SGFzaFNldChkZWNv
ZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCkKLSAgICAgICAgICAg
ICYmIGRlY29kZUZvbnRIYXNoU2V0KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIs
IGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKQotICAgICAgICAgICAgJiYgZGVjb2RlSGFzaENvdW50
ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdl
YkFQSXMiLCB0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKQot
ICAgICAgICAgICAgJiYgZGVjb2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZh
c0FjdGl2aXR5UmVjb3JkIiwgY2FudmFzQWN0aXZpdHlSZWNvcmQpCi0gICAgICAgICAgICAmJiBk
ZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFz
ayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkKQotICAgICAgICAgICAgJiYgZGVjb2RlT3B0
aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBzY3JlZW5G
dW5jdGlvbnNBY2Nlc3NlZCkpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KKyAgICAgICAgZGVjb2RlRm9udEhhc2hTZXQoZGVjb2RlciwgImZvbnRzRmFpbGVkVG9Mb2Fk
IiwgZm9udHNGYWlsZWRUb0xvYWQpOworICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVy
LCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQiLCBmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCk7Cisg
ICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxl
RG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzIiwgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNX
aGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAgICAgIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3Jk
KGRlY29kZXIsICJjYW52YXNBY3Rpdml0eVJlY29yZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkKTsK
KyAgICAgICAgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nl
c3NlZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29k
ZU9wdGlvblNldChkZWNvZGVyLCAic2NyZWVuRnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIiwgc2Ny
ZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCA2MzI2MzFjYmQwMWQwYzcy
MGE3MGI3MWQxMDNkYTAyYWYxMmFlNTNiLi5kNTg3YTUxNDFmMzhlZjhiYzcwOGVlNzdlNzgxY2Yw
ZjViZDAyNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
ewogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXYWxsVGltZSByZWR1Y2VUaW1lUmVzb2x1dGlv
bihXYWxsVGltZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShLZXllZEVuY29k
ZXImKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoS2V5ZWREZWNvZGVyJiwgdW5zaWduZWQgbW9kZWxWZXJzaW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGRlY29kZShLZXllZERlY29kZXImLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400389</attachid>
            <date>2020-05-27 15:24:22 -0700</date>
            <delta_ts>2020-05-27 15:57:00 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-212424-20200527152602.patch</filename>
            <type>text/plain</type>
            <size>14445</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4MDAwNDhmYjRhYzhi
ZDg2NjRkMmY4Njc1ZTcwMjFlYTZiNDQzZC4uYTBkODBiOGNkNjM4MTEyYzQzNGYzMzczYzY1NjI2
NzYyMzUwYWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA1LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2
MDAyMyk6IElUUCBzcGFyc2UgcGxpc3QgZGVjb2RpbmcuCisgICAgICAgIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDI0PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM2ODMwNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJLZXllZERlY29kZXIgZnVuY3Rp
b25zIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mue2NwcCxofSBzaG91bGQgcmV0dXJuIGJvb2wg
YW5kIHVzZSBXQVJOX1VOVVNFRF9SRVRVUk4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MTQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI2MDAyMworCisgICAgICAgIFRoZSByZXZlcnQgZGlkIG5vdCBjb21waWxl
IGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBLZXllZERlY29kZXIKKyAgICAgICAgY2xhc3MgdGhhdCBy
ZXF1aXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgaXRzIG1ldGhvZHMsIHNvCisgICAg
ICAgIGFkZGl0aW9uYWwgY2hhbmdlcyB3ZXJlIG1hZGUgYmVsb3cuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIYXNoU2V0KToKKyAgICAg
ICAgLSBDaGFuZ2UgdG8gcmV0dXJuIGBib29sYCB2YWx1ZSBmcm9tIEtleWVEZWNvZGVyOjpkZWNv
ZGVPYmplY3RzLAorICAgICAgICAgIHdoaWNoIGlzIGlnbm9yZWQgYXQgdGhlIGNhbGwgc2l0ZXMg
c2luY2UgZGVjb2RpbmcgdGhlc2UKKyAgICAgICAgICBvYmplY3RzIGlzIG9wdGlvbmFsLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlT3B0aW9uU2V0KToKKyAgICAgICAgLSBDaGVjayByZXR1cm4g
dmFsdWUgb2YgS2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQoKSBiZWZvcmUKKyAgICAgICAgICBz
ZXR0aW5nIGBvcHRpb25TZXRgIHBhcmFtZXRlci4KKwogMjAyMC0wNS0yNyAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBPcHRpb25TZXRUcmFpdHM8PiBh
bmQgdXNlIHdpdGggV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggYWE4NGNiMDQ0
NzY0OTE2MGE2YTU0MGMwYTRkZDNmOTdhYWM5ZTgwZi4uZmZmNWI3ODI0OWJhODdmMjU4OGQwOWNm
NDRjYmYzMmI0NmY3ZjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmNwcApAQCAtMTIzLDEwICsxMjMsMTAgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlm
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVIYXNoQ291bnRlZFNl
dChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hDb3VudGVk
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaENvdW50ZWRTZXQpCitzdGF0aWMgYm9vbCBkZWNv
ZGVIYXNoQ291bnRlZFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaENvdW50ZWRTZXQpCiB7
Ci0gICAgVmVjdG9yPFN0cmluZz4gaWdub3JlOwotICAgIHJldHVybiBkZWNvZGVyLmRlY29kZU9i
amVjdHMobGFiZWwsIGlnbm9yZSwgWyZoYXNoQ291bnRlZFNldF0oS2V5ZWREZWNvZGVyJiBkZWNv
ZGVySW5uZXIsIFN0cmluZyYgZG9tYWluKSB7CisgICAgVmVjdG9yPFN0cmluZz4gaWdub3JlZDsK
KyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxhYmVsLCBpZ25vcmVkLCBbJmhhc2hD
b3VudGVkU2V0XShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsK
ICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJvcmlnaW4iLCBkb21haW4p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTEzOSwxMCArMTM5LDEw
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVIYXNoQ291bnRlZFNldChL
ZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0CiAgICAgfSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVIYXNoU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBrZXksIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiBoYXNoU2V0KQorc3RhdGljIGJvb2wgZGVjb2RlSGFzaFNldChLZXllZERlY29kZXIm
IGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYga2V5LCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaFNldCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZ25v
cmU7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlT2JqZWN0cyhsYWJlbCwgaWdub3JlLCBbJmhh
c2hTZXQsICZrZXldKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikg
eworICAgIFZlY3RvcjxTdHJpbmc+IGlnbm9yZWQ7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2Rl
T2JqZWN0cyhsYWJlbCwgaWdub3JlZCwgWyZoYXNoU2V0LCAma2V5XShLZXllZERlY29kZXImIGRl
Y29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIu
ZGVjb2RlU3RyaW5nKGtleSwgZG9tYWluKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCkBAIC0xNTIsMjQgKzE1MiwyMiBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlSGFzaFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZU9wdGlvblNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWws
IE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQorc3RhdGljIHZvaWQgZGVjb2RlT3B0aW9uU2V0KEtl
eWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgT3B0aW9uU2V0PFQ+JiBv
cHRpb25TZXQpCiB7CiAgICAgdWludDY0X3Qgb3B0aW9uU2V0Qml0TWFzayA9IDA7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZVVJbnQ2NChsYWJlbCwgb3B0aW9uU2V0Qml0TWFzaykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBvcHRpb25TZXQgPSBPcHRpb25TZXQ8VD46OmZyb21SYXcob3B0
aW9uU2V0Qml0TWFzayk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGRlY29kZXIuZGVjb2Rl
VUludDY0KGxhYmVsLCBvcHRpb25TZXRCaXRNYXNrKSkKKyAgICAgICAgb3B0aW9uU2V0ID0gT3B0
aW9uU2V0PFQ+Ojpmcm9tUmF3KG9wdGlvblNldEJpdE1hc2spOwogfQogCiAjaWYgRU5BQkxFKFdF
Ql9BUElfU1RBVElTVElDUykKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVG
b250SGFzaFNldChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhh
c2hTZXQ8U3RyaW5nPiYgaGFzaFNldCkKK3N0YXRpYyB2b2lkIGRlY29kZUZvbnRIYXNoU2V0KEtl
eWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzaFNldDxTdHJpbmc+
JiBoYXNoU2V0KQogewotICAgIHJldHVybiBkZWNvZGVIYXNoU2V0KGRlY29kZXIsIGxhYmVsLCAi
Zm9udCIsIGhhc2hTZXQpOworICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250
IiwgaGFzaFNldCk7CiB9CiAgICAgCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlQ2FudmFzQWN0aXZpdHlSZWNvcmQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQpCitz
dGF0aWMgdm9pZCBkZWNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChLZXllZERlY29kZXImIGRlY29k
ZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIENhbnZhc0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rp
dml0eVJlY29yZCkKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVPYmplY3QobGFiZWwsIGNh
bnZhc0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIsIENhbnZh
c0FjdGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29yZCkgeworICAgIGRlY29kZXIuZGVj
b2RlT2JqZWN0KGxhYmVsLCBjYW52YXNBY3Rpdml0eVJlY29yZCwgW10gKEtleWVkRGVjb2RlciYg
ZGVjb2RlcklubmVyLCBDYW52YXNBY3Rpdml0eVJlY29yZCYgY2FudmFzQWN0aXZpdHlSZWNvcmQp
IHsKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlQm9vbCgid2FzRGF0YVJlYWQiLCBj
YW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlnbm9yZTsKQEAgLTIwMSw4NSArMTk5LDY4IEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2Rl
ciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IFN0b3JhZ2UgYWNjZXNzCi0gICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAgICBp
ZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWlucyIsICJkb21haW4iLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghZGVjb2Rl
SGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIm9y
aWdpbiIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCisgICAgICAg
IGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyIsICJkb21haW4iLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGVs
c2UKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVPcmlnaW5zIiwgIm9yaWdpbiIsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyk7CiAKICAgICAvLyBUb3AgZnJhbWUgc3RhdHMKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE1
KSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyIsICJkb21haW4iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2Rl
SGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsICJkb21haW4iLCB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVy
LCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIsIHRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzRnJvbSk7CiAgICAgfSBlbHNlIGlmIChtb2RlbFZlcnNpb24gPj0gMTEpIHsKICAg
ICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG9Db3VudGVkOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29k
ZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b0NvdW50ZWQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIsIHRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uYWRkKGRvbWFpbik7CiAgICAgICAgIAogICAgICAgICBI
YXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAi
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
Q291bnRlZCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hD
b3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4g
OiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAg
ICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChkb21haW4pOwogICAgIH0KIAogICAg
IGlmIChtb2RlbFZlcnNpb24gPj0gMTYpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRl
Y29kZXIsICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ZGVjb2RlSGFzaFNldChkZWNvZGVyLCAidG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIiwgImRv
bWFpbiIsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVCb29sKCJnb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSIsIGdv
dExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobW9kZWxWZXJzaW9uID49IDE3KSB7CiAgICAgICAg
IEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFy
dHlTY3JpcHRzQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNv
ZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRvcEZyYW1lTG9hZGVkVGhp
cmRQYXJ0eVNjcmlwdHNDb3VudGVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0
eVNjcmlwdHMiLCB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZCk7CiAgICAg
ICAgIGZvciAoYXV0byYgZG9tYWluIDogdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0Nv
dW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3Jp
cHRzLmFkZChkb21haW4pOwogICAgIH0KIAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCi0gICAgaWYg
KG1vZGVsVmVyc2lvbiA+PSAxNSkgewotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2Rl
ciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNl
IGlmIChtb2RlbFZlcnNpb24gPj0gMTQpIHsKKyAgICBpZiAobW9kZWxWZXJzaW9uID49IDE1KQor
ICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zIiwgImRvbWFpbiIsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOworICAgIGVsc2Ug
aWYgKG1vZGVsVmVyc2lvbiA+PSAxNCkgewogICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQ7Ci0gICAgICAg
IGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIs
ICJzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluc0NvdW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbnNDb3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucy5hZGQoZG9tYWluKTsKICAgICB9CiAKICAgICAvLyBTdWJyZXNvdXJj
ZSBzdGF0cwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpIHsKLSAgICAgICAgaWYgKCFkZWNv
ZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIiwgImRv
bWFpbiIsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghZGVjb2RlSGFz
aFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIs
IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyk7
CisgICAgICAgIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgICAg
IGRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIs
ICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRl
ZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnMiLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRl
ZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWluc0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW5zLmFkZChkb21haW4pOwogCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZDsKLSAgICAg
ICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rl
ciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvQ291bnRlZCk7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChkb21haW4pOwogICAgICAgICBpZiAobW9kZWxWZXJzaW9u
ID49IDExKSB7CiAgICAgICAgICAgICBIYXNoQ291bnRlZFNldDxSZWdpc3RyYWJsZURvbWFpbj4g
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZDsKLSAgICAgICAgICAgIGlmICgh
ZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb21Db3VudGVkKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDog
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tQ291bnRlZC52YWx1ZXMoKSkKICAgICAgICAg
ICAgICAgICBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAg
ICAgIH0KQEAgLTMxOCwyNiArMjk5LDIwIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAgICAg
bGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUp
OwogCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rp
b24iLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pKSB7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbikpCiAgICAgICAgICAgICB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb24gPSAwOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkiLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUlu
dDMyKCJ0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwgdGlt
ZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkpCiAgICAgICAgICAg
ICB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJID0gMDsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KIAogI2lmIEVOQUJMRShX
RUJfQVBJX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMykgewotICAgICAg
ICBpZiAoIShkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNGYWlsZWRUb0xvYWQiLCBm
b250c0ZhaWxlZFRvTG9hZCkKLSAgICAgICAgICAgICYmIGRlY29kZUZvbnRIYXNoU2V0KGRlY29k
ZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKQot
ICAgICAgICAgICAgJiYgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lUmVn
aXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiLCB0b3BGcmFtZVJlZ2lzdHJhYmxl
RG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKQotICAgICAgICAgICAgJiYgZGVjb2RlQ2FudmFz
QWN0aXZpdHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIiwgY2FudmFzQWN0
aXZpdHlSZWNvcmQpCi0gICAgICAgICAgICAmJiBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5h
dmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vz
c2VkKQotICAgICAgICAgICAgJiYgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5j
dGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCkpKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgZGVjb2RlRm9udEhhc2hT
ZXQoZGVjb2RlciwgImZvbnRzRmFpbGVkVG9Mb2FkIiwgZm9udHNGYWlsZWRUb0xvYWQpOworICAg
ICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQi
LCBmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCk7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0
KGRlY29kZXIsICJ0b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElz
IiwgdG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcyk7CisgICAg
ICAgIGRlY29kZUNhbnZhc0FjdGl2aXR5UmVjb3JkKGRlY29kZXIsICJjYW52YXNBY3Rpdml0eVJl
Y29yZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkKTsKKyAgICAgICAgZGVjb2RlT3B0aW9uU2V0KGRl
Y29kZXIsICJuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZEJpdE1hc2siLCBuYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZCk7CisgICAgICAgIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAic2NyZWVu
RnVuY3Rpb25zQWNjZXNzZWRCaXRNYXNrIiwgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQpOwogICAg
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuaAppbmRleCA2MzI2MzFjYmQwMWQwYzcyMGE3MGI3MWQxMDNkYTAyYWYxMmFlNTNiLi5k
NTg3YTUxNDFmMzhlZjhiYzcwOGVlNzdlNzgxY2YwZjViZDAyNjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKQEAgLTU4LDcgKzU4LDcgQEAg
c3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBXYWxsVGltZSByZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZSk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgdW5zaWdu
ZWQgbW9kZWxWZXJzaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlY29kZShLZXllZERl
Y29kZXImLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="415800"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400394</attachid>
            <date>2020-05-27 15:39:17 -0700</date>
            <delta_ts>2020-05-27 17:48:48 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-212424-20200527154057.patch</filename>
            <type>text/plain</type>
            <size>14765</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4MDAwNDhmYjRhYzhi
ZDg2NjRkMmY4Njc1ZTcwMjFlYTZiNDQzZC4uMmRiNzg2NTc1NjVlN2I3ODdlM2FiYThhNTMzODI5
ZjM4YmMxNWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2
MDAyMyk6IElUUCBzcGFyc2UgcGxpc3QgZGVjb2RpbmcuCisgICAgICAgIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDI0PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM2ODMwNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJLZXllZERlY29kZXIgZnVuY3Rp
b25zIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mue2NwcCxofSBzaG91bGQgcmV0dXJuIGJvb2wg
YW5kIHVzZSBXQVJOX1VOVVNFRF9SRVRVUk4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA0MTQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI2MDAyMworCisgICAgICAgIFRoZSByZXZlcnQgZGlkIG5vdCBjb21waWxl
IGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBLZXllZERlY29kZXIKKyAgICAgICAgY2xhc3MgdGhhdCBy
ZXF1aXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgaXRzIG1ldGhvZHMsIHNvCisgICAg
ICAgIGFkZGl0aW9uYWwgY2hhbmdlcyB3ZXJlIG1hZGUgYmVsb3cuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVI
YXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIYXNoU2V0KToKKyAgICAg
ICAgLSBVc2UgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVzdWx0IikvSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgICAgICAgIHRvIHN1cHByZXNzIHdhcm5pbmcgYWJvdXQgaWdub3Jpbmcg
dGhlIHJldHVybiB2YWx1ZSBmcm9tCisgICAgICAgICAgS2V5ZURlY29kZXI6OmRlY29kZU9iamVj
dHMoKSBzaW5jZSBkZWNvZGluZyB0aGVzZSBvYmplY3RzIGlzCisgICAgICAgICAgb3B0aW9uYWwu
CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVPcHRpb25TZXQpOgorICAgICAgICAtIENoZWNrIHJl
dHVybiB2YWx1ZSBvZiBLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCgpIGJlZm9yZQorICAgICAg
ICAgIHNldHRpbmcgYG9wdGlvblNldGAgcGFyYW1ldGVyLgorCiAyMDIwLTA1LTI3ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIE9wdGlvblNldFRyYWl0
czw+IGFuZCB1c2Ugd2l0aCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCBhYTg0
Y2IwNDQ3NjQ5MTYwYTZhNTQwYzBhNGRkM2Y5N2FhYzllODBmLi4zNGEyMjgwOTIzZGI5N2VlMzI2
YjY4YWQ5ZDUyMjE0NDgzODUwNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCkBAIC0xMjMsMTAgKzEyMywxMSBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAj
ZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hDb3Vu
dGVkU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzaENv
dW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoQ291bnRlZFNldCkKK3N0YXRpYyB2b2lk
IGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoQ291bnRlZFNl
dCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmU7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlT2JqZWN0cyhsYWJlbCwgaWdub3JlLCBbJmhhc2hDb3VudGVkU2V0XShLZXllZERlY29kZXIm
IGRlY29kZXJJbm5lciwgU3RyaW5nJiBkb21haW4pIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBpZ25v
cmVkOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnVzZWQtcmVzdWx0IikKKyAgICBkZWNvZGVy
LmRlY29kZU9iamVjdHMobGFiZWwsIGlnbm9yZWQsIFsmaGFzaENvdW50ZWRTZXRdKEtleWVkRGVj
b2RlciYgZGVjb2RlcklubmVyLCBTdHJpbmcmIGRvbWFpbikgewogICAgICAgICBpZiAoIWRlY29k
ZXJJbm5lci5kZWNvZGVTdHJpbmcoIm9yaWdpbiIsIGRvbWFpbikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMTM3LDM5ICsxMzgsNDAgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGVjb2RlciYgZGVjb2Rl
ciwgY29uc3QKICAgICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZG9tYWluKSwgY291bnQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKIH0K
IAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUhhc2hTZXQoS2V5ZWREZWNv
ZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGtleSwgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGhhc2hTZXQpCitzdGF0aWMgdm9pZCBkZWNvZGVIYXNo
U2V0KEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBrZXksIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoU2V0KQogewotICAgIFZl
Y3RvcjxTdHJpbmc+IGlnbm9yZTsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVPYmplY3RzKGxh
YmVsLCBpZ25vcmUsIFsmaGFzaFNldCwgJmtleV0oS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIs
IFN0cmluZyYgZG9tYWluKSB7CisgICAgVmVjdG9yPFN0cmluZz4gaWdub3JlZDsKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidW51c2VkLXJlc3VsdCIpCisgICAgZGVjb2Rlci5kZWNvZGVPYmplY3Rz
KGxhYmVsLCBpZ25vcmVkLCBbJmhhc2hTZXQsICZrZXldKEtleWVkRGVjb2RlciYgZGVjb2Rlcklu
bmVyLCBTdHJpbmcmIGRvbWFpbikgewogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVT
dHJpbmcoa2V5LCBkb21haW4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
ICAgICAgICAgaGFzaFNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhkb21haW4pKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSk7CitJR05PUkVfV0FSTklOR1NfRU5ECiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uU2V0KEtleWVkRGVj
b2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgT3B0aW9uU2V0PFQ+JiBvcHRpb25T
ZXQpCitzdGF0aWMgdm9pZCBkZWNvZGVPcHRpb25TZXQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBPcHRpb25TZXQ8VD4mIG9wdGlvblNldCkKIHsKICAgICB1aW50
NjRfdCBvcHRpb25TZXRCaXRNYXNrID0gMDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDY0
KGxhYmVsLCBvcHRpb25TZXRCaXRNYXNrKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG9w
dGlvblNldCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdyhvcHRpb25TZXRCaXRNYXNrKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZGVjb2Rlci5kZWNvZGVVSW50NjQobGFiZWwsIG9wdGlvblNl
dEJpdE1hc2spKQorICAgICAgICBvcHRpb25TZXQgPSBPcHRpb25TZXQ8VD46OmZyb21SYXcob3B0
aW9uU2V0Qml0TWFzayk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZvbnRIYXNoU2V0KEtleWVkRGVjb2Rl
ciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgSGFzaFNldDxTdHJpbmc+JiBoYXNoU2V0
KQorc3RhdGljIHZvaWQgZGVjb2RlRm9udEhhc2hTZXQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBIYXNoU2V0PFN0cmluZz4mIGhhc2hTZXQpCiB7Ci0gICAgcmV0
dXJuIGRlY29kZUhhc2hTZXQoZGVjb2RlciwgbGFiZWwsICJmb250IiwgaGFzaFNldCk7CisgICAg
ZGVjb2RlSGFzaFNldChkZWNvZGVyLCBsYWJlbCwgImZvbnQiLCBoYXNoU2V0KTsKIH0KICAgICAK
LXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVDYW52YXNBY3Rpdml0eVJlY29y
ZChLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIENhbnZhc0FjdGl2
aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29yZCkKK3N0YXRpYyB2b2lkIGRlY29kZUNhbnZh
c0FjdGl2aXR5UmVjb3JkKEtleWVkRGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgQ2FudmFzQWN0aXZpdHlSZWNvcmQmIGNhbnZhc0FjdGl2aXR5UmVjb3JkKQogewotICAgIHJl
dHVybiBkZWNvZGVyLmRlY29kZU9iamVjdChsYWJlbCwgY2FudmFzQWN0aXZpdHlSZWNvcmQsIFtd
IChLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgQ2FudmFzQWN0aXZpdHlSZWNvcmQmIGNhbnZh
c0FjdGl2aXR5UmVjb3JkKSB7CisgICAgZGVjb2Rlci5kZWNvZGVPYmplY3QobGFiZWwsIGNhbnZh
c0FjdGl2aXR5UmVjb3JkLCBbXSAoS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIsIENhbnZhc0Fj
dGl2aXR5UmVjb3JkJiBjYW52YXNBY3Rpdml0eVJlY29yZCkgewogICAgICAgICBpZiAoIWRlY29k
ZXJJbm5lci5kZWNvZGVCb29sKCJ3YXNEYXRhUmVhZCIsIGNhbnZhc0FjdGl2aXR5UmVjb3JkLndh
c0RhdGFSZWFkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gaWdub3JlOwpAQCAtMjAxLDg1ICsyMDMsNjggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZlcnNp
b24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKLSAgICBp
ZiAobW9kZWxWZXJzaW9uID49IDE1KSB7Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNv
ZGVyLCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCAib3JpZ2luIiwgc3RvcmFnZUFjY2Vzc1Vu
ZGVyVG9wRnJhbWVEb21haW5zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Cisg
ICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAxNSkKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVy
LCAic3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIiwgImRvbWFpbiIsIHN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgZWxzZQorICAgICAgICBkZWNvZGVIYXNo
U2V0KGRlY29kZXIsICJzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCAib3JpZ2lu
Iiwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKTsKIAogICAgIC8vIFRvcCBmcmFt
ZSBzdGF0cwogICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpIHsKLSAgICAgICAgaWYgKCFkZWNv
ZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgImRvbWFpbiIs
IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgImRvbWFpbiIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8pOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKTsKICAgICB9
IGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAxMSkgewogICAgICAgICBIYXNoQ291bnRlZFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQ7Ci0gICAg
ICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRlZCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIiwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50
ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
by5hZGQoZG9tYWluKTsKICAgICAgICAgCiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkOwotICAgICAgICBp
ZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20iLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21Db3VudGVkKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUNv
dW50ZWQpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbUNvdW50ZWQudmFsdWVzKCkpCiAgICAgICAgICAgICB0b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKGRvbWFpbik7CiAgICAgfQogCiAgICAgaWYgKG1vZGVsVmVyc2lvbiA+PSAx
NikgewotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSIsICJkb21haW4iLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNoU2V0KGRlY29kZXIs
ICJ0b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iLCAiZG9tYWluIiwgdG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImdvdExpbmtE
ZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlIiwgZ290TGlua0RlY29yYXRpb25Gcm9tUHJl
dmFsZW50UmVzb3VyY2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IGlmIChtb2RlbFZlcnNpb24gPj0gMTcpIHsKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0
cmFibGVEb21haW4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkOwotICAg
ICAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJ0b3BGcmFtZUxvYWRlZFRo
aXJkUGFydHlTY3JpcHRzIiwgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0NvdW50ZWQp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNl
dChkZWNvZGVyLCAidG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIsIHRvcEZyYW1lTG9h
ZGVkVGhpcmRQYXJ0eVNjcmlwdHNDb3VudGVkKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4g
OiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzQ291bnRlZC52YWx1ZXMoKSkKICAgICAg
ICAgICAgIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMuYWRkKGRvbWFpbik7CiAgICAg
fQogCiAgICAgLy8gU3ViZnJhbWUgc3RhdHMKLSAgICBpZiAobW9kZWxWZXJzaW9uID49IDE1KSB7
Ci0gICAgICAgIGlmICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIsICJkb21haW4iLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1vZGVsVmVyc2lvbiA+PSAx
NCkgeworICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTUpCisgICAgICAgIGRlY29kZUhhc2hTZXQo
ZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CisgICAgZWxzZSBpZiAobW9kZWxWZXJzaW9uID49IDE0
KSB7CiAgICAgICAgIEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZDsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRl
ZFNldChkZWNvZGVyLCAic3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMiLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZCk7CiAgICAgICAg
IGZvciAoYXV0byYgZG9tYWluIDogc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50ZWQu
dmFsdWVzKCkpCiAgICAgICAgICAgICBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZChk
b21haW4pOwogICAgIH0KIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAgICAgaWYgKG1vZGVs
VmVyc2lvbiA+PSAxNSkgewotICAgICAgICBpZiAoIWRlY29kZUhhc2hTZXQoZGVjb2RlciwgInN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
ICghZGVjb2RlSGFzaFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIs
ICJkb21haW4iLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVIYXNoU2V0KGRlY29kZXIsICJzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCAiZG9tYWluIiwgc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlSGFz
aFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIsICJkb21haW4i
LCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAgZGVjb2RlSGFzaFNl
dChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsICJkb21haW4iLCBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAgICAgZGVjb2RlSGFzaFNldChkZWNvZGVy
LCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgImRvbWFpbiIsIHN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSGFzaENvdW50ZWRT
ZXQ8UmVnaXN0cmFibGVEb21haW4+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3Vu
dGVkOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsICJzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
c0NvdW50ZWQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVIYXNo
Q291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsIHN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudGVkKTsKICAgICAgICAgZm9yIChhdXRv
JiBkb21haW4gOiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRlZC52YWx1ZXMo
KSkKICAgICAgICAgICAgIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKGRvbWFp
bik7CiAKICAgICAgICAgSGFzaENvdW50ZWRTZXQ8UmVnaXN0cmFibGVEb21haW4+IHN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkOwotICAgICAgICBpZiAoIWRlY29kZUhhc2hDb3Vu
dGVkU2V0KGRlY29kZXIsICJzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIiwgc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50ZWQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudGVkKTsKICAgICAg
ICAgZm9yIChhdXRvJiBkb21haW4gOiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRl
ZC52YWx1ZXMoKSkKICAgICAgICAgICAgIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRk
KGRvbWFpbik7CiAgICAgICAgIGlmIChtb2RlbFZlcnNpb24gPj0gMTEpIHsKICAgICAgICAgICAg
IEhhc2hDb3VudGVkU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb21Db3VudGVkOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCAic3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tQ291bnRlZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbSIsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUNvdW50ZWQp
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb21Db3VudGVkLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbS5hZGQoZG9tYWluKTsKICAgICAgICAgfQpAQCAtMzE4LDI2ICszMDMs
MjAgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBk
ZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24KICAgICBsYXN0U2VlbiA9IFdhbGxUaW1lOjpm
cm9tUmF3U2Vjb25kcyhsYXN0U2VlblRpbWVBc0RvdWJsZSk7CiAKICAgICBpZiAobW9kZWxWZXJz
aW9uID49IDExKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIHRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9u
IiwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSkKICAgICAg
ICAgICAgIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IDA7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFj
Y2Vzc0FQSSIsIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkp
KSB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkiLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkKICAgICAgICAgICAgIHRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgPSAwOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAg
ICBpZiAobW9kZWxWZXJzaW9uID49IDEzKSB7Ci0gICAgICAgIGlmICghKGRlY29kZUZvbnRIYXNo
U2V0KGRlY29kZXIsICJmb250c0ZhaWxlZFRvTG9hZCIsIGZvbnRzRmFpbGVkVG9Mb2FkKQotICAg
ICAgICAgICAgJiYgZGVjb2RlRm9udEhhc2hTZXQoZGVjb2RlciwgImZvbnRzU3VjY2Vzc2Z1bGx5
TG9hZGVkIiwgZm9udHNTdWNjZXNzZnVsbHlMb2FkZWQpCi0gICAgICAgICAgICAmJiBkZWNvZGVI
YXNoQ291bnRlZFNldChkZWNvZGVyLCAidG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFj
Y2Vzc2VkV2ViQVBJcyIsIHRvcEZyYW1lUmVnaXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdl
YkFQSXMpCi0gICAgICAgICAgICAmJiBkZWNvZGVDYW52YXNBY3Rpdml0eVJlY29yZChkZWNvZGVy
LCAiY2FudmFzQWN0aXZpdHlSZWNvcmQiLCBjYW52YXNBY3Rpdml0eVJlY29yZCkKLSAgICAgICAg
ICAgICYmIGRlY29kZU9wdGlvblNldChkZWNvZGVyLCAibmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNz
ZWRCaXRNYXNrIiwgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpCi0gICAgICAgICAgICAmJiBk
ZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgInNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkQml0TWFzayIs
IHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKSkpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQorICAgICAgICBkZWNvZGVGb250SGFzaFNldChkZWNvZGVyLCAiZm9udHNGYWls
ZWRUb0xvYWQiLCBmb250c0ZhaWxlZFRvTG9hZCk7CisgICAgICAgIGRlY29kZUZvbnRIYXNoU2V0
KGRlY29kZXIsICJmb250c1N1Y2Nlc3NmdWxseUxvYWRlZCIsIGZvbnRzU3VjY2Vzc2Z1bGx5TG9h
ZGVkKTsKKyAgICAgICAgZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2RlciwgInRvcEZyYW1lUmVn
aXN0cmFibGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMiLCB0b3BGcmFtZVJlZ2lzdHJhYmxl
RG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKTsKKyAgICAgICAgZGVjb2RlQ2FudmFzQWN0aXZp
dHlSZWNvcmQoZGVjb2RlciwgImNhbnZhc0FjdGl2aXR5UmVjb3JkIiwgY2FudmFzQWN0aXZpdHlS
ZWNvcmQpOworICAgICAgICBkZWNvZGVPcHRpb25TZXQoZGVjb2RlciwgIm5hdmlnYXRvckZ1bmN0
aW9uc0FjY2Vzc2VkQml0TWFzayIsIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkKTsKKyAgICAg
ICAgZGVjb2RlT3B0aW9uU2V0KGRlY29kZXIsICJzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZEJpdE1h
c2siLCBzY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCmluZGV4IDYzMjYzMWNi
ZDAxZDBjNzIwYTcwYjcxZDEwM2RhMDJhZjEyYWU1M2IuLmQ1ODdhNTE0MWYzOGVmOGJjNzA4ZWU3
N2U3ODFjZjBmNWJkMDI2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyB7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRpbWVS
ZXNvbHV0aW9uKFdhbGxUaW1lKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKEtl
eWVkRW5jb2RlciYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShLZXllZERlY29kZXImLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIHVuc2lnbmVkIG1vZGVs
VmVyc2lvbik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>