<?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>202574</bug_id>
          
          <creation_ts>2019-10-04 01:44:37 -0700</creation_ts>
          <short_desc>Implement [Transferable] property of OffscreenCanvas</short_desc>
          <delta_ts>2020-01-28 16:55:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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>
          <dependson>202573</dependson>
    
    <dependson>205385</dependson>
          <blocked>183720</blocked>
    
    <blocked>202797</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576775</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-10-04 01:44:37 -0700</bug_when>
    <thetext>Spec: https://html.spec.whatwg.org/multipage/canvas.html#the-offscreencanvas-interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578594</commentid>
    <comment_count>1</comment_count>
      <attachid>380630</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-10-10 04:09:11 -0700</bug_when>
    <thetext>Created attachment 380630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598820</commentid>
    <comment_count>2</comment_count>
      <attachid>385745</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-16 02:30:09 -0800</bug_when>
    <thetext>Created attachment 385745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599004</commentid>
    <comment_count>3</comment_count>
      <attachid>385745</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-16 11:27:51 -0800</bug_when>
    <thetext>Comment on attachment 385745
Patch

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

&gt; Source/WebCore/html/OffscreenCanvas.cpp:284
&gt; +    return std::unique_ptr&lt;DetachedOffscreenCanvas&gt;(new DetachedOffscreenCanvas(takeImageBuffer(), size(), originClean()));

Please use makeUnique&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599074</commentid>
    <comment_count>4</comment_count>
      <attachid>385745</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-12-16 13:41:48 -0800</bug_when>
    <thetext>Comment on attachment 385745
Patch

r- due to build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599747</commentid>
    <comment_count>5</comment_count>
      <attachid>385954</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-18 04:19:00 -0800</bug_when>
    <thetext>Created attachment 385954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599752</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-18 04:25:56 -0800</bug_when>
    <thetext>argh, I think I&apos;ve missed some OffscreenCanvas guards, will fix...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599765</commentid>
    <comment_count>7</comment_count>
      <attachid>385965</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-18 05:38:13 -0800</bug_when>
    <thetext>Created attachment 385965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599768</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-12-18 06:10:05 -0800</bug_when>
    <thetext>I don&apos;t think the style test will pass without reformatting a not-trivial amount of the affected file - note, my additions are in keeping with what&apos;s in the file already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611864</commentid>
    <comment_count>9</comment_count>
      <attachid>388978</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-28 03:00:16 -0800</bug_when>
    <thetext>Created attachment 388978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611892</commentid>
    <comment_count>10</comment_count>
      <attachid>388978</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-28 06:26:54 -0800</bug_when>
    <thetext>Comment on attachment 388978
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3153
&gt; +#if ENABLE(OFFSCREEN_CANVAS)
&gt; +                { },
&gt; +#endif
&gt;  #if ENABLE(WEBASSEMBLY)
&gt;                  nullptr,
&gt;  #endif

Maybe CloneDeserializer could have default argument values to avoid these?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3574
&gt;      return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, nullptr, nullptr, { }
&gt; +#if ENABLE(OFFSCREEN_CANVAS)
&gt; +        , { }
&gt; +#endif
&gt;  #if ENABLE(WEBASSEMBLY)
&gt;          , nullptr
&gt;  #endif

Maybe SerializedScriptValue could have default argument values to avoid these?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3589
&gt; +static bool offscreenCanvasesCanDetach(const Vector&lt;RefPtr&lt;OffscreenCanvas&gt;&gt;&amp; offscreenCanvases)

The usual style is to start boolean functions with verb like is/are/has etc., maybe areAllOffscreenCanvasesDetachable or something like that.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3596
&gt; +        if (!visited.add(offscreenCanvas.get()))
&gt; +            return false;

What is this test about? Maybe add a comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611893</commentid>
    <comment_count>11</comment_count>
      <attachid>388986</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-28 06:36:17 -0800</bug_when>
    <thetext>Created attachment 388986
again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611895</commentid>
    <comment_count>12</comment_count>
      <attachid>388986</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-28 06:43:01 -0800</bug_when>
    <thetext>Comment on attachment 388986
again

oops wrong bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611960</commentid>
    <comment_count>13</comment_count>
      <attachid>389010</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-28 08:54:23 -0800</bug_when>
    <thetext>Created attachment 389010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611981</commentid>
    <comment_count>14</comment_count>
      <attachid>389015</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-28 09:20:13 -0800</bug_when>
    <thetext>Created attachment 389015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612193</commentid>
    <comment_count>15</comment_count>
      <attachid>389015</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-28 14:48:11 -0800</bug_when>
    <thetext>Comment on attachment 389015
Patch

Clearing flags on attachment: 389015

Committed r255315: &lt;https://trac.webkit.org/changeset/255315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612195</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-28 14:48:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612196</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-28 14:49:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58970553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612262</commentid>
    <comment_count>18</comment_count>
      <attachid>389015</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-28 16:55:04 -0800</bug_when>
    <thetext>Comment on attachment 389015
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:567
&gt;      static SerializationReturnCode serialize(JSGlobalObject* lexicalGlobalObject, JSValue value, Vector&lt;RefPtr&lt;MessagePort&gt;&gt;&amp; messagePorts, Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;&amp; arrayBuffers, const Vector&lt;RefPtr&lt;ImageBitmap&gt;&gt;&amp; imageBitmaps,
&gt; +#if ENABLE(OFFSCREEN_CANVAS)
&gt; +            const Vector&lt;RefPtr&lt;OffscreenCanvas&gt;&gt;&amp; offscreenCanvases,
&gt; +#endif
&gt;  #if ENABLE(WEBASSEMBLY)
&gt;              WasmModuleArray&amp; wasmModules,
&gt;  #endif
&gt;          Vector&lt;String&gt;&amp; blobURLs, Vector&lt;uint8_t&gt;&amp; out, SerializationContext context, ArrayBufferContentsArray&amp; sharedBuffers)

Seems to me that long arguments lists like these with compiler-conditioonal arguments in them are not a great pattern. We should look for something more elegant and easy to read. Maybe a structure would help in some way?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:969
&gt; +    void dumpOffscreenCanvas(JSObject* obj, SerializationReturnCode&amp; code)

WebKit coding style says use a word here, object, not an abbreviation, obj.

Also, we like to use references for things that can’t be null. Although I guess JavaScript programmers are holdouts on that one?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3595
&gt; +    Vector&lt;RefPtr&lt;OffscreenCanvas&gt;&gt; offscreenCanvases;

I’d think Vector&lt;Ref&gt; would be the right type for these vectors. Seems unlikely we need to store nulls in them.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:52
&gt; +#if ENABLE(OFFSCREEN_CANVAS)
&gt; +class DetachedOffscreenCanvas;
&gt; +#endif

Two coding style thoughts:

1) I’m not sure it’s worthwhile to put forward declarations inside #if blocks. I think it’s probably a reasonable practice to define them even if they aren’t used.

2) If we are going to put them in #if blocks, then the #if block should be a separate paragraph and not interspersed with other forward declarations. This is the same rule we follow for includes.

&gt; Source/WebCore/html/OffscreenCanvas.cpp:90
&gt; +    if (m_detached)
&gt; +        return 0;

Can we just set m_size to 0 as part of the detaching process? Then we can let width remain a non-virtual function.

&gt; Source/WebCore/html/OffscreenCanvas.cpp:97
&gt; +    if (m_detached)
&gt; +        return 0;

Ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380630</attachid>
            <date>2019-10-10 04:09:11 -0700</date>
            <delta_ts>2019-12-16 02:25:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20191010120909.patch</filename>
            <type>text/plain</type>
            <size>37371</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAwMjZiYzAwNmMwYjQ5
YzEyYTQyNmVjZmNmMmFiZDdkZGIyNzdmOS4uNzNjZTYzY2UwMmM2ZGQyYjE3NTMzZTk5MDg5ZTAy
NzlhNzc3YmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp3aWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnNldFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3Jl
ZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZz
Y3JlZW5DYW52YXM6OmNvbnZlcnRUb0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVu
Q2FudmFzOjpjYW5EZXRhY2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmg6CisKIDIw
MTktMTAtMTAgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBPZmZzY3JlZW5DYW52YXMuY29udmVydFRvQmxvYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2IwMDBiODgx
MDAzZDJiNDkxNWIwODQ3OGZiYWM5OTMyMzBmNWEyNS4uZmQxNjNjY2ViOTVkMGZjNzExMmQ3MmVm
NDVkMTUyODFkNWE0ZWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01MCw3ICs1MCw5IEBACiAjaW5jbHVkZSAi
SlNJbWFnZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNO
YXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJKU09mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIkpT
UlRDQ2VydGlmaWNhdGUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE2Nyw2ICsxNjksNyBAQCBlbnVtIFNlcmlhbGl6
YXRpb25UYWcgewogICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQsCiAjZW5kaWYKICAgICBJbWFn
ZUJpdG1hcFRhZyA9IDQ1LAorICAgIE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVyVGFnID0gNDYsCiAg
ICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1MCw2ICszNTMsNyBAQCBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAwOwogICogICAgfCBJbWFn
ZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRDQ2VydGlmaWNh
dGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dp
Y2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4gPHJlc29sdXRpb25TY2Fs
ZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRlRGF0YTp1aW50OF90PikK
KyAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJUYWcgPHZhbHVlOnVpbnQzMl90PgogICoK
ICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0
IGFzIHBlciBzcGVjOgogICoKQEAgLTU0NiwxMyArNTUwLDEzIEBAIHRlbXBsYXRlIDw+IGJvb2wg
d3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0
IHVpbnQ4CiAKIGNsYXNzIENsb25lU2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBv
cnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyAgICBzdGF0aWMg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VCaXRtYXBzLCBjb25zdCBWZWN0b3I8UmVmUHRyPE9m
ZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcywKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogI2VuZGlmCiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNl
cmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hh
cmVkQnVmZmVycykKICAgICB7Ci0gICAgICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4
ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCisgICAgICAgIENs
b25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCBpbWFnZUJpdG1hcHMsIG9mZnNjcmVlbkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAgICAgICAgIHdhc21Nb2R1bGVzLAogI2VuZGlmCkBAIC01NzksNyArNTgzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCB1aW50MzJf
dD4gT2JqZWN0UG9vbDsKIAotICAgIENsb25lU2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdl
Qml0bWFwPj4mIGltYWdlQml0bWFwcywKKyAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBl
eGVjLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgVmVjdG9yPFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycywgY29uc3QgVmVjdG9yPFJlZlB0
cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2Ny
ZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAjZW5kaWYKQEAgLTU5
OCw2ICs2MDIsNyBAQCBwcml2YXRlOgogICAgICAgICBmaWxsVHJhbnNmZXJNYXAobWVzc2FnZVBv
cnRzLCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFw
KGFycmF5QnVmZmVycywgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVycyk7CiAgICAgICAgIGZpbGxU
cmFuc2Zlck1hcChpbWFnZUJpdG1hcHMsIG1fdHJhbnNmZXJyZWRJbWFnZUJpdG1hcHMpOworICAg
ICAgICBmaWxsVHJhbnNmZXJNYXAob2Zmc2NyZWVuQ2FudmFzZXMsIG1fdHJhbnNmZXJyZWRPZmZz
Y3JlZW5DYW52YXNlcyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CkBAIC05NDIs
NiArOTQ3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgfQogCisgICAgdm9pZCBkdW1wT2Zmc2NyZWVuQ2FudmFzKEpTT2JqZWN0KiBvYmosIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2RlKQorICAgIHsKKyAgICAgICAgYXV0byBpbmRleCA9
IG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlcy5maW5kKG9iaik7CisgICAgICAgIGlmIChp
bmRleCAhPSBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFzZXMuZW5kKCkpIHsKKyAgICAgICAg
ICAgIHdyaXRlKE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVyVGFnKTsKKyAgICAgICAgICAgIHdyaXRl
KGluZGV4LT52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAgIH0K
KwogICAgIGJvb2wgZHVtcElmVGVybWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUmIGNvZGUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBA
IC0xMDkyLDcgKzExMDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFdhc21Nb2R1bGVB
cnJheSBkdW1teU1vZHVsZXM7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJzOwotICAgICAgICAgICAgICAgIENsb25lU2Vy
aWFsaXplciByYXdLZXlTZXJpYWxpemVyKG1fZXhlYywgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15
QXJyYXlCdWZmZXJzLCB7IH0sCisgICAgICAgICAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHJhd0tl
eVNlcmlhbGl6ZXIobV9leGVjLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1ZmZlcnMs
IHsgfSwgeyB9LAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAgICAg
ZHVtbXlNb2R1bGVzLAogI2VuZGlmCkBAIC0xMTUyLDYgKzExNjksMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBkdW1wSW1hZ2VCaXRtYXAob2JqLCBjb2RlKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvYmotPmluaGVy
aXRzKHZtLCBKU09mZnNjcmVlbkNhbnZhczo6aW5mbygpKSkgeworICAgICAgICAgICAgICAgIGR1
bXBPZmZzY3JlZW5DYW52YXMob2JqLCBjb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlhbGl6ZSBhcyBu
dWxsLgpAQCAtMTQ5OSw2ICsxNTIwLDcgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQb29sIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlC
dWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFwczsKKyAgICBP
YmplY3RQb29sIG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlczsKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50aWZpZXJSZXBI
YXNoPiBTdHJpbmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29sIG1fY29uc3Rh
bnRQb29sOwogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CkBAIC0xNzc4LDcgKzE4
MDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0gICAgc3RhdGlj
IERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JG
aWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycworICAgIHN0
YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mIG1lc3NhZ2VQb3J0cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzPj4mJiBvZmZzY3JlZW5DYW52YXNlcywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JG
aWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVz
CiAjZW5kaWYKQEAgLTE3ODYsNyArMTgwOCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051
bGwoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3IpOwotICAgICAg
ICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNz
YWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgYnVmZmVyLCBibG9iVVJMcywgYmxv
YkZpbGVQYXRocywgc2hhcmVkQnVmZmVycywgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCisgICAgICAg
IENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIG1lc3Nh
Z2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBibG9i
RmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycyksIFdURk1vdmUo
b2Zmc2NyZWVuQ2FudmFzZXMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAg
LCB3YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODM2LDcgKzE4NTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9OwogCi0gICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywKKyAgICBDbG9uZURlc2VyaWFs
aXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBWZWN0b3I8UmVm
UHRyPE9mZnNjcmVlbkNhbnZhcz4+JiYgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzLAogI2VuZGlm
CkBAIC0xODUyLDYgKzE4NzQsOCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fYXJyYXlCdWZmZXJz
KGFycmF5QnVmZmVyQ29udGVudHMgPyBhcnJheUJ1ZmZlckNvbnRlbnRzLT5zaXplKCkgOiAwKQog
ICAgICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKICAgICAgICAg
LCBtX2ltYWdlQml0bWFwcyhtX2ltYWdlQnVmZmVycy5zaXplKCkpCisgICAgICAgICwgbV9vZmZz
Y3JlZW5DYW52YXNlcyhXVEZNb3ZlKG9mZnNjcmVlbkNhbnZhc2VzKSkKKyAgICAgICAgLCBtX2Ns
b25lZE9mZnNjcmVlbkNhbnZhc2VzKG1fb2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgpKQogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQog
I2VuZGlmCkBAIC0xODYwLDcgKzE4ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV92ZXJz
aW9uID0gMHhGRkZGRkZGRjsKICAgICB9CiAKLSAgICBDbG9uZURlc2VyaWFsaXplcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkq
IGFycmF5QnVmZmVyQ29udGVudHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxl
UGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0
ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZl
cnMKKyAgICBDbG9uZURlc2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2Fn
ZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsIFZlY3RvcjxSZWZQdHI8T2Zmc2Ny
ZWVuQ2FudmFzPj4mJiBvZmZzY3JlZW5DYW52YXNlcwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzCiAjZW5kaWYKQEAgLTE4Nzks
NiArMTkwMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9zaGFyZWRCdWZmZXJzKHNoYXJlZEJ1
ZmZlcnMpCiAgICAgICAgICwgbV9pbWFnZUJ1ZmZlcnMoV1RGTW92ZShpbWFnZUJ1ZmZlcnMpKQog
ICAgICAgICAsIG1faW1hZ2VCaXRtYXBzKG1faW1hZ2VCdWZmZXJzLnNpemUoKSkKKyAgICAgICAg
LCBtX29mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUob2Zmc2NyZWVuQ2FudmFzZXMpKQorICAgICAg
ICAsIG1fY2xvbmVkT2Zmc2NyZWVuQ2FudmFzZXMobV9vZmZzY3JlZW5DYW52YXNlcy5zaXplKCkp
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1v
ZHVsZXMpCiAjZW5kaWYKQEAgLTI3MTcsNiArMjc0MywyMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gZ2V0SlNWYWx1ZShiaXRtYXApOwogICAgIH0KIAorICAgIEpTVmFsdWUgcmVhZE9mZnNj
cmVlbkNhbnZhcygpCisgICAgeworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAgYm9v
bCBpbmRleFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFkKGluZGV4KTsKKyAgICAgICAgaWYgKCFpbmRl
eFN1Y2Nlc3NmdWxseVJlYWQgfHwgaW5kZXggPj0gbV9vZmZzY3JlZW5DYW52YXNlcy5zaXplKCkp
IHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW1fY2xvbmVkT2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhd
KQorICAgICAgICAgICAgbV9jbG9uZWRPZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3Jl
ZW5DYW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9l
eGVjKSwgV1RGTW92ZShtX29mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOworCisgICAgICAg
IGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9jbG9uZWRPZmZzY3JlZW5DYW52YXNlc1tpbmRleF0u
Z2V0KCk7CisgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CisgICAg
fQorCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgSlNWYWx1ZSByZWFkUlRDQ2VydGlmaWNhdGUo
KQogICAgIHsKQEAgLTMwNTYsNyArMzA5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBKU1ZhbHVlIGNyeXB0b0tleTsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKLSAgICAgICAgICAgIENsb25lRGVzZXJp
YWxpemVyIHJhd0tleURlc2VyaWFsaXplcihtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBkdW1teU1l
c3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LAorICAgICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIg
cmF3S2V5RGVzZXJpYWxpemVyKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBv
cnRzLCBudWxscHRyLCB7IH0sIHsgfSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKICNlbmRpZgpAQCAtMzA5Miw2ICszMTM0LDggQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgICAgICBjYXNlIEltYWdlQml0bWFwVGFnOgogICAgICAgICAgICAgcmV0dXJu
IHJlYWRJbWFnZUJpdG1hcCgpOworICAgICAgICBjYXNlIE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVy
VGFnOgorICAgICAgICAgICAgcmV0dXJuIHJlYWRPZmZzY3JlZW5DYW52YXMoKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBiYWNrCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMzEyMSw2ICszMTY1LDggQEAgcHJpdmF0ZToK
ICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIG1fc2hhcmVkQnVmZmVyczsKICAgICBWZWN0
b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiBtX2ltYWdl
QnVmZmVyczsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gbV9pbWFnZUJpdG1hcHM7
CisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBtX29mZnNjcmVlbkNhbnZhc2Vz
OworICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gbV9jbG9uZWRPZmZzY3JlZW5D
YW52YXNlczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5KiBt
X3dhc21Nb2R1bGVzOwogI2VuZGlmCkBAIC0zMzM3LDcgKzMzODMsNyBAQCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIs
IHN0ZDo6dW5pcQogewogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlC
dWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycworU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVf
cHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwg
VmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBp
bWFnZUJ1ZmZlcnMsIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mJiBvZmZzY3JlZW5D
YW52YXNlcwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9w
dHI8V2FzbU1vZHVsZUFycmF5PiB3YXNtTW9kdWxlc0FycmF5CiAjZW5kaWYKQEAgLTMzNDYsNiAr
MzM5Miw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZl
Y3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgLCBtX2FycmF5QnVmZmVyQ29u
dGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX3No
YXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5
KSkKICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKKyAgICAsIG1f
b2Zmc2NyZWVuQ2FudmFzZXMoV1RGTW92ZShvZmZzY3JlZW5DYW52YXNlcykpCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgICwgbV93YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVs
ZXNBcnJheSkpCiAjZW5kaWYKQEAgLTM0MzMsMTIgKzM0ODAsMTMgQEAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBl
eGVjLCBKU1YKICAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKICAgICBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFn
ZUJpdG1hcD4+IGR1bW15SW1hZ2VCaXRtYXBzOworICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKICNlbmRpZgogICAgIEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSBkdW1teVNoYXJlZEJ1ZmZlcnM7Ci0gICAgYXV0byBjb2RlID0gQ2xv
bmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJmV4ZWMsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywg
ZHVtbXlBcnJheUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLAorICAgIGF1dG8gY29kZSA9IENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMs
IGR1bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywgZHVtbXlPZmZzY3JlZW5DYW52
YXNlcywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15TW9kdWxlcywKICNl
bmRpZgpAQCAtMzQ1NCw3ICszNTAyLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVjLCBKU1YKICAgICBp
ZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVk
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyLCBu
dWxscHRyLCB7IH0KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9LCB7IH0K
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbnVsbHB0cgogI2VuZGlmCkBAIC0z
NDcxLDExICszNTE5LDI0IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zRHVwbGljYXRlcyhjb25zdCBW
ZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcykKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3N0YXRpYyBib29sIG9mZnNjcmVlbkNhbnZhc2VzQ2FuRGV0YWNoKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzKQoreworICAg
IEhhc2hTZXQ8T2Zmc2NyZWVuQ2FudmFzKj4gdmlzaXRlZDsKKyAgICBmb3IgKGF1dG8mIG9mZnNj
cmVlbkNhbnZhcyA6IG9mZnNjcmVlbkNhbnZhc2VzKSB7CisgICAgICAgIGlmICghb2Zmc2NyZWVu
Q2FudmFzLT5jYW5EZXRhY2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCF2aXNpdGVkLmFkZChvZmZzY3JlZW5DYW52YXMuZ2V0KCkpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRXhjZXB0aW9uT3I8UmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVz
c2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQogewogICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlC
dWZmZXJzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBpbWFnZUJpdG1hcHM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBvZmZzY3JlZW5DYW52YXNlczsKICAg
ICBmb3IgKGF1dG8mIHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlzdCkgewogICAgICAgICBpZiAo
YXV0byBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNm
ZXJhYmxlLmdldCgpKSkgewogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc05ldXRlcmVk
KCkpCkBAIC0zNTAyLDExICszNTYzLDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhdXRvIG9mZnNjcmVl
bkNhbnZhcyA9IEpTT2Zmc2NyZWVuQ2FudmFzOjp0b1dyYXBwZWQodm0sIHRyYW5zZmVyYWJsZS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2VzLmFwcGVuZChXVEZNb3ZlKG9m
ZnNjcmVlbkNhbnZhcykpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICB9CiAKICAgICBp
ZiAoY29udGFpbnNEdXBsaWNhdGVzKGltYWdlQml0bWFwcykpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBEYXRhQ2xvbmVFcnJvciB9OworICAgIGlmICghb2Zmc2NyZWVuQ2FudmFzZXNDYW5E
ZXRhY2gob2Zmc2NyZWVuQ2FudmFzZXMpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVj
dG9yPFN0cmluZz4gYmxvYlVSTHM7CkBAIC0zNTE0LDcgKzM1ODIsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
RXhlY1N0YXRlJgogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMg
PSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKLSAgICBhdXRvIGNvZGUg
PSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdlUG9ydHMs
IGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFs
aXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCBpbWFnZUJpdG1hcHMsIG9mZnNjcmVlbkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAgICAgd2FzbU1vZHVsZXMsIAogI2VuZGlmCkBAIC0zNTI4LDggKzM1OTYsMTAgQEAg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKICAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBhdXRvIGltYWdlQnVmZmVycyA9IElt
YWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFdURk1vdmUoaW1hZ2VCaXRtYXBzKSk7CisgICAgZm9y
IChhdXRvIG9mZnNjcmVlbkNhbnZhcyA6IG9mZnNjcmVlbkNhbnZhc2VzKQorICAgICAgICBvZmZz
Y3JlZW5DYW52YXMtPmRldGFjaCgpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9u
Q29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVs
bHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVy
Q29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0
aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDog
bnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpLCBXVEZNb3ZlKG9mZnNjcmVlbkNhbnZhc2Vz
KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8
V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKICNlbmRpZgpAQCAtMzU4Miw3ICszNjUyLDcg
QEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSYg
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmRlc2VyaWFsaXplKEV4ZWNTdGF0ZSYgZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JG
aWxlUGF0aHMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewotICAg
IERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJp
YWxpemUoJmV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VC
dWZmZXJzKSwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVS
THMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQorICAg
IERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJp
YWxpemUoJmV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VC
dWZmZXJzKSwgV1RGTW92ZShtX29mZnNjcmVlbkNhbnZhc2VzKSwgbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAg
ICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1ZGE4MjQ1NWE0
ZjE0MzU4MWE5YjE1YzNhMDMyYTMzY2UxNTM2YzhmLi5lNzM1MTY3YWI0NGFiZTAxMjgwOWE5OWQ0
MjUwNTJhNzU2MGE3YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgSW1hZ2VCaXRtYXA7CitjbGFzcyBPZmZzY3Jl
ZW5DYW52YXM7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGVudW0g
Y2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4pOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4s
IHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMs
IFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYg
aW1hZ2VCdWZmZXJzLCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJh
eT4KICNlbmRpZgpAQCAtMTIwLDYgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9zaGFyZWRC
dWZmZXJDb250ZW50c0FycmF5OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiwgYm9vbD4+IG1faW1hZ2VCdWZmZXJzOworICAgIFZlY3RvcjxSZWZQdHI8
T2Zmc2NyZWVuQ2FudmFzPj4gbV9vZmZzY3JlZW5DYW52YXNlczsKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gbV93YXNtTW9kdWxl
c0FycmF5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5k
ZXggMmRhYTQyODcxNzEwYTEzZGRjN2EzMDZlZDBhZTkzODkxM2NlY2U2YS4uYmZiMmZjMWVhZWFl
YTA2MmYyODc1N2NkNjUzNGVlMzIxMjc0MTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcApAQCAtNDQsNiArNDQsMTYgQEAgUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zm
c2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW4K
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgs
IGhlaWdodCkpOwogfQogCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8T2Zmc2NyZWVuQ2Fu
dmFzPiBjYW52YXMpCit7CisgICAgYXV0byBidWZmZXIgPSBjYW52YXMtPnRha2VJbWFnZUJ1ZmZl
cigpOworCisgICAgUmVmPE9mZnNjcmVlbkNhbnZhcz4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IE9m
ZnNjcmVlbkNhbnZhcyhjb250ZXh0LCBjYW52YXMtPnNpemUoKS53aWR0aCgpLCBjYW52YXMtPnNp
emUoKS5oZWlnaHQoKSkpOworICAgIGNsb25lLT5zZXRJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpOworCisgICAgcmV0dXJuIGNsb25lOworfQorCiBPZmZzY3JlZW5DYW52YXM6Ok9mZnNjcmVl
bkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQogICAgIDogQ2FudmFzQmFzZShJbnRTaXplKHdpZHRoLCBoZWlnaHQp
KQogICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCkBAIC01OSwyMiAr
NjksMzAgQEAgT2Zmc2NyZWVuQ2FudmFzOjp+T2Zmc2NyZWVuQ2FudmFzKCkKIAogdW5zaWduZWQg
T2Zmc2NyZWVuQ2FudmFzOjp3aWR0aCgpIGNvbnN0CiB7CisgICAgaWYgKG1fZGV0YWNoZWQpCisg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX3NpemUud2lkdGgoKTsKIH0KIAogdm9pZCBP
ZmZzY3JlZW5DYW52YXM6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKQogeworICAgIGlmICht
X2RldGFjaGVkKQorICAgICAgICByZXR1cm47CiAgICAgbV9zaXplLnNldFdpZHRoKG5ld1dpZHRo
KTsKICAgICByZXNldCgpOwogfQogCiB1bnNpZ25lZCBPZmZzY3JlZW5DYW52YXM6OmhlaWdodCgp
IGNvbnN0CiB7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAgICAgIHJldHVybiAwOwogICAgIHJl
dHVybiBtX3NpemUuaGVpZ2h0KCk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpzZXRIZWln
aHQodW5zaWduZWQgbmV3SGVpZ2h0KQogeworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICBy
ZXR1cm47CiAgICAgbV9zaXplLnNldEhlaWdodChuZXdIZWlnaHQpOwogICAgIHJlc2V0KCk7CiB9
CkBAIC05Miw2ICsxMTAsMTAgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSkKIAogRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4
dD4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVu
ZGVyaW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+PiYmIGFyZ3VtZW50cykKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkgeworICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICB9CisKICAgICBpZiAo
Y29udGV4dFR5cGUgPT0gUmVuZGVyaW5nQ29udGV4dFR5cGU6Ol8yZCkgewogICAgICAgICBpZiAo
bV9jb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAoIWlzPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRD4oKm1fY29udGV4dCkpCkBAIC0xMzAsNyArMTUyLDcgQEAgRXhjZXB0aW9uT3I8
T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpT
Qzo6RXhlY1N0YXQKIAogRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVu
Q2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogewotICAgIGlmICghbV9jb250ZXh0KQor
ICAgIGlmIChtX2RldGFjaGVkIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgaWYgKGlzPE9mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkpIHsKQEAgLTIwNCw3ICsyMjYsNyBAQCB2b2lk
IE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiBvcHRp
b25zLCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW5kZXhTaXplRXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghYnVmZmVyKCkpIHsKKyAgICBp
ZiAobV9kZXRhY2hlZCB8fCAhYnVmZmVyKCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzMSw2ICsyNTMs
MTkgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQocmVjdCk7CiB9CiAKK2Jvb2wgT2Zm
c2NyZWVuQ2FudmFzOjpjYW5EZXRhY2goKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZXRhY2hl
ZCAmJiAhbV9jb250ZXh0OworfQorCit2b2lkIE9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKCkKK3sK
KyAgICBpZiAoIWNhbkRldGFjaCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RldGFjaGVk
ID0gdHJ1ZTsKK30KKwogdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkg
Y29uc3QKIHsKICAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CkBAIC0yNDQsMTMg
KzI3OSwxNSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IE9mZnNjcmVlbkNhbnZhczo6dGFrZUlt
YWdlQnVmZmVyKCkgY29uc3QKIHsKLSAgICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7
Ci0gICAgbV9kaWRDbGVhckltYWdlQnVmZmVyID0gdHJ1ZTsKKyAgICBpZiAoIW1fZGV0YWNoZWQp
IHsKKyAgICAgICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOworICAgICAgICBtX2Rp
ZENsZWFySW1hZ2VCdWZmZXIgPSB0cnVlOworICAgIH0KIAogICAgIGlmICghd2lkdGgoKSB8fCAh
aGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHNldEltYWdl
QnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKSk7CisgICAg
cmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBudWxscHRyIDogSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpKTsKIH0KIAogdm9pZCBPZmZzY3JlZW5DYW52
YXM6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCmluZGV4IGE1YzE0
YWVlMDRhNWUxNWFmYjA5MmIyMWJkY2JiZjY0Y2FlZjAyZWQuLjIzMGI2YzIzODc3NGExMmM2YmFi
YWQ5YWJjYTJhYmEyMTIzZTE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
aApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8T2Zm
c2NyZWVuQ2FudmFzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworICAgIHN0YXRpYyBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+KTsK
ICAgICB2aXJ0dWFsIH5PZmZzY3JlZW5DYW52YXMoKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgZmluYWw7CkBAIC04Myw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRHJh
dyhjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKIAorICAgIGJvb2wgY2FuRGV0YWNoKCkgY29uc3Q7
CisgICAgdm9pZCBkZXRhY2goKTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1
c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtMTA2LDYgKzExMCw4IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzZXQoKTsKKworICAgIGJvb2wgbV9kZXRhY2hlZCB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkYzQ2MDQ1ZmVmMWQ1ZmIx
YjU3MDgzYzA3ZDFkNmMxZTE0MWM5MzczLi5jOTU3N2YzZWNmYjg0MDNmMWM2MjYyNDljYTZkNGI4
NzZjNjlkMzFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxOS0xMC0xMCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IFtUcmFuc2ZlcmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTc0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFz
LmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252
ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRy
YW5zZmVyLnRvLmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMv
b2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEwLTEw
ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgT2Zm
c2NyZWVuQ2FudmFzLmNvbnZlcnRUb0Jsb2IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJs
b2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29u
dmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2ItZXhwZWN0ZWQudHh0
CmluZGV4IGQ0M2I0NzkwNjFkYTc5MDk1MjllZWM2YzZjMjUwMDczM2ZmMGI2ZDUuLmE3NmI4NTg2
OTE3Y2Q4YzMxMTg0YWUyNjNjNjc4YWQzOTczZGFjOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0
LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLWV4
cGVjdGVkLnR4dApAQCAtMyw2ICszLDYgQEAgUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3
aXRoIGRlZmF1bHQgdHlwZSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdAogUEFTUyBUZXN0IHRoYXQg
Y29udmVydFRvQmxvYiB3aXRoIHBuZyBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCAKIFBBU1MgVGVz
dCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBqcGdlIHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAog
UEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdlYnAgcHJvZHVjZXMgY29ycmVjdCBy
ZXN1bHQgCi1GQUlMIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBP
ZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xv
bmVkLgorUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zm
c2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZl
cnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5DYW52YXMgd2l0aCBzaXplIDAgdGhyb3dzIGV4Y2VwdGlv
biAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29u
dmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3Jl
ZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0CmluZGV4IGIxMTZjY2E2MGYx
ODY2MTJkZjk1OGVhMzRhMWMyZmY0NDIzNGUwMmQuLmQ1YWUzNGEzNzZmMjMzZTgyMWFhZmQ5YjZk
NmNiMTU2MWZkMzVlODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVu
Y2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10
by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQKQEAg
LTEsNiArMSw0IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNsb25l
RXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KIFBBU1MgVGVzdCB0aGF0IGNv
bnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0IGFyZ3VtZW50cyBwcm9kdWNlcyBjb3JyZWN0IHJlc3Vs
dCBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0
IHR5cGUvMS4wIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIgCiBQ
QVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBlLzAuMiBxdWFsaXR5
IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIApAQCAtMTMsNiArMTEsNiBAQCBQ
QVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgganBlZy8wLjIgcXVhbGl0eSBwcm9kdWNl
cyBjb3JyZWN0IHJlc3VsdCBpbiBhCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgg
d2VicC9kZWZhdWx0IHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIg
CiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggd2VicC8xLjAgcXVhbGl0eSBwcm9k
dWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRU
b0Jsb2Igd2l0aCB3ZWJwLzAuMiBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEg
d29ya2VyIAotRkFJTCBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0YWNoZWQg
T2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIgYXNzZXJ0X3VucmVh
Y2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQQVNTIFRlc3QgdGhhdCBjYWxs
IGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2Vw
dGlvbiBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBh
IE9mZnNjcmVlbkNhbnZhcyB3aXRoIHNpemUgMCB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2Vy
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFz
LnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVu
LWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQu
dHh0CmluZGV4IGZlMWU5MGU3YjNhZWJkNzA4Y2U2MGQyYjNlOTg0MmQ4MDQ1ZGJmOTguLjU2ZTFk
N2U2NjliOWIyMjdiYTAxNWEyZjcxNTdmNDBiNTUyY2NjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUt
b2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52
YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNiBAQCBQ
QVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1h
cCB3aXRoIGNvcnJlY3Qgd2lkdGggYQogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0
bWFwIHJldHVybnMgYW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9yIGFzc2VydF9lcXVh
bHM6IEFscGhhIGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICg1MCwgMjUpIGV4cGVjdGVkIDI1NSBi
dXQgZ290IDAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3b24ndCBjaGFu
Z2UgY29udGV4dCdzIHByb3BlcnR5IAogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0
bWFwIHByZXNlcnZlcyB0cmFuc2Zvcm0gYXNzZXJ0X2VxdWFsczogR3JlZW4gY2hhbm5lbCBvZiB0
aGUgcGl4ZWwgYXQgKDIzLCAyNSkgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRo
YXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52
YXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFT
UyBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZz
Y3JlZW5DYW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVy
VG9JbWFnZUJpdG1hcCB3aXRob3V0IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5z
ZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2Fu
dmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4
dAppbmRleCAzNDJkM2NmMmE3YTY1NTE0ZmFhNmU4OTkzNmZjNTdlMDIxNTE0MjIwLi4xM2EwM2Vi
MDc4MmZiN2EzNmE5ZmY0OTJjMDA1Y2E5MDYxNDliZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9m
ZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52
YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTAg
QEAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBEYXRhQ2xvbmVFcnJvcjogVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KLQogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0lt
YWdlQml0bWFwIHJldHVybnMgYW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IHdpZHRoIGFuZCBo
ZWlnaHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAg
cmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3QgY29sb3IgaW4gYSB3b3JrZXIgCiBQ
QVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB0d2ljZSByZXR1cm5zIGFu
IEltYWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0
aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHR3aWNlIG9uIGEgYWxwaGEtZGlzYWJsZWQg
Y29udGV4dCByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdv
cmtlciBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAyNTUgYnV0IGdv
dCAwCiBQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd29uJ3QgY2hhbmdlIGNv
bnRleHQncyBwcm9wZXJ0eSBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNm
ZXJUb0ltYWdlQml0bWFwIHByZXNlcnZlcyB0cmFuc2Zvcm0gaW4gYSB3b3JrZXIgYXNzZXJ0X2Fy
cmF5X2VxdWFsczogcHJvcGVydHkgMSwgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0
IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5D
YW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBl
cnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNm
ZXJUb0ltYWdlQml0bWFwIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBl
eGNlcHRpb24gaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFn
ZUJpdG1hcCB3aXRob3V0IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2Vy
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFz
LnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dAppbmRleCBkMjMyNjViMDI5
ZWRiYjA2ZWJkZjE1MjFkMTk3NWNjNjg1MDM4ZGM0Li42YTFiZWIwYWI1YjcwZmIxNGE1OTFjMGVi
ZDc5Njk1ZmNjMjEwMTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zm
c2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zm
c2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQK
QEAgLTEsOSArMSw3IEBACiAKLUZBSUwgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUg
aXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gVGhlIG9iamVj
dCBjYW4gbm90IGJlIGNsb25lZC4KLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVl
bkNhbnZhcyB0aGF0IGhhcyBhIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93
czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSh7b2Zmc2NyZWVuQ2FudmFzfSwgW29mZnNjcmVlbkNhbnZhc10pOwotICAgICAgICB9IiB0aHJl
dyBvYmplY3QgIkRhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIg
dGhhdCBpcyBub3QgYSBET01FeGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJj
b2RlIiBpcyBlcXVhbCB0byAyNSwgZXhwZWN0ZWQgMTEKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVy
IGFuIE9mZnNjcmVlbkNhbnZhcyB0d2ljZSB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNh
biBub3QgYmUgY2xvbmVkLgotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcp
IG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmpl
Y3QgY2FuIG5vdCBiZSBjbG9uZWQuCi1GQUlMIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQo
J3dlYmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbi4g
VGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IG9mZnNjcmVlbkNh
bnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtl
ci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMg
YSBjb250ZXh0IHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4g
T2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQg
Y2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRo
cm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJn
bCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5z
ZmVycmFibGUudy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2Ny
ZWVuY2FudmFzLnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50eHQKaW5kZXggNjRkNzk1YTBjMzgz
MDg4NTIzMzY3ZWQxMWFmNzYyNmYwNTU2ODc1OC4uNTI3ZDg2MWY4Y2Y3YTE0MTFiNTgyOTk1Mzc2
MDE4OTc4ZDIxMjFkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNj
cmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zm
c2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4
dApAQCAtMSwxMCArMSw4IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0
YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KLUZBSUwgVGVzdCB0
aGF0IE9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2Zl
cnJlZCBmcm9tIGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0
aGF0IGhhcyBhIDJkIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gYXNzZXJ0
X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBh
biBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRp
b24gaW4gYSB3b3JrZXIuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJ
TCBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNl
cHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFj
aGFibGUgY29kZQotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEg
ZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFz
c2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0
IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVu
Q2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVy
cm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBUZXN0IHRoYXQgT2Zmc2NyZWVuQ2Fu
dmFzJ3Mgc2l6ZSBpcyBjb3JyZWN0IGFmdGVyIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gYSB3b3Jr
ZXIuIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFz
IGEgMmQgY29udGV4dCB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0
aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIHdlYmdsIGNvbnRleHQg
dGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBh
biBPZmZzY3JlZW5DYW52YXMgdHdpY2UgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQ
QVNTIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJzJkJykgb24gYSBkZXRhY2hlZCBPZmZz
Y3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhh
dCBjYWxsaW5nIGdldENvbnRleHQoJ3dlYmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52
YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385745</attachid>
            <date>2019-12-16 02:30:09 -0800</date>
            <delta_ts>2019-12-18 04:18:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20191216103007.patch</filename>
            <type>text/plain</type>
            <size>42594</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAzNzhiODI1N2Q1MzFj
ODg4NTlkNmViZTY1MDNiYWFlNWMzMTJhOC4uNzgyZDIzNDRhZjkyNTNlYzFiNWNiMDU1ZmVjMDFi
YWUyODFiYmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
aHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp3aWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnNldEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAp
OgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKwogMjAxOS0xMC0xMCAgQ2hyaXMgTG9yZCAgPGNs
b3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IE9mZnNjcmVlbkNhbnZhcy5jb252
ZXJ0VG9CbG9iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhN2ZlNjcxODI1OTZlNTYwM2EyNDY3OWNhYjI5MmNhMmI5
Nzk3NWE2Li5lNGQ1Yzk0MGVmNDZhOTgzM2E2MmNkNDJkODBjNWQ0Mjg1MTBmMzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTUwLDcgKzUwLDkgQEAKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgogI2luY2x1ZGUg
IkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU05hdmlnYXRvci5oIgorI2luY2x1ZGUgIkpT
T2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiSlNSVENDZXJ0aWZpY2F0ZS5oIgorI2luY2x1
ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpA
QCAtMTY3LDYgKzE2OSw3IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAgICAgUlRDQ2VydGlm
aWNhdGVUYWcgPSA0NCwKICNlbmRpZgogICAgIEltYWdlQml0bWFwVGFnID0gNDUsCisgICAgT2Zm
c2NyZWVuQ2FudmFzVHJhbnNmZXJUYWcgPSA0NiwKICAgICBFcnJvclRhZyA9IDI1NQogfTsKIApA
QCAtMzUwLDYgKzM1Myw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJpbmdEYXRhSXM4Qml0
RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IEltYWdlQml0bWFwVHJhbnNmZXJUYWcgPHZhbHVl
OnVpbnQzMl90PgogICogICAgfCBSVENDZXJ0aWZpY2F0ZVRhZwogICogICAgfCBJbWFnZUJpdG1h
cFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxvZ2ljYWxXaWR0aDppbnQzMl90PiA8bG9naWNh
bEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNjYWxlOmRvdWJsZT4gPGJ5dGVMZW5ndGg6dWlu
dDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQorICogICAgfCBPZmZzY3JlZW5DYW52YXNU
cmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBk
YXRhIGlzIHNlcmlhbGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtNTQ2
LDEzICs1NTAsMTMgQEAgdGVtcGxhdGUgPD4gYm9vbCB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90
PihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgdWludDgKIAogY2xhc3MgQ2xvbmVTZXJp
YWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywg
VmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycywgY29uc3QgVmVj
dG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMsCisgICAgc3RhdGljIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIHNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNz
YWdlUG9ydHMsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VCaXRtYXBzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcywKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1
bGVzLAogI2VuZGlmCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVp
bnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICB7Ci0gICAgICAgIENsb25lU2VyaWFsaXpl
ciBzZXJpYWxpemVyKGxleGljYWxHbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZm
ZXJzLCBpbWFnZUJpdG1hcHMsCisgICAgICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGxl
eGljYWxHbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1h
cHMsIG9mZnNjcmVlbkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
ICAgIHdhc21Nb2R1bGVzLAogI2VuZGlmCkBAIC01NzksNyArNTgzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCB1aW50MzJfdD4gT2JqZWN0UG9v
bDsKIAotICAgIENsb25lU2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VCaXRtYXBzLAorICAgIENsb25lU2VyaWFsaXplcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJh
eUJ1ZmZlcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VCaXRtYXBz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNl
cywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkm
IHdhc21Nb2R1bGVzLAogI2VuZGlmCkBAIC01OTgsNiArNjAyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
cyk7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChhcnJheUJ1ZmZlcnMsIG1fdHJhbnNmZXJyZWRB
cnJheUJ1ZmZlcnMpOwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAoaW1hZ2VCaXRtYXBzLCBtX3Ry
YW5zZmVycmVkSW1hZ2VCaXRtYXBzKTsKKyAgICAgICAgZmlsbFRyYW5zZmVyTWFwKG9mZnNjcmVl
bkNhbnZhc2VzLCBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFzZXMpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUPgpAQCAtOTQyLDYgKzk0NywxOCBAQCBwcml2YXRlOgogICAgICAg
ICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIH0KIAorICAgIHZvaWQgZHVtcE9mZnNj
cmVlbkNhbnZhcyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkK
KyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
ZXMuZmluZChvYmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZE9mZnNjcmVl
bkNhbnZhc2VzLmVuZCgpKSB7CisgICAgICAgICAgICB3cml0ZShPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZyk7CisgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICB9CisKICAgICBib29sIGR1bXBJZlRlcm1pbmFsKEpT
VmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2RlKQogICAgIHsKICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkgewpAQCAtMTA5Miw3ICsxMTA5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1bGVzOwogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVy
czsKLSAgICAgICAgICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xl
eGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywg
eyB9LAorICAgICAgICAgICAgICAgIENsb25lU2VyaWFsaXplciByYXdLZXlTZXJpYWxpemVyKG1f
bGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJz
LCB7IH0sIHsgfSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgICAg
IGR1bW15TW9kdWxlcywKICNlbmRpZgpAQCAtMTE1Miw2ICsxMTY5LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZHVtcEltYWdlQml0bWFwKG9iaiwgY29kZSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2JqLT5pbmhl
cml0cyh2bSwgSlNPZmZzY3JlZW5DYW52YXM6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBk
dW1wT2Zmc2NyZWVuQ2FudmFzKG9iaiwgY29kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gQW55IG90aGVyIHR5cGVzIGFyZSBleHBlY3RlZCB0byBzZXJpYWxpemUgYXMg
bnVsbC4KQEAgLTE0OTksNiArMTUyMCw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0UG9vbCBtX3Ry
YW5zZmVycmVkTWVzc2FnZVBvcnRzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5
QnVmZmVyczsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRJbWFnZUJpdG1hcHM7CisgICAg
T2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFzZXM7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIHVpbnQzMl90LCBJZGVudGlmaWVyUmVw
SGFzaD4gU3RyaW5nQ29uc3RhbnRQb29sOwogICAgIFN0cmluZ0NvbnN0YW50UG9vbCBtX2NvbnN0
YW50UG9vbDsKICAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVudGlmaWVyOwpAQCAtMTc3OCw3ICsx
ODAwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KIAotICAgIHN0YXRp
YyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8c3RkOjpwYWlyPHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSog
c2hhcmVkQnVmZmVycworICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxp
emUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBv
cnRzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+
PiYmIGltYWdlQnVmZmVycywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcywgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVy
cwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdh
c21Nb2R1bGVzCiAjZW5kaWYKQEAgLTE3ODYsNyArMTgwOCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihqc051bGwoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3Ip
OwotICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSwgYnVmZmVyLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgc2hhcmVkQnVmZmVycywgV1RGTW92
ZShpbWFnZUJ1ZmZlcnMpCisgICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBzaGFyZWRC
dWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycyksIFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5D
YW52YXNlcykKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAsIHdhc21Nb2R1
bGVzCiAjZW5kaWYKQEAgLTE4MzYsNyArMTg1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHNpemVf
dCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURlc2VyaWFsaXplcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVy
Q29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsCisgICAgQ2xv
bmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29u
dGVudHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9v
bD4+JiYgaW1hZ2VCdWZmZXJzLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcywKICNlbmRpZgpA
QCAtMTg1Miw2ICsxODc0LDggQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2FycmF5QnVmZmVycyhh
cnJheUJ1ZmZlckNvbnRlbnRzID8gYXJyYXlCdWZmZXJDb250ZW50cy0+c2l6ZSgpIDogMCkKICAg
ICAgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCiAgICAgICAgICwg
bV9pbWFnZUJpdG1hcHMobV9pbWFnZUJ1ZmZlcnMuc2l6ZSgpKQorICAgICAgICAsIG1fZGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpKQor
ICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
LnNpemUoKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxl
cyh3YXNtTW9kdWxlcykKICNlbmRpZgpAQCAtMTg2MCw3ICsxODg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIG1fdmVyc2lvbiA9IDB4RkZGRkZGRkY7CiAgICAgfQogCi0gICAgQ2xvbmVEZXNl
cmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVz
c2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyAgICBDbG9uZURlc2VyaWFs
aXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdl
UG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50cywgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21N
b2R1bGVzCiAjZW5kaWYKQEAgLTE4NzksNiArMTkwMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICwg
bV9zaGFyZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCiAgICAgICAgICwgbV9pbWFnZUJ1ZmZlcnMo
V1RGTW92ZShpbWFnZUJ1ZmZlcnMpKQogICAgICAgICAsIG1faW1hZ2VCaXRtYXBzKG1faW1hZ2VC
dWZmZXJzLnNpemUoKSkKKyAgICAgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMoV1RG
TW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKKyAgICAgICAgLCBtX29mZnNjcmVlbkNh
bnZhc2VzKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5zaXplKCkpCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCiAjZW5kaWYK
QEAgLTI3MTcsNiArMjc0MywyMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1
ZShiaXRtYXApOwogICAgIH0KIAorICAgIEpTVmFsdWUgcmVhZE9mZnNjcmVlbkNhbnZhcygpCisg
ICAgeworICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAgYm9vbCBpbmRleFN1Y2Nlc3Nm
dWxseVJlYWQgPSByZWFkKGluZGV4KTsKKyAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJl
YWQgfHwgaW5kZXggPj0gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLnNpemUoKSkgeworICAg
ICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0pCisgICAgICAgICAg
ICBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSA9IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3Qp
LCBXVEZNb3ZlKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5hdChpbmRleCkpKTsKKworICAg
ICAgICBhdXRvIG9mZnNjcmVlbkNhbnZhcyA9IG1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhdLmdl
dCgpOworICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShvZmZzY3JlZW5DYW52YXMpOworICAgIH0K
KwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIEpTVmFsdWUgcmVhZFJUQ0NlcnRpZmljYXRlKCkK
ICAgICB7CkBAIC0zMDU2LDcgKzMwOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgSlNWYWx1ZSBjcnlwdG9LZXk7CiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7Ci0gICAgICAgICAgICBDbG9uZURlc2VyaWFs
aXplciByYXdLZXlEZXNlcmlhbGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2dsb2JhbE9i
amVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwKKyAgICAgICAgICAgIENsb25l
RGVzZXJpYWxpemVyIHJhd0tleURlc2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIG1f
Z2xvYmFsT2JqZWN0LCBkdW1teU1lc3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LCB7IH0sCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgIG51bGxwdHIsCiAjZW5kaWYKQEAg
LTMwOTIsNiArMzEzNCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBJbWFnZUJp
dG1hcFRhZzoKICAgICAgICAgICAgIHJldHVybiByZWFkSW1hZ2VCaXRtYXAoKTsKKyAgICAgICAg
Y2FzZSBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZzoKKyAgICAgICAgICAgIHJldHVybiByZWFk
T2Zmc2NyZWVuQ2FudmFzKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtX3B0ci0t
OyAvLyBQdXNoIHRoZSB0YWcgYmFjawogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAg
LTMxMjEsNiArMzE2NSw4IEBAIHByaXZhdGU6CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
KiBtX3NoYXJlZEJ1ZmZlcnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBib29sPj4gbV9pbWFnZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZlB0cjxJ
bWFnZUJpdG1hcD4+IG1faW1hZ2VCaXRtYXBzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBtX29mZnNjcmVlbkNhbnZhc2VzOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkqIG1fd2FzbU1vZHVs
ZXM7CiAjZW5kaWYKQEAgLTMzMzcsNyArMzM4Myw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlx
CiB7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZl
Y3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXksIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJl
ZEJ1ZmZlckNvbnRlbnRzQXJyYXksIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3Rk
OjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVy
cywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0
YWNoZWRPZmZzY3JlZW5DYW52YXNlcwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
LCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiB3YXNtTW9kdWxlc0FycmF5CiAjZW5k
aWYKQEAgLTMzNDYsNiArMzM5Miw3IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgLCBt
X2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSkpCiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZm
ZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZm
ZXJzKSkKKyAgICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzZXMpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAsIG1fd2Fz
bU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJyYXkpKQogI2VuZGlmCkBAIC0zNDMz
LDEyICszNDgwLDEzIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgVmVjdG9yPFN0cmlu
Zz4gYmxvYlVSTHM7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2Fn
ZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFw
czsKKyAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1bW15T2Zmc2NyZWVuQ2Fu
dmFzZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJheUJ1
ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSBkdW1t
eU1vZHVsZXM7CiAjZW5kaWYKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFy
ZWRCdWZmZXJzOwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlC
dWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKKyAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIGR1bW15TWVzc2FnZVBv
cnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMsIGR1bW15T2Zmc2NyZWVu
Q2FudmFzZXMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBkdW1teU1vZHVsZXMs
CiAjZW5kaWYKQEAgLTM0NTQsNyArMzUwMiw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAg
ICAgaWYgKGNvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBs
ZXRlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgbnVsbHB0
ciwgbnVsbHB0ciwgeyB9CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIG51bGxwdHIsIG51bGxwdHIsIHsgfSwg
eyB9CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG51bGxwdHIKICNlbmRpZgpA
QCAtMzQ3MSwxMSArMzUxOSwyNCBAQCBzdGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBvZmZzY3JlZW5DYW52YXNlc0NhbkRldGFjaChjb25z
dCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcykKK3sK
KyAgICBIYXNoU2V0PE9mZnNjcmVlbkNhbnZhcyo+IHZpc2l0ZWQ7CisgICAgZm9yIChhdXRvJiBv
ZmZzY3JlZW5DYW52YXMgOiBvZmZzY3JlZW5DYW52YXNlcykgeworICAgICAgICBpZiAoIW9mZnNj
cmVlbkNhbnZhcy0+Y2FuRGV0YWNoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghdmlzaXRlZC5hZGQob2Zmc2NyZWVuQ2FudmFzLmdldCgpKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEV4Y2VwdGlvbk9y
PFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyTGlzdCwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNv
bnRleHQpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIFZl
Y3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyczsKICAgICBWZWN0b3I8
UmVmUHRyPEltYWdlQml0bWFwPj4gaW1hZ2VCaXRtYXBzOworICAgIFZlY3RvcjxSZWZQdHI8T2Zm
c2NyZWVuQ2FudmFzPj4gb2Zmc2NyZWVuQ2FudmFzZXM7CiAgICAgZm9yIChhdXRvJiB0cmFuc2Zl
cmFibGUgOiB0cmFuc2Zlckxpc3QpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXlCdWZmZXIgPSB0
b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKQpAQCAtMzUwMiwxMSArMzU2
MywxOCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAorICAgICAgICBpZiAoYXV0byBvZmZzY3JlZW5DYW52YXMgPSBKU09mZnNjcmVl
bkNhbnZhczo6dG9XcmFwcGVkKHZtLCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAg
ICBvZmZzY3JlZW5DYW52YXNlcy5hcHBlbmQoV1RGTW92ZShvZmZzY3JlZW5DYW52YXMpKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IERhdGFDbG9uZUVycm9yIH07CiAgICAgfQogCiAgICAgaWYgKGNvbnRhaW5zRHVwbGljYXRl
cyhpbWFnZUJpdG1hcHMpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJy
b3IgfTsKKyAgICBpZiAoIW9mZnNjcmVlbkNhbnZhc2VzQ2FuRGV0YWNoKG9mZnNjcmVlbkNhbnZh
c2VzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxz
OwpAQCAtMzUxNCw3ICszNTgyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICBXYXNt
TW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+KCk7Ci0gICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5
QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMsIGltYWdlQml0bWFwcywgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxlcywgCiAjZW5kaWYKQEAgLTM1MjgsOCArMzU5
NiwxMSBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICByZXR1cm4gYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGF1dG8gaW1hZ2VCdWZm
ZXJzID0gSW1hZ2VCaXRtYXA6OmRldGFjaEJpdG1hcHMoV1RGTW92ZShpbWFnZUJpdG1hcHMpKTsK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gZGV0
YWNoZWRDYW52YXNlczsKKyAgICBmb3IgKGF1dG8gb2Zmc2NyZWVuQ2FudmFzIDogb2Zmc2NyZWVu
Q2FudmFzZXMpCisgICAgICAgIGRldGFjaGVkQ2FudmFzZXMuYXBwZW5kKG9mZnNjcmVlbkNhbnZh
cy0+ZGV0YWNoKCkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6
V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RG
TW92ZShpbWFnZUJ1ZmZlcnMpCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4
dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwg
V1RGTW92ZShpbWFnZUJ1ZmZlcnMpLCBXVEZNb3ZlKGRldGFjaGVkQ2FudmFzZXMpCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxl
QXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0zNTgyLDcgKzM2NTMsNyBAQCBKU1ZhbHVl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsCiAKIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdl
UG9ydHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JGaWxlUGF0aHMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25z
KQogewotICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXpl
cjo6ZGVzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbWVzc2Fn
ZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VCdWZmZXJzKSwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1fc2hhcmVkQnVmZmVy
Q29udGVudHNBcnJheS5nZXQoKQorICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBD
bG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VCdWZmZXJzKSwgV1RGTW92ZSht
X2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS5n
ZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZmZXJDb250
ZW50c0FycmF5LmdldCgpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2Fz
bU1vZHVsZXNBcnJheS5nZXQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGU1Njk2Mjg4MmRmMzcyZDA0YmM2
ZDgzMWFmYWQxYjFiZjI1MTQ3NGYuLmY2NzBlMjhhZTk5NjQ3ZjM1NmM1YTg0ZmM5MjljNmUwOWMy
MWM0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIE1vZHVsZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIElEQlZh
bHVlOwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBNZXNzYWdlUG9ydDsKQEAgLTExMCw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pik7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+LCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3Rk
OjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVy
cworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
c2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXM+PiYmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAs
IHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+CiAjZW5kaWYKQEAgLTEyMCw2ICsxMjEs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheTsKICAgICBW
ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiBtX2lt
YWdlQnVmZmVyczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOwogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVz
QXJyYXk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKaW5kZXggNDI5MzQwOGViMTQ0
ZmFiMDBmZGE1YjNlZWEwMDllMzU4N2MwMGYxMC4uMTYwNDgyZmUwMDMzZTg0MjQ2YzNjM2Q5ODIy
MjRlODcwZjViMzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKQEAgLTY1LDggKzY1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZnNjcmVlbkNhbnZhcygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NpemUud2lkdGgoKTsgfQotICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZS5oZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CiAgICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZl
cigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDlm
NzhlOGIyYmVjYjE4Yjk4OWY2MjhkZTEzYzEzZWRhOTBiNmIyOTEuLjg5YjA4YjI2YTY1NmQ1YzI2
MzA3OTE1ZGUyNDRlNWYyZWZjYWI1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTQzLDExICs0MywzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChPZmZzY3JlZW5DYW52YXMpOwogCitEZXRhY2hlZE9mZnNj
cmVlbkNhbnZhczo6RGV0YWNoZWRPZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBvcmlnaW5DbGVhbikK
KyAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAg
ICwgbV9vcmlnaW5DbGVhbihvcmlnaW5DbGVhbikKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkKK3sK
KyAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7Cit9CisKIFJlZjxPZmZzY3JlZW5DYW52YXM+
IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAorUmVm
PE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFz
PiYmIGRldGFjaGVkQ2FudmFzKQoreworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0g
YWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgZGV0YWNoZWRDYW52YXMtPnNp
emUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CisgICAgY2xv
bmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIoKSk7Cisg
ICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKKyAgICAgICAgY2xvbmUtPnNl
dE9yaWdpblRhaW50ZWQoKTsKKworICAgIHJldHVybiBjbG9uZTsKK30KKwogT2Zmc2NyZWVuQ2Fu
dmFzOjpPZmZzY3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKICAgICA6IENhbnZhc0Jhc2UoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSkKICAgICAsIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0
KQpAQCAtNjIsMTMgKzg0LDMxIEBAIE9mZnNjcmVlbkNhbnZhczo6fk9mZnNjcmVlbkNhbnZhcygp
CiAgICAgc2V0SW1hZ2VCdWZmZXIobnVsbHB0cik7CiB9CiAKK3Vuc2lnbmVkIE9mZnNjcmVlbkNh
bnZhczo6d2lkdGgoKSBjb25zdAoreworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gQ2FudmFzQmFzZTo6d2lkdGgoKTsKK30KKwordW5zaWduZWQgT2Zm
c2NyZWVuQ2FudmFzOjpoZWlnaHQoKSBjb25zdAoreworICAgIGlmIChtX2RldGFjaGVkKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ2FudmFzQmFzZTo6aGVpZ2h0KCk7Cit9CisKIHZv
aWQgT2Zmc2NyZWVuQ2FudmFzOjpzZXRXaWR0aCh1bnNpZ25lZCBuZXdXaWR0aCkKIHsKKyAgICBp
ZiAobV9kZXRhY2hlZCkKKyAgICAgICAgcmV0dXJuOwogICAgIHNldFNpemUoSW50U2l6ZShuZXdX
aWR0aCwgaGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldEhlaWdodCh1
bnNpZ25lZCBuZXdIZWlnaHQpCiB7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAgICAgIHJldHVy
bjsKICAgICBzZXRTaXplKEludFNpemUod2lkdGgoKSwgbmV3SGVpZ2h0KSk7CiB9CiAKQEAgLTgw
LDYgKzEyMCw5IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpzZXRTaXplKGNvbnN0IEludFNpemUm
IG5ld1NpemUpCiAKIEV4Y2VwdGlvbk9yPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+IE9mZnNj
cmVlbkNhbnZhczo6Z2V0Q29udGV4dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgUmVuZGVy
aW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25v
d24+PiYmIGFyZ3VtZW50cykKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKICAgICBpZiAoY29udGV4dFR5cGUg
PT0gUmVuZGVyaW5nQ29udGV4dFR5cGU6Ol8yZCkgewogICAgICAgICBpZiAobV9jb250ZXh0KSB7
CiAgICAgICAgICAgICBpZiAoIWlzPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4o
Km1fY29udGV4dCkpCkBAIC0xMTgsNyArMTYxLDcgQEAgRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVu
ZGVyaW5nQ29udGV4dD4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWwK
IAogRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFu
c2ZlclRvSW1hZ2VCaXRtYXAoKQogewotICAgIGlmICghbV9jb250ZXh0KQorICAgIGlmIChtX2Rl
dGFjaGVkIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OwogCiAgICAgaWYgKGlzPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRD4oKm1fY29udGV4dCkpIHsKQEAgLTE5Miw3ICsyMzUsNyBAQCB2b2lkIE9mZnNjcmVlbkNh
bnZhczo6Y29udmVydFRvQmxvYihJbWFnZUVuY29kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVm
ZXJyZWRQcgogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW5kZXhTaXplRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghYnVmZmVyKCkpIHsKKyAgICBpZiAobV9kZXRhY2hl
ZCB8fCAhYnVmZmVyKCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNiw2ICsyNjksMjEgQEAgU2VjdXJp
dHlPcmlnaW4qIE9mZnNjcmVlbkNhbnZhczo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJl
dHVybiAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAK
K2Jvb2wgT2Zmc2NyZWVuQ2FudmFzOjpjYW5EZXRhY2goKSBjb25zdAoreworICAgIHJldHVybiAh
bV9kZXRhY2hlZCAmJiAhbV9jb250ZXh0OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKCkKK3sKKyAgICBpZiAoIWNh
bkRldGFjaCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1fZGV0YWNoZWQgPSB0
cnVlOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZh
cz4obmV3IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzKHRha2VJbWFnZUJ1ZmZlcigpLCBzaXplKCks
IG9yaWdpbkNsZWFuKCkpKTsKK30KKwogQ1NTVmFsdWVQb29sJiBPZmZzY3JlZW5DYW52YXM6OmNz
c1ZhbHVlUG9vbCgpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CkBAIC0yNDgsNyArMzA2LDggQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgbV9oYXND
cmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOworICAgIGlmICghbV9kZXRhY2hlZCkKKyAgICAgICAg
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBp
cyBwcmltYXJpbHkgZm9yIHVzZSB3aXRoIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCwgd2hpY2gKICAg
ICAvLyByZXF1aXJlcyB0aGF0IHRoZSBjYW52YXMgYml0bWFwIHJlZmVyIHRvIGEgbmV3LCBibGFu
ayBiaXRtYXAgb2YgdGhlIHNhbWUKQEAgLTI1Nyw3ICszMTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKICAg
ICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxl
cmF0ZWQpKTsKKyAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9kZXRhY2hlZCA/IG51bGxwdHIg
OiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCkpOwogfQogCiB2b2lk
IE9mZnNjcmVlbkNhbnZhczo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmgKaW5kZXggNjU5NTc4OWQ1YzgzNDY1MjgxNTYxYTNiMDQzMGJkNWQyY2Q2MWVlOC4uNjc0NGY3
MmY3ZWYwZjdiMzUzZDBjN2NhNDg2OThlYzFlMjRkMWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oCkBAIC01NCw2ICs1NCwyMiBAQCB1c2luZyBPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0ID0gVmFyaWFudDxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dAogdXNpbmcgT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dCA9IFZhcmlhbnQ8UmVmUHRyPE9mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4+OwogI2VuZGlmCiAKK2NsYXNzIERldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRhY2hlZE9mZnNj
cmVlbkNhbnZhcyk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
RGV0YWNoZWRPZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmLCBj
b25zdCBJbnRTaXplJiwgYm9vbCBvcmlnaW5DbGVhbik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHRha2VJbWFnZUJ1ZmZlcigpOworICAgIGNvbnN0IEludFNpemUmIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIG9yaWdpbkNsZWFuKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgYm9vbCBt
X29yaWdpbkNsZWFuOworfTsKKwogY2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8T2Zmc2NyZWVuQ2FudmFzPiwgcHVibGljIENhbnZhc0Jhc2UsIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZnNjcmVlbkNhbnZhcyk7CiBwdWJs
aWM6CkBAIC02OSw4ICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8
T2Zmc2NyZWVuQ2FudmFzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworICAgIHN0YXRpYyBSZWY8T2Zmc2NyZWVuQ2FudmFz
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhcz4mJik7CiAgICAgdmlydHVhbCB+T2Zmc2NyZWVuQ2FudmFzKCk7CiAK
KyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGhlaWdodCgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQpOwogICAgIHZvaWQgc2V0
SGVpZ2h0KHVuc2lnbmVkKTsKIApAQCAtODgsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAgICBib29s
IGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzQ3JlYXRl
ZEltYWdlQnVmZmVyOyB9CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBj
b25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuRGV0YWNoKCkgY29uc3Q7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiBkZXRhY2goKTsKKwogICAgIENTU1ZhbHVl
UG9vbCYgY3NzVmFsdWVQb29sKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CkBAIC0x
MTksNiArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVy
IG1lYW5zIHdlIHRyaWVkIHRvIG1hbGxvYyB0aGUgYnVmZmVyLiBXZSBkaWRuJ3QgbmVjZXNzYXJp
bHkgZ2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciB7IGZh
bHNlIH07CisKKyAgICBib29sIG1fZGV0YWNoZWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDk0MDBlMThiYzEzNWU5NDJlYjI2MjlmZThlOTY2
ZGQxZWNiMjg2ZC4uMmFkZGM1OTZjODNhMWNiYzQxM2Q0Njg1OTYzMGMyMTEwZGNmMDY5NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTAtMTAg
IENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBbVHJh
bnNmZXJhYmxlXSBwcm9wZXJ0eSBvZiBPZmZzY3JlZW5DYW52YXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU3NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJs
b2ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLncuaHRt
bDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zm
c2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFz
L3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJp
dG1hcC53LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJy
YWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFi
bGUudy1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAtMTAgIENocmlzIExvcmQgIDxjbG9yZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBPZmZzY3JlZW5DYW52YXMuY29udmVydFRvQmxv
YgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVy
dC50by5ibG9iLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2Fu
dmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQKaW5kZXggOGZkOWVhOTY1MGZmZWE3OGZh
ZWRkNGU4YzdjNTI4MjA2OTg1N2I5OC4uMmZlZGRkMjg4YmNhYTU0OWJkNDY3Nzg4MmVhNWEzYzhh
ZTFjMTU4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMu
Y29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29m
ZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2ItZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBA
QCBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBlIHByb2R1Y2Vz
IGNvcnJlY3QgcmVzdWx0CiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggcG5nIHBy
b2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRo
IGpwZ2UgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9C
bG9iIHdpdGggd2VicCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCAKLUZBSUwgVGVzdCB0aGF0IGNh
bGwgY29udmVydFRvQmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhj
ZXB0aW9uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCitQQVNTIFRlc3QgdGhhdCBjYWxs
IGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2Vw
dGlvbiAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNh
bnZhcyB3aXRoIHNpemUgMCB0aHJvd3MgZXhjZXB0aW9uIAogUEFTUyBUZXN0IHRoYXQgY2FsbCBj
b252ZXJ0VG9CbG9iIG9uIGEgT2Zmc2NyZWVuQ2FudmFzIHdpdGggdGFpbnRlZCBvcmlnaW4gdGhy
b3dzIGV4Y2VwdGlvbiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3Jl
ZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8t
YmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0CmluZGV4
IGE5NmMxYjQ1ODU0NDViMWY2ZjEyZWJhMzVhMDdjMDA3YmY2YzZhZDQuLjI5YTk4YzFjMTA4MzYz
M2NlN2U4YmYxYTQyYjVjZGFlNGE0YjZkMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJs
b2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52
YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBl
Y3RlZC50eHQKQEAgLTEsNiArMSw0IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdl
ID0gRGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KIFBBU1Mg
VGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0IGFyZ3VtZW50cyBwcm9kdWNlcyBj
b3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Ig
d2l0aCBkZWZhdWx0IHR5cGUvMS4wIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4g
YSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBl
LzAuMiBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIApAQCAtMTMs
NyArMTEsNyBAQCBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgganBlZy8wLjIgcXVh
bGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0
VG9CbG9iIHdpdGggd2VicC9kZWZhdWx0IHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQg
aW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggd2VicC8xLjAg
cXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0
aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCB3ZWJwLzAuMiBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3Qg
cmVzdWx0IGluIGEgd29ya2VyIAotRkFJTCBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9u
IGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIg
YXNzZXJ0X3VucmVhY2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQQVNTIFRl
c3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMg
dGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVy
dFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHNpemUgMCB0aHJvd3MgZXhjZXB0aW9u
IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgT2Zm
c2NyZWVuQ2FudmFzIHdpdGggdGFpbnRlZCBvcmlnaW4gdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdv
cmtlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMu
Y29udmVydC50by5ibG9iLncuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2Fu
dmFzLmNvbnZlcnQudG8uYmxvYi53Lmh0bWwKaW5kZXggMWM2OWQ0ZDI2MzYxZjdkMTE3YTljODNl
OWE0NTdlYjVmMGYwNzhkYi4uOWIwOGNjODYyNTdmZjBlNTIyMGMyM2UzYTc2ZmZiOGE0ZDdkOGZh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVy
dC50by5ibG9iLncuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZh
cy5jb252ZXJ0LnRvLmJsb2Iudy5odG1sCkBAIC0zMDAsNiArMzAwLDggQEAgYXN5bmNfdGVzdChm
dW5jdGlvbih0KSB7CiBhc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICB2YXIgd29ya2VyID0g
bWFrZVdvcmtlcih0KTsKICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHQu
c3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24obXNnKSB7CisgICAgICAgIGlmIChtc2cuZGF0YSBpbnN0
YW5jZW9mIE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXNzZXJ0X3RydWUo
bXNnLmRhdGEpOwogICAgICAgICB0LmRvbmUoKTsKICAgICB9KSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0
bWFwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52
YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CmluZGV4IGZlMWU5MGU3YjNh
ZWJkNzA4Y2U2MGQyYjNlOTg0MmQ4MDQ1ZGJmOTguLjU2ZTFkN2U2NjliOWIyMjdiYTAxNWEyZjcx
NTdmNDBiNTUyY2NjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZz
Y3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2Vi
aXRtYXAtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNiBAQCBQQVNTIFRlc3QgdGhhdCB0cmFuc2Zl
clRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3Qgd2lkdGgg
YQogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJldHVybnMgYW4gSW1hZ2VC
aXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9yIGFzc2VydF9lcXVhbHM6IEFscGhhIGNoYW5uZWwgb2Yg
dGhlIHBpeGVsIGF0ICg1MCwgMjUpIGV4cGVjdGVkIDI1NSBidXQgZ290IDAKIFBBU1MgVGVzdCB0
aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3b24ndCBjaGFuZ2UgY29udGV4dCdzIHByb3BlcnR5
IAogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHByZXNlcnZlcyB0cmFuc2Zv
cm0gYXNzZXJ0X2VxdWFsczogR3JlZW4gY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKDIzLCAyNSkg
ZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1h
Z2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlv
biBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0IHRoYXQgY2FsbCB0cmFu
c2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFu
IGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3aXRob3V0
IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9m
ZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50
cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dAppbmRleCAzNDJkM2NmMmE3YTY1
NTE0ZmFhNmU4OTkzNmZjNTdlMDIxNTE0MjIwLi4xM2EwM2ViMDc4MmZiN2EzNmE5ZmY0OTJjMDA1
Y2E5MDYxNDliZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2Ny
ZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2Vi
aXRtYXAudy1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTAgQEAKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBEYXRhQ2xvbmVFcnJvcjogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4KLQogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJldHVybnMgYW4g
SW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IHdpZHRoIGFuZCBoZWlnaHQgaW4gYSB3b3JrZXIgCiBQ
QVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1h
cCB3aXRoIGNvcnJlY3QgY29sb3IgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIHRy
YW5zZmVyVG9JbWFnZUJpdG1hcCB0d2ljZSByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdpdGggY29y
cmVjdCBjb2xvciBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0lt
YWdlQml0bWFwIHR3aWNlIG9uIGEgYWxwaGEtZGlzYWJsZWQgY29udGV4dCByZXR1cm5zIGFuIElt
YWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCiBQQVNTIFRlc3QgdGhhdCB0
cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd29uJ3QgY2hhbmdlIGNvbnRleHQncyBwcm9wZXJ0eSBpbiBh
IHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHByZXNl
cnZlcyB0cmFuc2Zvcm0gaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFsczogcHJvcGVydHkg
MSwgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRv
SW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBpbiBhIHdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hh
YmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIG9uIGEg
ZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gaW4gYSB3b3JrZXIg
CiBQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3aXRob3V0IGEgY29u
dGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zl
cnJhYmxlLWV4cGVjdGVkLnR4dAppbmRleCBkMjMyNjViMDI5ZWRiYjA2ZWJkZjE1MjFkMTk3NWNj
Njg1MDM4ZGM0Li42YTFiZWIwYWI1YjcwZmIxNGE1OTFjMGViZDc5Njk1ZmNjMjEwMTIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVy
cmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3Jl
ZW5jYW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw3IEBACiAKLUZB
SUwgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWlu
ZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4K
LUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIGNv
bnRleHQgdGhyb3dzIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7b2Zmc2NyZWVuQ2FudmFzfSwg
W29mZnNjcmVlbkNhbnZhc10pOwotICAgICAgICB9IiB0aHJldyBvYmplY3QgIkRhdGFDbG9uZUVy
cm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIgdGhhdCBpcyBub3QgYSBET01FeGNl
cHRpb24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVhbCB0byAyNSwg
ZXhwZWN0ZWQgMTEKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0
d2ljZSB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotRkFJ
TCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2Ny
ZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQu
Ci1GQUlMIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJ3dlYmdsJykgb24gYSBkZXRhY2hl
ZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbi4gVGhlIG9iamVjdCBjYW4gbm90IGJl
IGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVj
dCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0
cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0IHRocm93cyBleGNl
cHRpb24uIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNl
IHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcy
ZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAorUEFT
UyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zm
c2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9m
ZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFi
bGUudy1leHBlY3RlZC50eHQKaW5kZXggNjRkNzk1YTBjMzgzMDg4NTIzMzY3ZWQxMWFmNzYyNmYw
NTU2ODc1OC4uNTI3ZDg2MWY4Y2Y3YTE0MTFiNTgyOTk1Mzc2MDE4OTc4ZDIxMjFkNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJh
YmxlLnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3Jl
ZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw4IEBACiAK
LUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNsb25lRXJyb3I6IFRoZSBvYmpl
Y3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KLUZBSUwgVGVzdCB0aGF0IE9mZnNjcmVlbkNhbnZhcydz
IHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIGEgd29ya2VyLiBh
c3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVGVz
dCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIDJkIGNvbnRleHQg
dGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhh
dCBoYXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2Vy
dF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXIg
YW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFz
c2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0
IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2Fu
dmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9y
IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250
ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRp
b24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFi
bGUgY29kZQorUEFTUyBUZXN0IHRoYXQgT2Zmc2NyZWVuQ2FudmFzJ3Mgc2l6ZSBpcyBjb3JyZWN0
IGFmdGVyIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQg
dHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgMmQgY29udGV4dCB0aHJvd3Mg
ZXhjZXB0aW9uIGluIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNj
cmVlbkNhbnZhcyB0aGF0IGhhcyBhIHdlYmdsIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBh
IHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdHdp
Y2UgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5n
IGdldENvbnRleHQoJzJkJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4
Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQo
J3dlYmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBp
biBhIHdvcmtlci4gCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385954</attachid>
            <date>2019-12-18 04:19:00 -0800</date>
            <delta_ts>2019-12-18 05:38:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20191218121859.patch</filename>
            <type>text/plain</type>
            <size>43056</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkMDkyMGM3ZDgzMWIy
ZGU3ZjNlNjdiOWFlMjIxZTc5YTUxNGQ0My4uMjRhNzE1OGMxOThiYTM5MDYzMDIwYTI5ZDM0ODVm
YzU2N2UzNzZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
aHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp3aWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnNldEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAp
OgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKworMjAxOS0xMi0xOCAgQ2hyaXMgTG9yZCAgPGNs
b3JkQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWlzc2luZyBoZWFkZXJzIGluIHdvcmtlciBmaWxl
cyBjYXVzZSByYW5kb20gYnVpbGQgZmFpbHVyZXMgd2hlbiBhZGRpbmcgbmV3IGZpbGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGJlaGF2aW9yYWwgY2hhbmdlcy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisKIDIwMTktMTAtMDQgIENocmlz
IExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSBhbmQgY2FuY2VsQW5pbWF0aW9uRnJhbWUgc2hvdWxkIGJlIHByZXNlbnQgb24gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGE3ZmU2NzE4MjU5NmU1NjAzYTI0Njc5Y2Fi
MjkyY2EyYjk3OTc1YTYuLmU0ZDVjOTQwZWY0NmE5ODMzYTYyY2Q0MmQ4MGM1ZDQyODUxMGYzNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNTAsNyArNTAsOSBAQAogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCisjaW5j
bHVkZSAiSlNPZmZzY3JlZW5DYW52YXMuaCIKICNpbmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgi
CisjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCkBAIC0xNjcsNiArMTY5LDcgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBS
VENDZXJ0aWZpY2F0ZVRhZyA9IDQ0LAogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBUYWcgPSA0NSwK
KyAgICBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA9IDQ2LAogICAgIEVycm9yVGFnID0gMjU1
CiB9OwogCkBAIC0zNTAsNiArMzUzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0Rh
dGFJczhCaXRGbGFnID0gMHg4MDAwMDAwMDsKICAqICAgIHwgSW1hZ2VCaXRtYXBUcmFuc2ZlclRh
ZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFJUQ0NlcnRpZmljYXRlVGFnCiAgKiAgICB8IElt
YWdlQml0bWFwVGFnIDxvcmlnaW5DbGVhbjp1aW50OF90PiA8bG9naWNhbFdpZHRoOmludDMyX3Q+
IDxsb2dpY2FsSGVpZ2h0OmludDMyX3Q+IDxyZXNvbHV0aW9uU2NhbGU6ZG91YmxlPiA8Ynl0ZUxl
bmd0aDp1aW50MzJfdD4oPGltYWdlQnl0ZURhdGE6dWludDhfdD4pCisgKiAgICB8IE9mZnNjcmVl
bkNhbnZhc1RyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqCiAgKiBJbnNpZGUgY2VydGlm
aWNhdGUsIGRhdGEgaXMgc2VyaWFsaXplZCBpbiB0aGlzIGZvcm1hdCBhcyBwZXIgc3BlYzoKICAq
CkBAIC01NDYsMTMgKzU1MCwxMyBAQCB0ZW1wbGF0ZSA8PiBib29sIHdyaXRlTGl0dGxlRW5kaWFu
PHVpbnQ4X3Q+KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCB1aW50OAogCiBjbGFzcyBD
bG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2Fn
ZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyAgICBzdGF0
aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mIG1lc3NhZ2VQb3J0cywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5
QnVmZmVycywgY29uc3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2Vz
LAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSYg
d2FzbU1vZHVsZXMsCiAjZW5kaWYKICAgICAgICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBW
ZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQogICAgIHsKLSAgICAgICAgQ2xvbmVT
ZXJpYWxpemVyIHNlcmlhbGl6ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKKyAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlh
bGl6ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGlt
YWdlQml0bWFwcywgb2Zmc2NyZWVuQ2FudmFzZXMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAgICAgd2FzbU1vZHVsZXMsCiAjZW5kaWYKQEAgLTU3OSw3ICs1ODMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBP
YmplY3RQb29sOwogCi0gICAgQ2xvbmVTZXJpYWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywg
VmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycywgY29uc3QgVmVj
dG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMsCisgICAgQ2xvbmVTZXJpYWxp
emVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4mIGFycmF5QnVmZmVycywgY29uc3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFn
ZUJpdG1hcHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVl
bkNhbnZhc2VzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgIFdhc21Nb2R1
bGVBcnJheSYgd2FzbU1vZHVsZXMsCiAjZW5kaWYKQEAgLTU5OCw2ICs2MDIsNyBAQCBwcml2YXRl
OgogICAgICAgICBmaWxsVHJhbnNmZXJNYXAobWVzc2FnZVBvcnRzLCBtX3RyYW5zZmVycmVkTWVz
c2FnZVBvcnRzKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGFycmF5QnVmZmVycywgbV90cmFu
c2ZlcnJlZEFycmF5QnVmZmVycyk7CiAgICAgICAgIGZpbGxUcmFuc2Zlck1hcChpbWFnZUJpdG1h
cHMsIG1fdHJhbnNmZXJyZWRJbWFnZUJpdG1hcHMpOworICAgICAgICBmaWxsVHJhbnNmZXJNYXAo
b2Zmc2NyZWVuQ2FudmFzZXMsIG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlcyk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CkBAIC05NDIsNiArOTQ3LDE4IEBAIHByaXZhdGU6
CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+
ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgfQogCisgICAgdm9pZCBk
dW1wT2Zmc2NyZWVuQ2FudmFzKEpTT2JqZWN0KiBvYmosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
JiBjb2RlKQorICAgIHsKKyAgICAgICAgYXV0byBpbmRleCA9IG1fdHJhbnNmZXJyZWRPZmZzY3Jl
ZW5DYW52YXNlcy5maW5kKG9iaik7CisgICAgICAgIGlmIChpbmRleCAhPSBtX3RyYW5zZmVycmVk
T2Zmc2NyZWVuQ2FudmFzZXMuZW5kKCkpIHsKKyAgICAgICAgICAgIHdyaXRlKE9mZnNjcmVlbkNh
bnZhc1RyYW5zZmVyVGFnKTsKKyAgICAgICAgICAgIHdyaXRlKGluZGV4LT52YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOworICAgIH0KKwogICAgIGJvb2wgZHVtcElmVGVy
bWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCiAgICAg
ewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMDkyLDcgKzExMDksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIFdhc21Nb2R1bGVBcnJheSBkdW1teU1vZHVsZXM7CiAj
ZW5kaWYKICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFy
ZWRCdWZmZXJzOwotICAgICAgICAgICAgICAgIENsb25lU2VyaWFsaXplciByYXdLZXlTZXJpYWxp
emVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlC
dWZmZXJzLCB7IH0sCisgICAgICAgICAgICAgICAgQ2xvbmVTZXJpYWxpemVyIHJhd0tleVNlcmlh
bGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJh
eUJ1ZmZlcnMsIHsgfSwgeyB9LAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAg
ICAgICAgICAgZHVtbXlNb2R1bGVzLAogI2VuZGlmCkBAIC0xMTUyLDYgKzExNjksMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBkdW1wSW1hZ2VCaXRtYXAob2JqLCBjb2RlKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChv
YmotPmluaGVyaXRzKHZtLCBKU09mZnNjcmVlbkNhbnZhczo6aW5mbygpKSkgeworICAgICAgICAg
ICAgICAgIGR1bXBPZmZzY3JlZW5DYW52YXMob2JqLCBjb2RlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlh
bGl6ZSBhcyBudWxsLgpAQCAtMTQ5OSw2ICsxNTIwLDcgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQ
b29sIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVy
cmVkQXJyYXlCdWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFw
czsKKyAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRPZmZzY3JlZW5DYW52YXNlczsKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50
aWZpZXJSZXBIYXNoPiBTdHJpbmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29s
IG1fY29uc3RhbnRQb29sOwogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CkBAIC0x
Nzc4LDcgKzE4MDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0g
ICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6
OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJz
LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KiBzaGFyZWRCdWZmZXJzCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBk
ZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBt
ZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVj
dG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFy
ZWRCdWZmZXJzCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVB
cnJheSogd2FzbU1vZHVsZXMKICNlbmRpZgpAQCAtMTc4Niw3ICsxODA4LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZp
ZWRFcnJvcik7Ci0gICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJz
LCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJp
YWxpemVyKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGJ1ZmZlciwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMs
IHNoYXJlZEJ1ZmZlcnMsIFdURk1vdmUoaW1hZ2VCdWZmZXJzKSwgV1RGTW92ZShkZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhc2VzKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICwg
d2FzbU1vZHVsZXMKICNlbmRpZgpAQCAtMTgzNiw3ICsxODU4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAotICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzLCBWZWN0b3I8c3RkOjpw
YWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywK
KyAgICBDbG9uZURlc2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlC
dWZmZXJDb250ZW50cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMsCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzLAog
I2VuZGlmCkBAIC0xODUyLDYgKzE4NzQsOCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fYXJyYXlC
dWZmZXJzKGFycmF5QnVmZmVyQ29udGVudHMgPyBhcnJheUJ1ZmZlckNvbnRlbnRzLT5zaXplKCkg
OiAwKQogICAgICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKICAg
ICAgICAgLCBtX2ltYWdlQml0bWFwcyhtX2ltYWdlQnVmZmVycy5zaXplKCkpCisgICAgICAgICwg
bV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52
YXNlcykpCisgICAgICAgICwgbV9vZmZzY3JlZW5DYW52YXNlcyhtX2RldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXMuc2l6ZSgpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dh
c21Nb2R1bGVzKHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0xODYwLDcgKzE4ODQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV92ZXJzaW9uID0gMHhGRkZGRkZGRjsKICAgICB9CiAKLSAgICBD
bG9uZURlc2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJD
b250ZW50cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycworICAgIENsb25l
RGVzZXJpYWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
IG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRl
bnRzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNh
bnZhc2VzCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJh
eSogd2FzbU1vZHVsZXMKICNlbmRpZgpAQCAtMTg3OSw2ICsxOTAzLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykKICAgICAgICAgLCBtX2ltYWdl
QnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCiAgICAgICAgICwgbV9pbWFnZUJpdG1hcHMo
bV9pbWFnZUJ1ZmZlcnMuc2l6ZSgpKQorICAgICAgICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52
YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpKQorICAgICAgICAsIG1fb2Zm
c2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLnNpemUoKSkKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3YXNtTW9kdWxlcykK
ICNlbmRpZgpAQCAtMjcxNyw2ICsyNzQzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBn
ZXRKU1ZhbHVlKGJpdG1hcCk7CiAgICAgfQogCisgICAgSlNWYWx1ZSByZWFkT2Zmc2NyZWVuQ2Fu
dmFzKCkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAgICBib29sIGluZGV4
U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICBpZiAoIWluZGV4U3VjY2Vz
c2Z1bGx5UmVhZCB8fCBpbmRleCA+PSBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgp
KSB7CisgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSkKKyAg
ICAgICAgICAgIG1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhdID0gT2Zmc2NyZWVuQ2FudmFzOjpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2Jh
bE9iamVjdCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkp
OworCisgICAgICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tp
bmRleF0uZ2V0KCk7CisgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7
CisgICAgfQorCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgSlNWYWx1ZSByZWFkUlRDQ2VydGlm
aWNhdGUoKQogICAgIHsKQEAgLTMwNTYsNyArMzA5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBKU1ZhbHVlIGNyeXB0b0tleTsKICAgICAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKLSAgICAgICAgICAgIENsb25l
RGVzZXJpYWxpemVyIHJhd0tleURlc2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIG1f
Z2xvYmFsT2JqZWN0LCBkdW1teU1lc3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LAorICAgICAgICAg
ICAgQ2xvbmVEZXNlcmlhbGl6ZXIgcmF3S2V5RGVzZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9i
amVjdCwgbV9nbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBudWxscHRyLCB7IH0sIHsg
fSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgbnVsbHB0ciwKICNl
bmRpZgpAQCAtMzA5Miw2ICszMTM0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBjYXNl
IEltYWdlQml0bWFwVGFnOgogICAgICAgICAgICAgcmV0dXJuIHJlYWRJbWFnZUJpdG1hcCgpOwor
ICAgICAgICBjYXNlIE9mZnNjcmVlbkNhbnZhc1RyYW5zZmVyVGFnOgorICAgICAgICAgICAgcmV0
dXJuIHJlYWRPZmZzY3JlZW5DYW52YXMoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBiYWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwpAQCAtMzEyMSw2ICszMTY1LDggQEAgcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIG1fc2hhcmVkQnVmZmVyczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiBtX2ltYWdlQnVmZmVyczsKICAgICBWZWN0b3I8
UmVmUHRyPEltYWdlQml0bWFwPj4gbV9pbWFnZUJpdG1hcHM7CisgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+IG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52
YXNlczsKKyAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IG1fb2Zmc2NyZWVuQ2Fu
dmFzZXM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSogbV93
YXNtTW9kdWxlczsKICNlbmRpZgpAQCAtMzMzNyw3ICszMzgzLDcgQEAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBz
dGQ6OnVuaXEKIHsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKK1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXksIFZl
Y3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1h
Z2VCdWZmZXJzLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFz
Pj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJy
YXkKICNlbmRpZgpAQCAtMzM0Niw2ICszMzkyLDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMK
ICAgICAsIG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5KSkKICAgICAsIG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKHNo
YXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9pbWFnZUJ1ZmZlcnMoV1RGTW92ZShp
bWFnZUJ1ZmZlcnMpKQorICAgICwgbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUo
ZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICwgbV93YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJheSkpCiAjZW5kaWYK
QEAgLTM0MzMsMTIgKzM0ODAsMTMgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBWZWN0
b3I8U3RyaW5nPiBibG9iVVJMczsKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVt
bXlNZXNzYWdlUG9ydHM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IGR1bW15SW1h
Z2VCaXRtYXBzOworICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZz
Y3JlZW5DYW52YXNlczsKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1t
eUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFy
cmF5IGR1bW15TW9kdWxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBk
dW1teVNoYXJlZEJ1ZmZlcnM7Ci0gICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVt
bXlBcnJheUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLAorICAgIGF1dG8gY29kZSA9IENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlN
ZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywgZHVtbXlP
ZmZzY3JlZW5DYW52YXNlcywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGR1bW15
TW9kdWxlcywKICNlbmRpZgpAQCAtMzQ1NCw3ICszNTAyLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qm
IGxleGkKICAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxz
LCBudWxscHRyLCBudWxscHRyLCB7IH0KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxp
emVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgbnVsbHB0ciwgbnVsbHB0
ciwgeyB9LCB7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbnVsbHB0cgog
I2VuZGlmCkBAIC0zNDcxLDExICszNTE5LDI0IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zRHVwbGlj
YXRlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcykKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIG9mZnNjcmVlbkNhbnZhc2VzQ2FuRGV0
YWNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZh
c2VzKQoreworICAgIEhhc2hTZXQ8T2Zmc2NyZWVuQ2FudmFzKj4gdmlzaXRlZDsKKyAgICBmb3Ig
KGF1dG8mIG9mZnNjcmVlbkNhbnZhcyA6IG9mZnNjcmVlbkNhbnZhc2VzKSB7CisgICAgICAgIGlm
ICghb2Zmc2NyZWVuQ2FudmFzLT5jYW5EZXRhY2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCF2aXNpdGVkLmFkZChvZmZzY3JlZW5DYW52YXMuZ2V0KCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRXhj
ZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJMaXN0LCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkNv
bnRleHQgY29udGV4dCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7
CiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJzOwogICAg
IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBpbWFnZUJpdG1hcHM7CisgICAgVmVjdG9yPFJl
ZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBvZmZzY3JlZW5DYW52YXNlczsKICAgICBmb3IgKGF1dG8m
IHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlzdCkgewogICAgICAgICBpZiAoYXV0byBhcnJheUJ1
ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNmZXJhYmxlLmdldCgp
KSkgewogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc05ldXRlcmVkKCkpCkBAIC0zNTAy
LDExICszNTYzLDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhdXRvIG9mZnNjcmVlbkNhbnZhcyA9IEpT
T2Zmc2NyZWVuQ2FudmFzOjp0b1dyYXBwZWQodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAg
ICAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2VzLmFwcGVuZChXVEZNb3ZlKG9mZnNjcmVlbkNhbnZh
cykpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICB9CiAKICAgICBpZiAoY29udGFpbnNE
dXBsaWNhdGVzKGltYWdlQml0bWFwcykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRh
Q2xvbmVFcnJvciB9OworICAgIGlmICghb2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gob2Zmc2Ny
ZWVuQ2FudmFzZXMpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVjdG9yPFN0cmluZz4g
YmxvYlVSTHM7CkBAIC0zNTE0LDcgKzM1ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgog
ICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVl
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKLSAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0
cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCisgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJp
YWxpemVyOjpzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBtZXNzYWdlUG9y
dHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLCBvZmZzY3JlZW5DYW52YXNlcywKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKICNlbmRpZgpAQCAtMzUy
OCw4ICszNTk2LDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgIHJldHVybiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgYXV0byBp
bWFnZUJ1ZmZlcnMgPSBJbWFnZUJpdG1hcDo6ZGV0YWNoQml0bWFwcyhXVEZNb3ZlKGltYWdlQml0
bWFwcykpOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52
YXM+PiBkZXRhY2hlZENhbnZhc2VzOworICAgIGZvciAoYXV0byBvZmZzY3JlZW5DYW52YXMgOiBv
ZmZzY3JlZW5DYW52YXNlcykKKyAgICAgICAgZGV0YWNoZWRDYW52YXNlcy5hcHBlbmQob2Zmc2Ny
ZWVuQ2FudmFzLT5kZXRhY2goKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxp
emVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25D
b250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxs
cHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRp
b25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBu
dWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycyksIFdURk1vdmUoZGV0YWNoZWRDYW52YXNlcykK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdh
c21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKQEAgLTM1ODIsNyArMzY1Myw3IEBA
IEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKIAogSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
IG1lc3NhZ2VQb3J0cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVz
ZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBtZXNzYWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpLCBtX2FycmF5QnVmZmVyQ29u
dGVudHNBcnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5LmdldCgpCisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJl
c3VsdCA9IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpLCBX
VEZNb3ZlKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyksIG1fYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LmdldCgpLCBtX2RhdGEsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBtX3NoYXJlZEJ1
ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAg
ICwgbV93YXNtTW9kdWxlc0FycmF5LmdldCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggYTRiOWY2NmQwZTg3
ZDAyMTMyMGUzNDY5MzYwNmYwNDNmODUzZTc0Zi4uNGIyY2U2OTM2OTE2N2ZjNmRmMTMyODNkZDU1
MmJhNzBjYWNmOGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgTW9kdWxlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xh
c3MgSURCVmFsdWU7CiBjbGFzcyBJbWFnZUJpdG1hcDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwpAQCAt
MTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KTsKLSAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4sIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZl
Y3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1h
Z2VCdWZmZXJzCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVycywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4KICNlbmRpZgpAQCAtMTIw
LDYgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5
OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9v
bD4+IG1faW1hZ2VCdWZmZXJzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXM7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2Fz
bU1vZHVsZXNBcnJheTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
YW52YXNCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAppbmRleCA0Mjkz
NDA4ZWIxNDRmYWIwMGZkYTViM2VlYTAwOWUzNTg3YzAwZjEwLi4xNjA0ODJmZTAwMzNlODQyNDZj
M2MzZDk4MjIyNGU4NzBmNWIzNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nh
bnZhc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaApAQCAtNjUs
OCArNjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuQ2FudmFzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludENh
bnZhcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KICAgICBjb25zdCBJ
bnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICBJbWFnZUJ1ZmZl
ciogYnVmZmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
aW5kZXggOWY3OGU4YjJiZWNiMThiOTg5ZjYyOGRlMTNjMTNlZGE5MGI2YjI5MS4uMjBlNjliOTc1
Nzc5NmZhMjkwNGQ5MTZhYmZiNGVhN2QyZWVmODAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcApAQCAtNDMsMTEgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9mZnNjcmVlbkNhbnZhcyk7CiAKK0RldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyhzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG9yaWdp
bkNsZWFuKQorICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9zaXplKHNp
emUpCisgICAgLCBtX29yaWdpbkNsZWFuKG9yaWdpbkNsZWFuKQoreworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZm
ZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKK30KKwogUmVmPE9mZnNjcmVl
bkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhlaWdodCkpOwog
fQogCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+JiYgZGV0YWNoZWRDYW52YXMpCit7CisgICAgUmVmPE9mZnNjcmVlbkNhbnZhcz4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCBkZXRhY2hlZENh
bnZhcy0+c2l6ZSgpLndpZHRoKCksIGRldGFjaGVkQ2FudmFzLT5zaXplKCkuaGVpZ2h0KCkpKTsK
KyAgICBjbG9uZS0+c2V0SW1hZ2VCdWZmZXIoZGV0YWNoZWRDYW52YXMtPnRha2VJbWFnZUJ1ZmZl
cigpKTsKKyAgICBpZiAoIWRldGFjaGVkQ2FudmFzLT5vcmlnaW5DbGVhbigpKQorICAgICAgICBj
bG9uZS0+c2V0T3JpZ2luVGFpbnRlZCgpOworCisgICAgcmV0dXJuIGNsb25lOworfQorCiBPZmZz
Y3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIDogQ2FudmFzQmFzZShJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpKQogICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIo
JmNvbnRleHQpCkBAIC02MiwxMyArODQsMzEgQEAgT2Zmc2NyZWVuQ2FudmFzOjp+T2Zmc2NyZWVu
Q2FudmFzKCkKICAgICBzZXRJbWFnZUJ1ZmZlcihudWxscHRyKTsKIH0KIAordW5zaWduZWQgT2Zm
c2NyZWVuQ2FudmFzOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBDYW52YXNCYXNlOjp3aWR0aCgpOworfQorCit1bnNp
Z25lZCBPZmZzY3JlZW5DYW52YXM6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGV0YWNo
ZWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBDYW52YXNCYXNlOjpoZWlnaHQoKTsK
K30KKwogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKQog
eworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm47CiAgICAgc2V0U2l6ZShJbnRT
aXplKG5ld1dpZHRoLCBoZWlnaHQoKSkpOwogfQogCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0
SGVpZ2h0KHVuc2lnbmVkIG5ld0hlaWdodCkKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOwogICAgIHNldFNpemUoSW50U2l6ZSh3aWR0aCgpLCBuZXdIZWlnaHQpKTsKIH0K
IApAQCAtODAsNiArMTIwLDkgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSkKIAogRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4
dD4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRl
LCBSZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogeworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwogICAgIGlmIChjb250
ZXh0VHlwZSA9PSBSZW5kZXJpbmdDb250ZXh0VHlwZTo6XzJkKSB7CiAgICAgICAgIGlmIChtX2Nv
bnRleHQpIHsKICAgICAgICAgICAgIGlmICghaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPigqbV9jb250ZXh0KSkKQEAgLTExOCw3ICsxNjEsNyBAQCBFeGNlcHRpb25PcjxPZmZz
Y3JlZW5SZW5kZXJpbmdDb250ZXh0PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpK
U0dsb2JhbAogCiBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52
YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCisgICAg
aWYgKG1fZGV0YWNoZWQgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBpZiAoaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPigqbV9jb250ZXh0KSkgewpAQCAtMTkyLDcgKzIzNSw3IEBAIHZvaWQgT2Zm
c2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyYmIG9wdGlvbnMs
IFJlZjxEZWZlcnJlZFByCiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbmRleFNpemVFcnJvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFidWZmZXIoKSkgeworICAgIGlmICht
X2RldGFjaGVkIHx8ICFidWZmZXIoKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDYgKzI2OSwyMSBA
QCBTZWN1cml0eU9yaWdpbiogT2Zmc2NyZWVuQ2FudmFzOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0
CiAgICAgcmV0dXJuICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuc2VjdXJpdHlPcmlnaW4o
KTsKIH0KIAorYm9vbCBPZmZzY3JlZW5DYW52YXM6OmNhbkRldGFjaCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RldGFjaGVkICYmICFtX2NvbnRleHQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpkZXRhY2goKQoreworICAg
IGlmICghY2FuRGV0YWNoKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9kZXRh
Y2hlZCA9IHRydWU7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4odGFrZUltYWdlQnVmZmVyKCksIHNpemUoKSwgb3JpZ2luQ2xlYW4oKSk7Cit9CisKIENT
U1ZhbHVlUG9vbCYgT2Zmc2NyZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2woKQogewogICAgIGF1dG8q
IGNvbnRleHQgPSBjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjQ4LDcg
KzMwNiw4IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0
CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1h
Z2VCdWZmZXIoKSBjb25zdAogewotICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1ZTsK
KyAgICBpZiAoIW1fZGV0YWNoZWQpCisgICAgICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0g
dHJ1ZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aCB0
cmFuc2ZlclRvSW1hZ2VCaXRtYXAsIHdoaWNoCiAgICAgLy8gcmVxdWlyZXMgdGhhdCB0aGUgY2Fu
dmFzIGJpdG1hcCByZWZlciB0byBhIG5ldywgYmxhbmsgYml0bWFwIG9mIHRoZSBzYW1lCkBAIC0y
NTcsNyArMzE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52
YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKSk7CisgICAgcmV0dXJuIHNldElt
YWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBudWxscHRyIDogSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
KCksIFVuYWNjZWxlcmF0ZWQpKTsKIH0KIAogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnJlc2V0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCmluZGV4IDY1OTU3ODlkNWM4MzQ2NTI4
MTU2MWEzYjA0MzBiZDVkMmNkNjFlZTguLjY3NDRmNzJmN2VmMGY3YjM1M2QwYzdjYTQ4Njk4ZWMx
ZTI0ZDFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtNTQsNiAr
NTQsMjIgQEAgdXNpbmcgT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dCA9IFZhcmlhbnQ8UmVmUHRy
PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQKIHVzaW5nIE9mZnNjcmVlblJlbmRlcmlu
Z0NvbnRleHQgPSBWYXJpYW50PFJlZlB0cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ+PjsKICNlbmRpZgogCitjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzKHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgb3JpZ2lu
Q2xlYW4pOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0YWtlSW1hZ2VCdWZm
ZXIoKTsKKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgYm9vbCBvcmlnaW5DbGVhbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luQ2xlYW47IH0K
KworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIEludFNpemUgbV9zaXplOworICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKK307CisKIGNsYXNz
IE9mZnNjcmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZh
cz4sIHB1YmxpYyBDYW52YXNCYXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChPZmZzY3JlZW5DYW52YXMpOwogcHVibGljOgpAQCAtNjksOCArODUsMTEgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPE9mZnNjcmVlbkNhbnZhcz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsK
KyAgICBzdGF0aWMgUmVmPE9mZnNjcmVlbkNhbnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+JiYpOwogICAg
IHZpcnR1YWwgfk9mZnNjcmVlbkNhbnZhcygpOwogCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25z
dCBmaW5hbDsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNl
dFdpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCk7CiAKQEAgLTg4
LDYgKzEwNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsgfQogCiAgICAgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGNh
bkRldGFjaCgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4gZGV0YWNoKCk7CisKICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogCiAg
ICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpAQCAtMTE5LDYgKzE0Miw4IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciBtZWFucyB3ZSB0cmllZCB0byBtYWxsb2Mg
dGhlIGJ1ZmZlci4gV2UgZGlkbid0IG5lY2Vzc2FyaWx5IGdldCBpdC4KICAgICBtdXRhYmxlIGJv
b2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgeyBmYWxzZSB9OworCisgICAgYm9vbCBtX2RldGFj
aGVkIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IGQ4MTU0NDJhOGM2YzgxOGM2MDkxZjU5MzI3ZWExNDliOTAxZDliYTQuLmJkZWM1ZDY3ZDU2Y2Iy
YTM4OTE4NjIzYzkxMWU4ODJhYmViM2QzNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTEwLTEwICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVyYWJsZV0gcHJvcGVydHkgb2YgT2Zm
c2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxv
Yi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zm
c2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2Ny
ZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2Fu
dmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZz
Y3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1j
YW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2Fu
dmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0OgorCiAyMDE5
LTExLTI1ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIENT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUNvbG9yIHNhZmUgdG8gdXNlIHdpdGhpbiBh
IHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMu
Y29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2Ny
ZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQKaW5kZXggOGZkOWVhOTY1MGZm
ZWE3OGZhZWRkNGU4YzdjNTI4MjA2OTg1N2I5OC4uMmZlZGRkMjg4YmNhYTU0OWJkNDY3Nzg4MmVh
NWEzYzhhZTFjMTU4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5j
YW52YXMuY29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1i
bG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2ItZXhwZWN0ZWQudHh0CkBAIC0zLDcg
KzMsNyBAQCBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBlIHBy
b2R1Y2VzIGNvcnJlY3QgcmVzdWx0CiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgg
cG5nIHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxv
YiB3aXRoIGpwZ2UgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgCiBQQVNTIFRlc3QgdGhhdCBjb252
ZXJ0VG9CbG9iIHdpdGggd2VicCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCAKLUZBSUwgVGVzdCB0
aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJv
d3MgZXhjZXB0aW9uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCitQQVNTIFRlc3QgdGhh
dCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dz
IGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNj
cmVlbkNhbnZhcyB3aXRoIHNpemUgMCB0aHJvd3MgZXhjZXB0aW9uIAogUEFTUyBUZXN0IHRoYXQg
Y2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgT2Zmc2NyZWVuQ2FudmFzIHdpdGggdGFpbnRlZCBvcmln
aW4gdGhyb3dzIGV4Y2VwdGlvbiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9v
ZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZl
cnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0
CmluZGV4IGE5NmMxYjQ1ODU0NDViMWY2ZjEyZWJhMzVhMDdjMDA3YmY2YzZhZDQuLjI5YTk4YzFj
MTA4MzYzM2NlN2U4YmYxYTQyYjVjZGFlNGE0YjZkMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0
LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iu
dy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw0IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBt
ZXNzYWdlID0gRGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0K
IFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0IGFyZ3VtZW50cyBwcm9k
dWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRU
b0Jsb2Igd2l0aCBkZWZhdWx0IHR5cGUvMS4wIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1
bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVs
dCB0eXBlLzAuMiBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIApA
QCAtMTMsNyArMTEsNyBAQCBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgganBlZy8w
LjIgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhCiBQQVNTIFRlc3QgdGhhdCBj
b252ZXJ0VG9CbG9iIHdpdGggd2VicC9kZWZhdWx0IHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCBy
ZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggd2Vi
cC8xLjAgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKIFBBU1Mg
VGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCB3ZWJwLzAuMiBxdWFsaXR5IHByb2R1Y2VzIGNv
cnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIAotRkFJTCBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9C
bG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3
b3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQ
QVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5D
YW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNhbGwg
Y29udmVydFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHNpemUgMCB0aHJvd3MgZXhj
ZXB0aW9uIGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9u
IGEgT2Zmc2NyZWVuQ2FudmFzIHdpdGggdGFpbnRlZCBvcmlnaW4gdGhyb3dzIGV4Y2VwdGlvbiBp
biBhIHdvcmtlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5j
YW52YXMuY29udmVydC50by5ibG9iLncuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2Ny
ZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53Lmh0bWwKaW5kZXggMWM2OWQ0ZDI2MzYxZjdkMTE3
YTljODNlOWE0NTdlYjVmMGYwNzhkYi4uOWIwOGNjODYyNTdmZjBlNTIyMGMyM2UzYTc2ZmZiOGE0
ZDdkOGZhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMu
Y29udmVydC50by5ibG9iLncuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVl
bmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy5odG1sCkBAIC0zMDAsNiArMzAwLDggQEAgYXN5bmNf
dGVzdChmdW5jdGlvbih0KSB7CiBhc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICB2YXIgd29y
a2VyID0gbWFrZVdvcmtlcih0KTsKICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2Fn
ZScsIHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24obXNnKSB7CisgICAgICAgIGlmIChtc2cuZGF0
YSBpbnN0YW5jZW9mIE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXNzZXJ0
X3RydWUobXNnLmRhdGEpOwogICAgICAgICB0LmRvbmUoKTsKICAgICB9KSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmlt
YWdlYml0bWFwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3Jl
ZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CmluZGV4IGZlMWU5
MGU3YjNhZWJkNzA4Y2U2MGQyYjNlOTg0MmQ4MDQ1ZGJmOTguLjU2ZTFkN2U2NjliOWIyMjdiYTAx
NWEyZjcxNTdmNDBiNTUyY2NjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZh
cy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8u
aW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNiBAQCBQQVNTIFRlc3QgdGhhdCB0
cmFuc2ZlclRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3Qg
d2lkdGggYQogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJldHVybnMgYW4g
SW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9yIGFzc2VydF9lcXVhbHM6IEFscGhhIGNoYW5u
ZWwgb2YgdGhlIHBpeGVsIGF0ICg1MCwgMjUpIGV4cGVjdGVkIDI1NSBidXQgZ290IDAKIFBBU1Mg
VGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3b24ndCBjaGFuZ2UgY29udGV4dCdzIHBy
b3BlcnR5IAogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHByZXNlcnZlcyB0
cmFuc2Zvcm0gYXNzZXJ0X2VxdWFsczogR3JlZW4gY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKDIz
LCAyNSkgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2FsbCB0cmFuc2Zl
clRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0IHRoYXQgY2Fs
bCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhy
b3dzIGFuIGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3
aXRob3V0IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0
bWFwLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNh
bnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dAppbmRleCAzNDJkM2Nm
MmE3YTY1NTE0ZmFhNmU4OTkzNmZjNTdlMDIxNTE0MjIwLi4xM2EwM2ViMDc4MmZiN2EzNmE5ZmY0
OTJjMDA1Y2E5MDYxNDliZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMv
b2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8u
aW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTAgQEAKIAotSGFybmVzcyBF
cnJvciAoRkFJTCksIG1lc3NhZ2UgPSBEYXRhQ2xvbmVFcnJvcjogVGhlIG9iamVjdCBjYW4gbm90
IGJlIGNsb25lZC4KLQogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJldHVy
bnMgYW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IHdpZHRoIGFuZCBoZWlnaHQgaW4gYSB3b3Jr
ZXIgCiBQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFn
ZUJpdG1hcCB3aXRoIGNvcnJlY3QgY29sb3IgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBj
YWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB0d2ljZSByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdp
dGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNm
ZXJUb0ltYWdlQml0bWFwIHR3aWNlIG9uIGEgYWxwaGEtZGlzYWJsZWQgY29udGV4dCByZXR1cm5z
IGFuIEltYWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciBhc3NlcnRfYXJy
YXlfZXF1YWxzOiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCiBQQVNTIFRlc3Qg
dGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd29uJ3QgY2hhbmdlIGNvbnRleHQncyBwcm9wZXJ0
eSBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFw
IHByZXNlcnZlcyB0cmFuc2Zvcm0gaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFsczogcHJv
cGVydHkgMSwgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2FsbCB0cmFu
c2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFu
IGV4Y2VwdGlvbiBpbiBhIHdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFw
IG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gaW4gYSB3
b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3aXRob3V0
IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50
cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dAppbmRleCBkMjMyNjViMDI5ZWRiYjA2ZWJkZjE1MjFk
MTk3NWNjNjg1MDM4ZGM0Li42YTFiZWIwYWI1YjcwZmIxNGE1OTFjMGViZDc5Njk1ZmNjMjEwMTIw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRy
YW5zZmVycmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9v
ZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw3IEBA
CiAKLUZBSUwgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRl
ciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4KLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhh
cyBhIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7b2Zmc2NyZWVuQ2Fu
dmFzfSwgW29mZnNjcmVlbkNhbnZhc10pOwotICAgICAgICB9IiB0aHJldyBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIgdGhhdCBpcyBub3QgYSBE
T01FeGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVhbCB0
byAyNSwgZXhwZWN0ZWQgMTEKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNh
bnZhcyB0d2ljZSB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVk
LgotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQg
T2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBj
bG9uZWQuCi1GQUlMIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJ3dlYmdsJykgb24gYSBk
ZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbi4gVGhlIG9iamVjdCBjYW4g
bm90IGJlIGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMg
Y29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gCitQQVNTIFRlc3Qg
dGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0IHRocm93
cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFz
IHR3aWNlIHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250
ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24u
IAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNo
ZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUudy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5z
ZmVycmFibGUudy1leHBlY3RlZC50eHQKaW5kZXggNjRkNzk1YTBjMzgzMDg4NTIzMzY3ZWQxMWFm
NzYyNmYwNTU2ODc1OC4uNTI3ZDg2MWY4Y2Y3YTE0MTFiNTgyOTk1Mzc2MDE4OTc4ZDIxMjFkNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFu
c2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9v
ZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw4
IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNsb25lRXJyb3I6IFRo
ZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KLUZBSUwgVGVzdCB0aGF0IE9mZnNjcmVlbkNh
bnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIGEgd29y
a2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZB
SUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIDJkIGNv
bnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gYXNzZXJ0X3RydWU6IGV4cGVjdGVk
IHRydWUgZ290IGZhbHNlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52
YXMgdGhhdCBoYXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIu
IGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IHRoYXQgdHJh
bnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3Jr
ZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJ
TCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2Ny
ZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6
IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBn
ZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBl
eGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5y
ZWFjaGFibGUgY29kZQorUEFTUyBUZXN0IHRoYXQgT2Zmc2NyZWVuQ2FudmFzJ3Mgc2l6ZSBpcyBj
b3JyZWN0IGFmdGVyIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gYSB3b3JrZXIuIAorUEFTUyBUZXN0
IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgMmQgY29udGV4dCB0
aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5zZmVyIGFu
IE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIHdlYmdsIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlv
biBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52
YXMgdHdpY2UgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBj
YWxsaW5nIGdldENvbnRleHQoJzJkJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhy
b3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5nIGdldENv
bnRleHQoJ3dlYmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2Vw
dGlvbiBpbiBhIHdvcmtlci4gCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385965</attachid>
            <date>2019-12-18 05:38:13 -0800</date>
            <delta_ts>2020-01-28 03:00:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20191218133812.patch</filename>
            <type>text/plain</type>
            <size>41146</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkMDkyMGM3ZDgzMWIy
ZGU3ZjNlNjdiOWFlMjIxZTc5YTUxNGQ0My4uNmJlNDc3NTM2NDkwZTc5YTAyMzZjODY5YTk4NWZh
NjA4M2I4NDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
aHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp3aWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnNldEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAp
OgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKwogMjAxOS0xMC0wNCAgQ2hyaXMgTG9yZCAgPGNs
b3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuZCBjYW5j
ZWxBbmltYXRpb25GcmFtZSBzaG91bGQgYmUgcHJlc2VudCBvbiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggYTdmZTY3MTgyNTk2ZTU2MDNhMjQ2NzljYWIyOTJjYTJiOTc5
NzVhNi4uMzc2ZmM0OGM1NzI3OTg3NTExZGVkMGVlZjA3YzMwNDU2OWI0YzFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC04Nyw2ICs4NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaW5jbHVkZSAi
SlNPZmZzY3JlZW5DYW52YXMuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKKyNlbmRp
ZgorCiAjaWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVF
RFNfQUxJR05FRF9BQ0NFU1MpCiAjZGVmaW5lIEFTU1VNRV9MSVRUTEVfRU5ESUFOIDAKICNlbHNl
CkBAIC0xNjcsNiArMTcyLDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBSVENDZXJ0
aWZpY2F0ZVRhZyA9IDQ0LAogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBUYWcgPSA0NSwKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA9
IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1MCw2ICszNTgsNyBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAw
OwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAg
IHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFu
OnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4g
PHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRl
RGF0YTp1aW50OF90PikKKyAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJUYWcgPHZhbHVl
OnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVk
IGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTU0NywxMiArNTU2LDE4IEBAIHRl
bXBsYXRlIDw+IGJvb2wgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4oVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIsIGNvbnN0IHVpbnQ4CiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0
bWFwPj4mIGltYWdlQml0bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNh
bnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2Fz
bU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBj
b250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewog
ICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBt
ZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCisjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKICNlbmRpZgpA
QCAtNTgwLDYgKzU5NSw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0
KiwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAKICAgICBDbG9uZVNlcmlhbGl6ZXIoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYg
bWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZm
ZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxl
cywKICNlbmRpZgpAQCAtNTk4LDYgKzYxNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGZpbGxUcmFu
c2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMpOwogICAgICAg
ICBmaWxsVHJhbnNmZXJNYXAoYXJyYXlCdWZmZXJzLCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJz
KTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGltYWdlQml0bWFwcywgbV90cmFuc2ZlcnJlZElt
YWdlQml0bWFwcyk7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgIGZpbGxU
cmFuc2Zlck1hcChvZmZzY3JlZW5DYW52YXNlcywgbV90cmFuc2ZlcnJlZE9mZnNjcmVlbkNhbnZh
c2VzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgpAQCAtOTQyLDYg
Kzk2MywyMCBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIHZvaWQgZHVtcE9mZnNj
cmVlbkNhbnZhcyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkK
KyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
ZXMuZmluZChvYmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZE9mZnNjcmVl
bkNhbnZhc2VzLmVuZCgpKSB7CisgICAgICAgICAgICB3cml0ZShPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZyk7CisgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgZHVtcElmVGVy
bWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCiAgICAg
ewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMDkzLDYgKzExMjgsOSBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3
S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBk
dW1teUFycmF5QnVmZmVycywgeyB9LAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAg
ICAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKICNlbmRpZgpAQCAtMTE1Miw2ICsxMTkw
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZHVtcEltYWdlQml0bWFwKG9iaiwgY29k
ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cyh2bSwg
SlNPZmZzY3JlZW5DYW52YXM6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBkdW1wT2Zmc2Ny
ZWVuQ2FudmFzKG9iaiwgY29kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlhbGl6ZSBhcyBu
dWxsLgpAQCAtMTQ5OSw2ICsxNTQzLDkgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQb29sIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlC
dWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFwczsKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRPZmZz
Y3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmluZ0NvbnN0YW50
UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAgICAgSWRlbnRp
ZmllciBtX2VtcHR5SWRlbnRpZmllcjsKQEAgLTE3NzgsNyArMTgyNSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0gICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJl
c3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkq
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxv
YkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzCisgICAg
c3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cworI2VuZGlmCisgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMs
IEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzCiAjZW5kaWYK
QEAgLTE3ODcsNiArMTgzOCw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAgICAgIENsb25lRGVzZXJpYWxp
emVyIGRlc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3Nh
Z2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBibG9i
RmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZE9mZnNj
cmVlbkNhbnZhc2VzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgLCB3YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODM3LDYgKzE4OTEsOSBAQCBwcml2YXRlOgog
ICAgIH07CiAKICAgICBDbG9uZURlc2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSogYXJyYXlCdWZmZXJDb250ZW50cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsCisjaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVMpCisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMsCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMsCiAj
ZW5kaWYKQEAgLTE4NTIsNiArMTkwOSwxMCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fYXJyYXlC
dWZmZXJzKGFycmF5QnVmZmVyQ29udGVudHMgPyBhcnJheUJ1ZmZlckNvbnRlbnRzLT5zaXplKCkg
OiAwKQogICAgICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKICAg
ICAgICAgLCBtX2ltYWdlQml0bWFwcyhtX2ltYWdlQnVmZmVycy5zaXplKCkpCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
KFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykpCisgICAgICAgICwgbV9vZmZzY3Jl
ZW5DYW52YXNlcyhtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgpKQorI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVs
ZXMpCiAjZW5kaWYKQEAgLTE4NjEsNiArMTkyMiw5IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
Q2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVy
Q29udGVudHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5
QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERl
dGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3
YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODc5LDYgKzE5NDMsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykKICAgICAgICAgLCBtX2ltYWdlQnVm
ZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCiAgICAgICAgICwgbV9pbWFnZUJpdG1hcHMobV9p
bWFnZUJ1ZmZlcnMuc2l6ZSgpKQorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAg
ICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXMpKQorICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNj
cmVlbkNhbnZhc2VzLnNpemUoKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0yNzE3LDYgKzI3
ODUsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoYml0bWFwKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBKU1ZhbHVlIHJlYWRPZmZz
Y3JlZW5DYW52YXMoKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIGJv
b2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7CisgICAgICAgIGlmICghaW5k
ZXhTdWNjZXNzZnVsbHlSZWFkIHx8IGluZGV4ID49IG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5k
ZXhdKQorICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5D
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQo
aW5kZXgpKSk7CisKKyAgICAgICAgYXV0byBvZmZzY3JlZW5DYW52YXMgPSBtX29mZnNjcmVlbkNh
bnZhc2VzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUob2Zmc2NyZWVu
Q2FudmFzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIEpTVmFs
dWUgcmVhZFJUQ0NlcnRpZmljYXRlKCkKICAgICB7CkBAIC0zMDU3LDYgKzMxNDMsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgSlNWYWx1ZSBjcnlwdG9LZXk7CiAgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgICAgICAgICBDbG9u
ZURlc2VyaWFsaXplciByYXdLZXlEZXNlcmlhbGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBt
X2dsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgbnVsbHB0ciwKICNlbmRpZgpAQCAt
MzA5Miw2ICszMTgxLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBJbWFnZUJp
dG1hcFRhZzoKICAgICAgICAgICAgIHJldHVybiByZWFkSW1hZ2VCaXRtYXAoKTsKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgY2FzZSBPZmZzY3JlZW5DYW52YXNUcmFuc2Zl
clRhZzoKKyAgICAgICAgICAgIHJldHVybiByZWFkT2Zmc2NyZWVuQ2FudmFzKCk7CisjZW5kaWYK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBi
YWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMzEyMSw2ICszMjE0LDEwIEBA
IHByaXZhdGU6CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBtX3NoYXJlZEJ1ZmZlcnM7
CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29s
Pj4gbV9pbWFnZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IG1faW1h
Z2VCaXRtYXBzOworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBtX29mZnNjcmVl
bkNhbnZhc2VzOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1
bGVBcnJheSogbV93YXNtTW9kdWxlczsKICNlbmRpZgpAQCAtMzMzOCw2ICszNDM1LDkgQEAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+
JiYgYnVmZmVyLCBzdGQ6OnVuaXEKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6cGFpcjxz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRy
PFdhc21Nb2R1bGVBcnJheT4gd2FzbU1vZHVsZXNBcnJheQogI2VuZGlmCkBAIC0zMzQ2LDYgKzM0
NDYsOSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0
b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9zaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSkp
CiAgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMoV1RG
TW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJy
YXkpKQogI2VuZGlmCkBAIC0zNDMzLDEyICszNTM2LDE4IEBAIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRt
YXA+PiBkdW1teUltYWdlQml0bWFwczsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1bW15T2Zmc2NyZWVuQ2FudmFzZXM7
CisjZW5kaWYKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5
QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1
bW15TW9kdWxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1teVNo
YXJlZEJ1ZmZlcnM7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUo
JmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJh
eUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
KQorICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBkdW1teU1vZHVsZXMsCiAjZW5kaWYKQEAgLTM0NTUsNiArMzU2
NCw5IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUo
YnVmZmVyKSwgYmxvYlVSTHMsIG51bGxwdHIsIG51bGxwdHIsIHsgfQorI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorICAgICAgICAsIHsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAsIG51bGxwdHIKICNlbmRpZgpAQCAtMzQ3MSwxMSArMzU4MywyOCBAQCBz
dGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJp
dG1hcD4+JiBpbWFnZUJpdG1hcHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCitzdGF0aWMgYm9vbCBvZmZzY3JlZW5DYW52YXNlc0NhbkRldGFj
aChjb25zdCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNl
cykKK3sKKyAgICBIYXNoU2V0PE9mZnNjcmVlbkNhbnZhcyo+IHZpc2l0ZWQ7CisgICAgZm9yIChh
dXRvJiBvZmZzY3JlZW5DYW52YXMgOiBvZmZzY3JlZW5DYW52YXNlcykgeworICAgICAgICBpZiAo
IW9mZnNjcmVlbkNhbnZhcy0+Y2FuRGV0YWNoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghdmlzaXRlZC5hZGQob2Zmc2NyZWVuQ2FudmFzLmdldCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYK
KwogRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJM
aXN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXph
dGlvbkNvbnRleHQgY29udGV4dCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJz
OwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBpbWFnZUJpdG1hcHM7CisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+
PiBvZmZzY3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxl
IDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlmIChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3Nz
aWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkKQEAgLTM1MDIsMTEgKzM2MzEsMjIg
QEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgaWYgKGF1dG8gb2Zm
c2NyZWVuQ2FudmFzID0gSlNPZmZzY3JlZW5DYW52YXM6OnRvV3JhcHBlZCh2bSwgdHJhbnNmZXJh
YmxlLmdldCgpKSkgeworICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMuYXBwZW5kKFdURk1v
dmUob2Zmc2NyZWVuQ2FudmFzKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
I2VuZGlmCisKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAg
ICAgfQogCiAgICAgaWYgKGNvbnRhaW5zRHVwbGljYXRlcyhpbWFnZUJpdG1hcHMpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKKyNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKKyAgICBpZiAoIW9mZnNjcmVlbkNhbnZhc2VzQ2FuRGV0YWNoKG9mZnNjcmVl
bkNhbnZhc2VzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisjZW5kaWYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVjdG9yPFN0
cmluZz4gYmxvYlVSTHM7CkBAIC0zNTE1LDYgKzM2NTUsOSBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9i
YWxPYgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pigp
OwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFw
cywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgb2Zmc2NyZWVuQ2FudmFz
ZXMsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVz
LCAKICNlbmRpZgpAQCAtMzUyOSw3ICszNjcyLDE2IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9i
CiAKICAgICBhdXRvIGltYWdlQnVmZmVycyA9IEltYWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFdU
Rk1vdmUoaW1hZ2VCaXRtYXBzKSk7CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gZGV0YWNo
ZWRDYW52YXNlczsKKyAgICBmb3IgKGF1dG8gb2Zmc2NyZWVuQ2FudmFzIDogb2Zmc2NyZWVuQ2Fu
dmFzZXMpCisgICAgICAgIGRldGFjaGVkQ2FudmFzZXMuYXBwZW5kKG9mZnNjcmVlbkNhbnZhcy0+
ZGV0YWNoKCkpOworI2VuZGlmCisKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250
ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRy
LCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICAgICAgICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRDYW52YXNlcykKKyNlbmRpZgogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1vZHVs
ZUFycmF5Pih3YXNtTW9kdWxlcykKICNlbmRpZgpAQCAtMzU4Miw3ICszNzM0LDExIEBAIEpTVmFs
dWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwKIAogSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3Nh
Z2VQb3J0cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYkZpbGVQYXRocywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBtZXNz
YWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpLCBtX2FycmF5QnVmZmVyQ29udGVudHNB
cnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZm
ZXJDb250ZW50c0FycmF5LmdldCgpCisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpCisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMpCisjZW5kaWYKKyAgICAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJh
eS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZmZXJD
b250ZW50c0FycmF5LmdldCgpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1f
d2FzbU1vZHVsZXNBcnJheS5nZXQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGE0YjlmNjZkMGU4N2QwMjEz
MjBlMzQ2OTM2MDZmMDQzZjg1M2U3NGYuLjQwNTYwMDYxMjYzYmVhNjZhNTVkZDk4ODU2NDQyODVh
YzE2N2RiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw5IEBAIGNsYXNzIE1vZHVsZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCitjbGFzcyBEZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhczsKKyNlbmRpZgogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBJbWFn
ZUJpdG1hcDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwpAQCAtMTExLDYgKzExNCw5IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9D
QU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhcz4+JiYKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBz
dGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PgogI2VuZGlmCkBAIC0xMjAsNiArMTI2LDkg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PiBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4gbV9pbWFn
ZUJ1ZmZlcnM7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+IG1fZGV0YWNoZWRPZmZzY3JlZW5D
YW52YXNlczsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmgKaW5kZXggNDI5MzQwOGViMTQ0ZmFiMDBmZGE1YjNlZWEwMDllMzU4
N2MwMGYxMC4uMTYwNDgyZmUwMDMzZTg0MjQ2YzNjM2Q5ODIyMjRlODcwZjViMzZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc09mZnNjcmVlbkNhbnZhcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsg
fQotICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS5oZWlnaHQoKTsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lk
dGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9z
aXplLmhlaWdodCgpOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDlmNzhlOGIyYmVjYjE4Yjk4OWY2Mjhk
ZTEzYzEzZWRhOTBiNmIyOTEuLjIwZTY5Yjk3NTc3OTZmYTI5MDRkOTE2YWJmYjRlYTdkMmVlZjgw
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQzLDExICs0
MywzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChPZmZzY3JlZW5DYW52YXMpOwogCitEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBvcmlnaW5DbGVhbikKKyAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9vcmlnaW5DbGVhbihvcmln
aW5DbGVhbikKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBEZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92ZSht
X2J1ZmZlcik7Cit9CisKIFJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFz
KGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zm
c2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiYmIGRldGFjaGVkQ2FudmFzKQor
eworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBPZmZzY3Jl
ZW5DYW52YXMoY29udGV4dCwgZGV0YWNoZWRDYW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hl
ZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CisgICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRl
dGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIoKSk7CisgICAgaWYgKCFkZXRhY2hlZENhbnZh
cy0+b3JpZ2luQ2xlYW4oKSkKKyAgICAgICAgY2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsKKwor
ICAgIHJldHVybiBjbG9uZTsKK30KKwogT2Zmc2NyZWVuQ2FudmFzOjpPZmZzY3JlZW5DYW52YXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCkKICAgICA6IENhbnZhc0Jhc2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKICAgICAs
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQpAQCAtNjIsMTMgKzg0LDMxIEBA
IE9mZnNjcmVlbkNhbnZhczo6fk9mZnNjcmVlbkNhbnZhcygpCiAgICAgc2V0SW1hZ2VCdWZmZXIo
bnVsbHB0cik7CiB9CiAKK3Vuc2lnbmVkIE9mZnNjcmVlbkNhbnZhczo6d2lkdGgoKSBjb25zdAor
eworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ2Fu
dmFzQmFzZTo6d2lkdGgoKTsKK30KKwordW5zaWduZWQgT2Zmc2NyZWVuQ2FudmFzOjpoZWlnaHQo
KSBjb25zdAoreworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gQ2FudmFzQmFzZTo6aGVpZ2h0KCk7Cit9CisKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpz
ZXRXaWR0aCh1bnNpZ25lZCBuZXdXaWR0aCkKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOwogICAgIHNldFNpemUoSW50U2l6ZShuZXdXaWR0aCwgaGVpZ2h0KCkpKTsKIH0K
IAogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpCiB7
CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAgICAgIHJldHVybjsKICAgICBzZXRTaXplKEludFNp
emUod2lkdGgoKSwgbmV3SGVpZ2h0KSk7CiB9CiAKQEAgLTgwLDYgKzEyMCw5IEBAIHZvaWQgT2Zm
c2NyZWVuQ2FudmFzOjpzZXRTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIEV4Y2VwdGlv
bk9yPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4
dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsK
KyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKICAgICBpZiAoY29udGV4dFR5cGUgPT0gUmVuZGVyaW5nQ29udGV4dFR5
cGU6Ol8yZCkgewogICAgICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAoIWlz
PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkpCkBAIC0xMTgs
NyArMTYxLDcgQEAgRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD4gT2Zmc2Ny
ZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWwKIAogRXhjZXB0aW9uT3I8UmVmUHRy
PEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQog
ewotICAgIGlmICghbV9jb250ZXh0KQorICAgIGlmIChtX2RldGFjaGVkIHx8ICFtX2NvbnRleHQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAg
aWYgKGlzPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkpIHsK
QEAgLTE5Miw3ICsyMzUsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJ
bWFnZUVuY29kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBwcm9t
aXNlLT5yZWplY3QoSW5kZXhTaXplRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICghYnVmZmVyKCkpIHsKKyAgICBpZiAobV9kZXRhY2hlZCB8fCAhYnVmZmVyKCkpIHsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIyNiw2ICsyNjksMjEgQEAgU2VjdXJpdHlPcmlnaW4qIE9mZnNjcmVlbkNh
bnZhczo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKK2Jvb2wgT2Zmc2NyZWVuQ2FudmFz
OjpjYW5EZXRhY2goKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZXRhY2hlZCAmJiAhbV9jb250
ZXh0OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+IE9mZnNj
cmVlbkNhbnZhczo6ZGV0YWNoKCkKK3sKKyAgICBpZiAoIWNhbkRldGFjaCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIG1fZGV0YWNoZWQgPSB0cnVlOworCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+KHRha2VJbWFnZUJ1ZmZlcigpLCBzaXpl
KCksIG9yaWdpbkNsZWFuKCkpOworfQorCiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6
Y3NzVmFsdWVQb29sKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTI0OCw3ICszMDYsOCBAQCB2b2lkIE9mZnNjcmVlbkNhbnZh
czo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKIHsKLSAgICBtX2hh
c0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CisgICAgaWYgKCFtX2RldGFjaGVkKQorICAgICAg
ICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHByaW1hcmlseSBmb3IgdXNlIHdpdGggdHJhbnNmZXJUb0ltYWdlQml0bWFwLCB3aGljaAog
ICAgIC8vIHJlcXVpcmVzIHRoYXQgdGhlIGNhbnZhcyBiaXRtYXAgcmVmZXIgdG8gYSBuZXcsIGJs
YW5rIGJpdG1hcCBvZiB0aGUgc2FtZQpAQCAtMjU3LDcgKzMxNiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAog
ICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2Nl
bGVyYXRlZCkpOworICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2RldGFjaGVkID8gbnVsbHB0
ciA6IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZv
aWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuaAppbmRleCA2NTk1Nzg5ZDVjODM0NjUyODE1NjFhM2IwNDMwYmQ1ZDJjZDYxZWU4Li42NzQ0
ZjcyZjdlZjBmN2IzNTNkMGM3Y2E0ODY5OGVjMWUyNGQxZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmgKQEAgLTU0LDYgKzU0LDIyIEBAIHVzaW5nIE9mZnNjcmVlblJlbmRl
cmluZ0NvbnRleHQgPSBWYXJpYW50PFJlZlB0cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0CiB1c2luZyBPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0ID0gVmFyaWFudDxSZWZQdHI8T2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPj47CiAjZW5kaWYKIAorY2xhc3MgRGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldGFjaGVkT2Zm
c2NyZWVuQ2FudmFzKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYs
IGNvbnN0IEludFNpemUmLCBib29sIG9yaWdpbkNsZWFuKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gdGFrZUltYWdlQnVmZmVyKCk7CisgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBib29s
IG1fb3JpZ2luQ2xlYW47Cit9OworCiBjbGFzcyBPZmZzY3JlZW5DYW52YXMgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxPZmZzY3JlZW5DYW52YXM+LCBwdWJsaWMgQ2FudmFzQmFzZSwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2Zmc2NyZWVuQ2FudmFzKTsKIHB1
YmxpYzoKQEAgLTY5LDggKzg1LDExIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFJl
ZjxPZmZzY3JlZW5DYW52YXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisgICAgc3RhdGljIFJlZjxPZmZzY3JlZW5DYW52
YXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRyPERldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzPiYmKTsKICAgICB2aXJ0dWFsIH5PZmZzY3JlZW5DYW52YXMoKTsK
IAorICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgaGVpZ2h0
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBz
ZXRIZWlnaHQodW5zaWduZWQpOwogCkBAIC04OCw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYXNDcmVh
dGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBjYW5EZXRhY2goKSBjb25zdDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+IGRldGFjaCgpOworCiAgICAgQ1NTVmFs
dWVQb29sJiBjc3NWYWx1ZVBvb2woKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKQEAg
LTExOSw2ICsxNDIsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gbV9oYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIgbWVhbnMgd2UgdHJpZWQgdG8gbWFsbG9jIHRoZSBidWZmZXIuIFdlIGRpZG4ndCBuZWNlc3Nh
cmlseSBnZXQgaXQuCiAgICAgbXV0YWJsZSBib29sIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyIHsg
ZmFsc2UgfTsKKworICAgIGJvb2wgbV9kZXRhY2hlZCB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkODE1NDQyYThjNmM4MThjNjA5MWY1OTMyN2Vh
MTQ5YjkwMWQ5YmE0Li5iZGVjNWQ2N2Q1NmNiMmEzODkxODYyM2M5MTFlODgyYWJlYjNkMzc0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0xMC0x
MCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFtU
cmFuc2ZlcmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8u
YmxvYi1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iu
dy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1v
ZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52
YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdl
Yml0bWFwLnctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zl
cnJhYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJy
YWJsZS53LWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMS0yNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGln
YWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1
bWVDb2xvciBzYWZlIHRvIHVzZSB3aXRoaW4gYSB3b3JrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252
ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2ItZXhw
ZWN0ZWQudHh0CmluZGV4IDhmZDllYTk2NTBmZmVhNzhmYWVkZDRlOGM3YzUyODIwNjk4NTdiOTgu
LjJmZWRkZDI4OGJjYWE1NDliZDQ2Nzc4ODJlYTVhM2M4YWUxYzE1OGIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50
by5ibG9iLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgUEFTUyBUZXN0IHRoYXQgY29udmVy
dFRvQmxvYiB3aXRoIGRlZmF1bHQgdHlwZSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdAogUEFTUyBU
ZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHBuZyBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCAK
IFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBqcGdlIHByb2R1Y2VzIGNvcnJlY3Qg
cmVzdWx0IAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdlYnAgcHJvZHVjZXMg
Y29ycmVjdCByZXN1bHQgCi1GQUlMIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBk
ZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBu
b3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0
YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gCiBQQVNTIFRlc3QgdGhhdCBj
YWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5DYW52YXMgd2l0aCBzaXplIDAgdGhyb3dz
IGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNj
cmVlbkNhbnZhcyB3aXRoIHRhaW50ZWQgb3JpZ2luIHRocm93cyBleGNlcHRpb24gCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxv
Yi53LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNv
bnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dAppbmRleCBhOTZjMWI0NTg1NDQ1YjFmNmYxMmVi
YTM1YTA3YzAwN2JmNmM2YWQ0Li4yOWE5OGMxYzEwODM2MzNjZTdlOGJmMWE0MmI1Y2RhZTRhNGI2
ZDMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252
ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZz
Y3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNCBA
QAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IERhdGFDbG9uZUVycm9yOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9i
IHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3Jr
ZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBlLzEuMCBx
dWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRo
YXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1bHQgdHlwZS8wLjIgcXVhbGl0eSBwcm9kdWNlcyBj
b3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKQEAgLTEzLDcgKzExLDcgQEAgUEFTUyBUZXN0IHRo
YXQgY29udmVydFRvQmxvYiB3aXRoIGpwZWcvMC4yIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCBy
ZXN1bHQgaW4gYQogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdlYnAvZGVmYXVs
dCBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0
IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdlYnAvMS4wIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVj
dCByZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgg
d2VicC8wLjIgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKLUZB
SUwgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNh
bnZhcyB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IGVycm9y
IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9C
bG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3
b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5D
YW52YXMgd2l0aCBzaXplIDAgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciAKIFBBU1MgVGVz
dCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHRhaW50
ZWQgb3JpZ2luIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIgCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy5o
dG1sCmluZGV4IDFjNjlkNGQyNjM2MWY3ZDExN2E5YzgzZTlhNDU3ZWI1ZjBmMDc4ZGIuLjliMDhj
Yzg2MjU3ZmYwZTUyMjBjMjNlM2E3NmZmYjhhNGQ3ZDhmYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252
ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLncuaHRt
bApAQCAtMzAwLDYgKzMwMCw4IEBAIGFzeW5jX3Rlc3QoZnVuY3Rpb24odCkgewogYXN5bmNfdGVz
dChmdW5jdGlvbih0KSB7CiAgICAgdmFyIHdvcmtlciA9IG1ha2VXb3JrZXIodCk7CiAgICAgd29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9u
KG1zZykgeworICAgICAgICBpZiAobXNnLmRhdGEgaW5zdGFuY2VvZiBPYmplY3QpCisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGFzc2VydF90cnVlKG1zZy5kYXRhKTsKICAgICAgICAgdC5k
b25lKCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0
bWFwLWV4cGVjdGVkLnR4dAppbmRleCBmZTFlOTBlN2IzYWViZDcwOGNlNjBkMmIzZTk4NDJkODA0
NWRiZjk4Li41NmUxZDdlNjY5YjliMjI3YmEwMTVhMmY3MTU3ZjQwYjU1MmNjY2Q5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRv
LmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMv
b2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dApAQCAt
Myw2ICszLDYgQEAgUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJldHVybnMg
YW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IHdpZHRoIGEKIEZBSUwgVGVzdCB0aGF0IHRyYW5z
ZmVyVG9JbWFnZUJpdG1hcCByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xv
ciBhc3NlcnRfZXF1YWxzOiBBbHBoYSBjaGFubmVsIG9mIHRoZSBwaXhlbCBhdCAoNTAsIDI1KSBl
eHBlY3RlZCAyNTUgYnV0IGdvdCAwCiBQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRt
YXAgd29uJ3QgY2hhbmdlIGNvbnRleHQncyBwcm9wZXJ0eSAKIEZBSUwgVGVzdCB0aGF0IHRyYW5z
ZmVyVG9JbWFnZUJpdG1hcCBwcmVzZXJ2ZXMgdHJhbnNmb3JtIGFzc2VydF9lcXVhbHM6IEdyZWVu
IGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICgyMywgMjUpIGV4cGVjdGVkIDI1NSBidXQgZ290IDAK
LUZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIG9uIGEgZGV0YWNoZWQg
T2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gVGhlIG9iamVjdCBjYW4gbm90IGJl
IGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIG9uIGEg
ZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gCiBQQVNTIFRlc3Qg
dGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd2l0aG91dCBhIGNvbnRleHQgdGhyb3dzIGFuIGV4
Y2VwdGlvbiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVl
bmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUt
b2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAu
dy1leHBlY3RlZC50eHQKaW5kZXggMzQyZDNjZjJhN2E2NTUxNGZhYTZlODk5MzZmYzU3ZTAyMTUx
NDIyMC4uMTNhMDNlYjA3ODJmYjdhMzZhOWZmNDkyYzAwNWNhOTA2MTQ5YmY4NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5p
bWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMv
b2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0CkBA
IC0xLDEyICsxLDEwIEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNs
b25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KIFBBU1MgVGVzdCB0aGF0
IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdpdGggY29ycmVj
dCB3aWR0aCBhbmQgaGVpZ2h0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJU
b0ltYWdlQml0bWFwIHJldHVybnMgYW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9yIGlu
IGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgdHdp
Y2UgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3QgY29sb3IgaW4gYSB3b3JrZXIg
CiBGQUlMIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB0d2ljZSBvbiBhIGFs
cGhhLWRpc2FibGVkIGNvbnRleHQgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3Qg
Y29sb3IgaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFsczogcHJvcGVydHkgMywgZXhwZWN0
ZWQgMjU1IGJ1dCBnb3QgMAogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHdv
bid0IGNoYW5nZSBjb250ZXh0J3MgcHJvcGVydHkgaW4gYSB3b3JrZXIgCiBGQUlMIFRlc3QgdGhh
dCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBwcmVzZXJ2ZXMgdHJhbnNmb3JtIGluIGEgd29y
a2VyIGFzc2VydF9hcnJheV9lcXVhbHM6IHByb3BlcnR5IDEsIGV4cGVjdGVkIDI1NSBidXQgZ290
IDAKLUZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIG9uIGEgZGV0YWNo
ZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gaW4gYSB3b3JrZXIgYXNzZXJ0
X3VucmVhY2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQQVNTIFRlc3QgdGhh
dCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZh
cyB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY2FsbCB0
cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd2l0aG91dCBhIGNvbnRleHQgdGhyb3dzIGFuIGV4Y2VwdGlv
biBpbiBhIHdvcmtlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2Ny
ZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQKaW5k
ZXggZDIzMjY1YjAyOWVkYmIwNmViZGYxNTIxZDE5NzVjYzY4NTAzOGRjNC4uNmExYmViMGFiNWI3
MGZiMTRhNTkxYzBlYmQ3OTY5NWZjYzIxMDEyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3Jl
ZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsNyBAQAogCi1GQUlMIFRlc3QgdGhhdCBvZmZzY3JlZW5D
YW52YXMncyBzaXplIGlzIGNvcnJlY3QgYWZ0ZXIgYmVpbmcgdHJhbnNmZXJyZWQgdG8gYSB3b3Jr
ZXIuIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2Zl
ciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0IHRocm93cyBleGNlcHRpb24u
IGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2Uoe29mZnNjcmVlbkNhbnZhc30sIFtvZmZzY3JlZW5DYW52YXNdKTsKLSAg
ICAgICAgfSIgdGhyZXcgb2JqZWN0ICJEYXRhQ2xvbmVFcnJvcjogVGhlIG9iamVjdCBjYW4gbm90
IGJlIGNsb25lZC4iIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9y
OiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gMjUsIGV4cGVjdGVkIDExCi1GQUlMIFRlc3Qg
dGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdHdpY2UgdGhyb3dzIGV4Y2VwdGlvbi4g
VGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KLUZBSUwgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0
Q29udGV4dCgnMmQnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0
aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotRkFJTCBUZXN0IHRoYXQgY2FsbGlu
ZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93
cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCitQQVNTIFRlc3QgdGhh
dCBvZmZzY3JlZW5DYW52YXMncyBzaXplIGlzIGNvcnJlY3QgYWZ0ZXIgYmVpbmcgdHJhbnNmZXJy
ZWQgdG8gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2Fu
dmFzIHRoYXQgaGFzIGEgY29udGV4dCB0aHJvd3MgZXhjZXB0aW9uLiAKK1BBU1MgVGVzdCB0aGF0
IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0d2ljZSB0aHJvd3MgZXhjZXB0aW9uLiAKK1BB
U1MgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgnMmQnKSBvbiBhIGRldGFjaGVkIE9mZnNj
cmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uLiAKK1BBU1MgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0
Q29udGV4dCgnd2ViZ2wnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhj
ZXB0aW9uLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVl
bmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4t
Y2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0CmluZGV4
IDY0ZDc5NWEwYzM4MzA4ODUyMzM2N2VkMTFhZjc2MjZmMDU1Njg3NTguLjUyN2Q4NjFmOGNmN2Ex
NDExYjU4Mjk5NTM3NjAxODk3OGQyMTIxZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVu
LWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUu
dy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsOCBAQAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwg
bWVzc2FnZSA9IERhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgot
Ci1GQUlMIFRlc3QgdGhhdCBPZmZzY3JlZW5DYW52YXMncyBzaXplIGlzIGNvcnJlY3QgYWZ0ZXIg
YmVpbmcgdHJhbnNmZXJyZWQgZnJvbSBhIHdvcmtlci4gYXNzZXJ0X3VucmVhY2hlZDogZXJyb3Ig
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZz
Y3JlZW5DYW52YXMgdGhhdCBoYXMgYSAyZCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3
b3JrZXIuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IHRo
YXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgd2ViZ2wgY29udGV4dCB0
aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRfdHJ1ZTogZXhwZWN0ZWQgdHJ1ZSBn
b3QgZmFsc2UKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0d2lj
ZSB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBS
ZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4
dCgnMmQnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIGlu
IGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKLUZBSUwgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgnd2ViZ2wnKSBvbiBhIGRldGFj
aGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRf
dW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0
IE9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJl
ZCBmcm9tIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNh
bnZhcyB0aGF0IGhhcyBhIDJkIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4g
CitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSB3
ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRo
YXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24gaW4g
YSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEg
ZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIAor
UEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQg
T2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388978</attachid>
            <date>2020-01-28 03:00:16 -0800</date>
            <delta_ts>2020-01-28 08:54:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20200128110015.patch</filename>
            <type>text/plain</type>
            <size>39984</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlNzQxY2Q2NjgxNzRi
OTAyYmQxNTk2YzdjNWU1MWE2NmYxNjYzMC4uZTU5MjVmNjRkZjkzZDFmNDg1ODBmZDQ1NGRmYTk1
ZDA0YmQ1MDBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6b2Zmc2NyZWVuQ2FudmFzZXNDYW5EZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICog
aHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp3aWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnNldEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAp
OgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKwogMjAxOS0xMC0wNCAgQ2hyaXMgTG9yZCAgPGNs
b3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuZCBjYW5j
ZWxBbmltYXRpb25GcmFtZSBzaG91bGQgYmUgcHJlc2VudCBvbiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggNjg3NGQ1ZGFjZTc3ODM3YmVjZmNiZjQ0MTQ1ZjNjOWFlMWMz
MjVhZS4uMDk5OTVkZGIyMjNiMzQ4ZTk3YzZhMjcxODc1ZjAyYjlhMTE3ZmYzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC04Nyw2ICs4NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisjaW5jbHVkZSAi
SlNPZmZzY3JlZW5DYW52YXMuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKKyNlbmRp
ZgorCiAjaWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVF
RFNfQUxJR05FRF9BQ0NFU1MpCiAjZGVmaW5lIEFTU1VNRV9MSVRUTEVfRU5ESUFOIDAKICNlbHNl
CkBAIC0xNjksNiArMTc0LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBSVENDZXJ0
aWZpY2F0ZVRhZyA9IDQ0LAogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBUYWcgPSA0NSwKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPZmZzY3JlZW5DYW52YXNUcmFuc2ZlclRhZyA9
IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1Miw2ICszNjAsNyBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgwMDAwMDAw
OwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAg
IHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdpbkNsZWFu
OnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50MzJfdD4g
PHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1hZ2VCeXRl
RGF0YTp1aW50OF90PikKKyAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJUYWcgPHZhbHVl
OnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVk
IGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTU0OSwxMiArNTU4LDE4IEBAIHRl
bXBsYXRlIDw+IGJvb2wgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4oVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIsIGNvbnN0IHVpbnQ4CiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9uZUJhc2Ug
ewogcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJpYWxpemUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0
bWFwPj4mIGltYWdlQml0bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNh
bnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2Fz
bU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICNlbmRpZgogICAgICAgICBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBj
b250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewog
ICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBt
ZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCisjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywKICNlbmRpZgpA
QCAtNTgyLDYgKzU5Nyw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0
KiwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAKICAgICBDbG9uZVNlcmlhbGl6ZXIoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYg
bWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZm
ZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxl
cywKICNlbmRpZgpAQCAtNjAwLDYgKzYxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGZpbGxUcmFu
c2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMpOwogICAgICAg
ICBmaWxsVHJhbnNmZXJNYXAoYXJyYXlCdWZmZXJzLCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJz
KTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGltYWdlQml0bWFwcywgbV90cmFuc2ZlcnJlZElt
YWdlQml0bWFwcyk7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgIGZpbGxU
cmFuc2Zlck1hcChvZmZzY3JlZW5DYW52YXNlcywgbV90cmFuc2ZlcnJlZE9mZnNjcmVlbkNhbnZh
c2VzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgpAQCAtOTQ0LDYg
Kzk2NSwyMCBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIHZvaWQgZHVtcE9mZnNj
cmVlbkNhbnZhcyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkK
KyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkT2Zmc2NyZWVuQ2FudmFz
ZXMuZmluZChvYmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZE9mZnNjcmVl
bkNhbnZhc2VzLmVuZCgpKSB7CisgICAgICAgICAgICB3cml0ZShPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZyk7CisgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgZHVtcElmVGVy
bWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCiAgICAg
ewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMDk1LDYgKzExMzAsOSBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5
IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgcmF3
S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBk
dW1teUFycmF5QnVmZmVycywgeyB9LAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAg
ICAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKICNlbmRpZgpAQCAtMTE1NCw2ICsxMTky
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZHVtcEltYWdlQml0bWFwKG9iaiwgY29k
ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cyh2bSwg
SlNPZmZzY3JlZW5DYW52YXM6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBkdW1wT2Zmc2Ny
ZWVuQ2FudmFzKG9iaiwgY29kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlhbGl6ZSBhcyBu
dWxsLgpAQCAtMTUwMSw2ICsxNTQ1LDkgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQb29sIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlC
dWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFwczsKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRPZmZz
Y3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmluZ0NvbnN0YW50
UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAgICAgSWRlbnRp
ZmllciBtX2VtcHR5SWRlbnRpZmllcjsKQEAgLTE3ODAsNyArMTgyNywxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0gICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJl
c3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkq
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxv
YkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzCisgICAg
c3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBh
aXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisj
aWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cworI2VuZGlmCisgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMs
IEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzCiAjZW5kaWYK
QEAgLTE3ODksNiArMTg0MCw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAgICAgIENsb25lRGVzZXJpYWxp
emVyIGRlc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3Nh
Z2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBibG9i
RmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZE9mZnNj
cmVlbkNhbnZhc2VzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAg
ICAgLCB3YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODM5LDYgKzE4OTMsOSBAQCBwcml2YXRlOgog
ICAgIH07CiAKICAgICBDbG9uZURlc2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSogYXJyYXlCdWZmZXJDb250ZW50cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMsCisjaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVMpCisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMsCisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMsCiAj
ZW5kaWYKQEAgLTE4NTQsNiArMTkxMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fYXJyYXlC
dWZmZXJzKGFycmF5QnVmZmVyQ29udGVudHMgPyBhcnJheUJ1ZmZlckNvbnRlbnRzLT5zaXplKCkg
OiAwKQogICAgICAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKICAg
ICAgICAgLCBtX2ltYWdlQml0bWFwcyhtX2ltYWdlQnVmZmVycy5zaXplKCkpCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
KFdURk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykpCisgICAgICAgICwgbV9vZmZzY3Jl
ZW5DYW52YXNlcyhtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgpKQorI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVs
ZXMpCiAjZW5kaWYKQEAgLTE4NjMsNiArMTkyNCw5IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
Q2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVy
Q29udGVudHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5
QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERl
dGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisjZW5k
aWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3
YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODgxLDYgKzE5NDUsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgLCBtX3NoYXJlZEJ1ZmZlcnMoc2hhcmVkQnVmZmVycykKICAgICAgICAgLCBtX2ltYWdlQnVm
ZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCiAgICAgICAgICwgbV9pbWFnZUJpdG1hcHMobV9p
bWFnZUJ1ZmZlcnMuc2l6ZSgpKQorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAg
ICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXMpKQorICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNj
cmVlbkNhbnZhc2VzLnNpemUoKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0yNzE5LDYgKzI3
ODcsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoYml0bWFwKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBKU1ZhbHVlIHJlYWRPZmZz
Y3JlZW5DYW52YXMoKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIGJv
b2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7CisgICAgICAgIGlmICghaW5k
ZXhTdWNjZXNzZnVsbHlSZWFkIHx8IGluZGV4ID49IG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNl
cy5zaXplKCkpIHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5k
ZXhdKQorICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5D
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQo
aW5kZXgpKSk7CisKKyAgICAgICAgYXV0byBvZmZzY3JlZW5DYW52YXMgPSBtX29mZnNjcmVlbkNh
bnZhc2VzW2luZGV4XS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUob2Zmc2NyZWVu
Q2FudmFzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIEpTVmFs
dWUgcmVhZFJUQ0NlcnRpZmljYXRlKCkKICAgICB7CkBAIC0zMDU5LDYgKzMxNDUsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgSlNWYWx1ZSBjcnlwdG9LZXk7CiAgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CiAgICAgICAgICAgICBDbG9u
ZURlc2VyaWFsaXplciByYXdLZXlEZXNlcmlhbGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBt
X2dsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgbnVsbHB0ciwKICNlbmRpZgpAQCAt
MzA5NCw2ICszMTgzLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBJbWFnZUJp
dG1hcFRhZzoKICAgICAgICAgICAgIHJldHVybiByZWFkSW1hZ2VCaXRtYXAoKTsKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgY2FzZSBPZmZzY3JlZW5DYW52YXNUcmFuc2Zl
clRhZzoKKyAgICAgICAgICAgIHJldHVybiByZWFkT2Zmc2NyZWVuQ2FudmFzKCk7CisjZW5kaWYK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBi
YWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMzEyMyw2ICszMjE2LDEwIEBA
IHByaXZhdGU6CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBtX3NoYXJlZEJ1ZmZlcnM7
CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29s
Pj4gbV9pbWFnZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IG1faW1h
Z2VCaXRtYXBzOworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBtX29mZnNjcmVl
bkNhbnZhc2VzOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1
bGVBcnJheSogbV93YXNtTW9kdWxlczsKICNlbmRpZgpAQCAtMzM0MCw2ICszNDM3LDkgQEAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+
JiYgYnVmZmVyLCBzdGQ6OnVuaXEKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6cGFpcjxz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRy
PFdhc21Nb2R1bGVBcnJheT4gd2FzbU1vZHVsZXNBcnJheQogI2VuZGlmCkBAIC0zMzQ4LDYgKzM0
NDgsOSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0
b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9zaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSkp
CiAgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMoV1RG
TW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVzQXJy
YXkpKQogI2VuZGlmCkBAIC0zNDM1LDEyICszNTM4LDE4IEBAIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRt
YXA+PiBkdW1teUltYWdlQml0bWFwczsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1bW15T2Zmc2NyZWVuQ2FudmFzZXM7
CisjZW5kaWYKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5
QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IGR1
bW15TW9kdWxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1teVNo
YXJlZEJ1ZmZlcnM7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUo
JmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJh
eUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
KQorICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBkdW1teU1vZHVsZXMsCiAjZW5kaWYKQEAgLTM0NTcsNiArMzU2
Niw5IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUo
YnVmZmVyKSwgYmxvYlVSTHMsIG51bGxwdHIsIG51bGxwdHIsIHsgfQorI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorICAgICAgICAsIHsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAsIG51bGxwdHIKICNlbmRpZgpAQCAtMzQ3MywxMSArMzU4NSwyOCBAQCBz
dGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJp
dG1hcD4+JiBpbWFnZUJpdG1hcHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCitzdGF0aWMgYm9vbCBvZmZzY3JlZW5DYW52YXNlc0NhbkRldGFj
aChjb25zdCBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNl
cykKK3sKKyAgICBIYXNoU2V0PE9mZnNjcmVlbkNhbnZhcyo+IHZpc2l0ZWQ7CisgICAgZm9yIChh
dXRvJiBvZmZzY3JlZW5DYW52YXMgOiBvZmZzY3JlZW5DYW52YXNlcykgeworICAgICAgICBpZiAo
IW9mZnNjcmVlbkNhbnZhcy0+Y2FuRGV0YWNoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghdmlzaXRlZC5hZGQob2Zmc2NyZWVuQ2FudmFzLmdldCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYK
KwogRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJM
aXN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXph
dGlvbkNvbnRleHQgY29udGV4dCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJz
OwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBpbWFnZUJpdG1hcHM7CisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+
PiBvZmZzY3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxl
IDogdHJhbnNmZXJMaXN0KSB7CiAgICAgICAgIGlmIChhdXRvIGFycmF5QnVmZmVyID0gdG9Qb3Nz
aWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkKQEAgLTM1MDQsMTEgKzM2MzMsMjIg
QEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgaWYgKGF1dG8gb2Zm
c2NyZWVuQ2FudmFzID0gSlNPZmZzY3JlZW5DYW52YXM6OnRvV3JhcHBlZCh2bSwgdHJhbnNmZXJh
YmxlLmdldCgpKSkgeworICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMuYXBwZW5kKFdURk1v
dmUob2Zmc2NyZWVuQ2FudmFzKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
I2VuZGlmCisKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAg
ICAgfQogCiAgICAgaWYgKGNvbnRhaW5zRHVwbGljYXRlcyhpbWFnZUJpdG1hcHMpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKKyNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKKyAgICBpZiAoIW9mZnNjcmVlbkNhbnZhc2VzQ2FuRGV0YWNoKG9mZnNjcmVl
bkNhbnZhc2VzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisjZW5kaWYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVjdG9yPFN0
cmluZz4gYmxvYlVSTHM7CkBAIC0zNTE3LDYgKzM2NTcsOSBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9i
YWxPYgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pigp
OwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFw
cywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgb2Zmc2NyZWVuQ2FudmFz
ZXMsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVz
LCAKICNlbmRpZgpAQCAtMzUzMSw3ICszNjc0LDE2IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9i
CiAKICAgICBhdXRvIGltYWdlQnVmZmVycyA9IEltYWdlQml0bWFwOjpkZXRhY2hCaXRtYXBzKFdU
Rk1vdmUoaW1hZ2VCaXRtYXBzKSk7CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gZGV0YWNo
ZWRDYW52YXNlczsKKyAgICBmb3IgKGF1dG8gb2Zmc2NyZWVuQ2FudmFzIDogb2Zmc2NyZWVuQ2Fu
dmFzZXMpCisgICAgICAgIGRldGFjaGVkQ2FudmFzZXMuYXBwZW5kKG9mZnNjcmVlbkNhbnZhcy0+
ZGV0YWNoKCkpOworI2VuZGlmCisKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250
ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRy
LCBXVEZNb3ZlKGltYWdlQnVmZmVycykKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAg
ICAgICAgICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRDYW52YXNlcykKKyNlbmRpZgogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1vZHVs
ZUFycmF5Pih3YXNtTW9kdWxlcykKICNlbmRpZgpAQCAtMzU4NCw3ICszNzM2LDExIEBAIEpTVmFs
dWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwKIAogSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3Nh
Z2VQb3J0cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYkZpbGVQYXRocywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCiB7Ci0gICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBtZXNz
YWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpLCBtX2FycmF5QnVmZmVyQ29udGVudHNB
cnJheS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZm
ZXJDb250ZW50c0FycmF5LmdldCgpCisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIFdURk1vdmUobV9pbWFnZUJ1ZmZlcnMpCisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMpCisjZW5kaWYKKyAgICAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJh
eS5nZXQoKSwgbV9kYXRhLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocywgbV9zaGFyZWRCdWZmZXJD
b250ZW50c0FycmF5LmdldCgpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIG1f
d2FzbU1vZHVsZXNBcnJheS5nZXQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGUyODhmMjk0ZTlmMjk3Yjc2
MmZmYzI1ODYxNTJiNTBlNTZmYzM3ZmYuLjdmNTc5NTc4OTliYTIxMjMyMzE0NDBhNWY5Yjk2NmRh
NTU1YzI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw5IEBAIGNsYXNzIE1vZHVsZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCitjbGFzcyBEZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhczsKKyNlbmRpZgogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBJbWFn
ZUJpdG1hcDsKIGNsYXNzIE1lc3NhZ2VQb3J0OwpAQCAtMTEzLDYgKzExNiw5IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9D
QU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhcz4+JiYKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBz
dGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PgogI2VuZGlmCkBAIC0xMjIsNiArMTI4LDkg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PiBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4gbV9pbWFn
ZUJ1ZmZlcnM7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+IG1fZGV0YWNoZWRPZmZzY3JlZW5D
YW52YXNlczsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2FzbU1vZHVsZUFycmF5PiBtX3dhc21Nb2R1bGVzQXJyYXk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmgKaW5kZXggZDIwNWZlODE4ODAyYzY4ZDFhNjU1ODcyMDBjMTcxOTk3
Njk0ZGIxMS4uMGRhNmU4YjYyZWQ4MGI5NTM4NDc3Mjc1MGZhNDQ5MWZiM2FjMGFkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmgKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc09mZnNjcmVlbkNhbnZhcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsg
fQotICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS5oZWlnaHQoKTsg
fQorICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lk
dGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9z
aXplLmhlaWdodCgpOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDc1NWYxMWVmODllMTE4MWJlMDZkNWVh
MmYwMDc4Njk2ZTM5YmU0ZDEuLjk4NTcxMTBhYTllZTc3NGFhODFhNGViYzA1OGMyOWE1NGY4OWI3
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQzLDExICs0
MywzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChPZmZzY3JlZW5DYW52YXMpOwogCitEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBvcmlnaW5DbGVhbikKKyAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9vcmlnaW5DbGVhbihvcmln
aW5DbGVhbikKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBEZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gV1RGTW92ZSht
X2J1ZmZlcik7Cit9CisKIFJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFz
KGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zm
c2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiYmIGRldGFjaGVkQ2FudmFzKQor
eworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBPZmZzY3Jl
ZW5DYW52YXMoY29udGV4dCwgZGV0YWNoZWRDYW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hl
ZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CisgICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRl
dGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIoKSk7CisgICAgaWYgKCFkZXRhY2hlZENhbnZh
cy0+b3JpZ2luQ2xlYW4oKSkKKyAgICAgICAgY2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsKKwor
ICAgIHJldHVybiBjbG9uZTsKK30KKwogT2Zmc2NyZWVuQ2FudmFzOjpPZmZzY3JlZW5DYW52YXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCkKICAgICA6IENhbnZhc0Jhc2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKICAgICAs
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQpAQCAtNjIsMTMgKzg0LDMxIEBA
IE9mZnNjcmVlbkNhbnZhczo6fk9mZnNjcmVlbkNhbnZhcygpCiAgICAgc2V0SW1hZ2VCdWZmZXIo
bnVsbHB0cik7CiB9CiAKK3Vuc2lnbmVkIE9mZnNjcmVlbkNhbnZhczo6d2lkdGgoKSBjb25zdAor
eworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ2Fu
dmFzQmFzZTo6d2lkdGgoKTsKK30KKwordW5zaWduZWQgT2Zmc2NyZWVuQ2FudmFzOjpoZWlnaHQo
KSBjb25zdAoreworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gQ2FudmFzQmFzZTo6aGVpZ2h0KCk7Cit9CisKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpz
ZXRXaWR0aCh1bnNpZ25lZCBuZXdXaWR0aCkKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOwogICAgIHNldFNpemUoSW50U2l6ZShuZXdXaWR0aCwgaGVpZ2h0KCkpKTsKIH0K
IAogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpCiB7
CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAgICAgIHJldHVybjsKICAgICBzZXRTaXplKEludFNp
emUod2lkdGgoKSwgbmV3SGVpZ2h0KSk7CiB9CiAKQEAgLTgwLDYgKzEyMCw5IEBAIHZvaWQgT2Zm
c2NyZWVuQ2FudmFzOjpzZXRTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIEV4Y2VwdGlv
bk9yPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgUmVuZGVyaW5nQ29udGV4dFR5cGUgY29udGV4
dFR5cGUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiYmIGFyZ3VtZW50cykKIHsK
KyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKICAgICBpZiAoY29udGV4dFR5cGUgPT0gUmVuZGVyaW5nQ29udGV4dFR5
cGU6Ol8yZCkgewogICAgICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAoIWlz
PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkpCkBAIC0xMTgs
NyArMTYxLDcgQEAgRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD4gT2Zmc2Ny
ZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWwKIAogRXhjZXB0aW9uT3I8UmVmUHRy
PEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQog
ewotICAgIGlmICghbV9jb250ZXh0KQorICAgIGlmIChtX2RldGFjaGVkIHx8ICFtX2NvbnRleHQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAg
aWYgKGlzPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkpIHsK
QEAgLTE5Miw3ICsyMzUsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29udmVydFRvQmxvYihJ
bWFnZUVuY29kZU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcgogICAgICAgICBwcm9t
aXNlLT5yZWplY3QoSW5kZXhTaXplRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICghYnVmZmVyKCkpIHsKKyAgICBpZiAobV9kZXRhY2hlZCB8fCAhYnVmZmVyKCkpIHsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIyNiw2ICsyNjksMjEgQEAgU2VjdXJpdHlPcmlnaW4qIE9mZnNjcmVlbkNh
bnZhczo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKK2Jvb2wgT2Zmc2NyZWVuQ2FudmFz
OjpjYW5EZXRhY2goKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZXRhY2hlZCAmJiAhbV9jb250
ZXh0OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+IE9mZnNj
cmVlbkNhbnZhczo6ZGV0YWNoKCkKK3sKKyAgICBpZiAoIWNhbkRldGFjaCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIG1fZGV0YWNoZWQgPSB0cnVlOworCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+KHRha2VJbWFnZUJ1ZmZlcigpLCBzaXpl
KCksIG9yaWdpbkNsZWFuKCkpOworfQorCiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6
Y3NzVmFsdWVQb29sKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTI0OCw3ICszMDYsOCBAQCB2b2lkIE9mZnNjcmVlbkNhbnZh
czo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKIHsKLSAgICBtX2hh
c0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CisgICAgaWYgKCFtX2RldGFjaGVkKQorICAgICAg
ICBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHByaW1hcmlseSBmb3IgdXNlIHdpdGggdHJhbnNmZXJUb0ltYWdlQml0bWFwLCB3aGljaAog
ICAgIC8vIHJlcXVpcmVzIHRoYXQgdGhlIGNhbnZhcyBiaXRtYXAgcmVmZXIgdG8gYSBuZXcsIGJs
YW5rIGJpdG1hcCBvZiB0aGUgc2FtZQpAQCAtMjU3LDcgKzMxNiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAog
ICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2Rl
dGFjaGVkID8gbnVsbHB0ciA6IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA2NTk1Nzg5ZDVjODM0NjUy
ODE1NjFhM2IwNDMwYmQ1ZDJjZDYxZWU4Li42NzQ0ZjcyZjdlZjBmN2IzNTNkMGM3Y2E0ODY5OGVj
MWUyNGQxZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKQEAgLTU0LDYg
KzU0LDIyIEBAIHVzaW5nIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQgPSBWYXJpYW50PFJlZlB0
cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0CiB1c2luZyBPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0ID0gVmFyaWFudDxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPj47CiAjZW5kaWYKIAorY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyhz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYsIGNvbnN0IEludFNpemUmLCBib29sIG9yaWdp
bkNsZWFuKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGFrZUltYWdlQnVm
ZmVyKCk7CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQorICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9
CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBib29sIG1fb3JpZ2luQ2xlYW47Cit9OworCiBjbGFz
cyBPZmZzY3JlZW5DYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxPZmZzY3JlZW5DYW52
YXM+LCBwdWJsaWMgQ2FudmFzQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoT2Zmc2NyZWVuQ2FudmFzKTsKIHB1YmxpYzoKQEAgLTY5LDggKzg1LDExIEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7
CisgICAgc3RhdGljIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiYmKTsKICAg
ICB2aXJ0dWFsIH5PZmZzY3JlZW5DYW52YXMoKTsKIAorICAgIHVuc2lnbmVkIHdpZHRoKCkgY29u
c3QgZmluYWw7CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQpOwogCkBAIC04
OCw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBj
YW5EZXRhY2goKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5D
YW52YXM+IGRldGFjaCgpOworCiAgICAgQ1NTVmFsdWVQb29sJiBjc3NWYWx1ZVBvb2woKTsKIAog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKQEAgLTExOSw2ICsxNDIsOCBAQCBwcml2YXRlOgog
CiAgICAgLy8gbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgbWVhbnMgd2UgdHJpZWQgdG8gbWFsbG9j
IHRoZSBidWZmZXIuIFdlIGRpZG4ndCBuZWNlc3NhcmlseSBnZXQgaXQuCiAgICAgbXV0YWJsZSBi
b29sIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV9kZXRh
Y2hlZCB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCA5NzAyYWQ3OGQwMjUwZWY5MTBlMDIxNDMyMjAyNjk5MTA1OGY1OWMwLi45NmU0YmNhNjg3NzU0
YmRjMzVjNDI5ZDQ3NjgyZjA2Y2FmYjBhNmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0xMC0xMCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxp
YS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFtUcmFuc2ZlcmFibGVdIHByb3BlcnR5IG9mIE9m
ZnNjcmVlbkNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAyNTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJs
b2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29m
ZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNj
cmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNh
bnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zm
c2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4t
Y2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNh
bnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dDoKKwogMjAx
OS0xMS0yNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVDb2xvciBzYWZlIHRvIHVzZSB3aXRoaW4g
YSB3b3JrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFz
LmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNj
cmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2ItZXhwZWN0ZWQudHh0CmluZGV4IDhmZDllYTk2NTBm
ZmVhNzhmYWVkZDRlOGM3YzUyODIwNjk4NTdiOTguLjJmZWRkZDI4OGJjYWE1NDliZDQ2Nzc4ODJl
YTVhM2M4YWUxYzE1OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVu
Y2FudmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8t
YmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dApAQCAtMyw3
ICszLDcgQEAgUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1bHQgdHlwZSBw
cm9kdWNlcyBjb3JyZWN0IHJlc3VsdAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRo
IHBuZyBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Js
b2Igd2l0aCBqcGdlIHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAogUEFTUyBUZXN0IHRoYXQgY29u
dmVydFRvQmxvYiB3aXRoIHdlYnAgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgCi1GQUlMIFRlc3Qg
dGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhy
b3dzIGV4Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0IHRo
YXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93
cyBleGNlcHRpb24gCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZz
Y3JlZW5DYW52YXMgd2l0aCBzaXplIDAgdGhyb3dzIGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0
IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHRhaW50ZWQgb3Jp
Z2luIHRocm93cyBleGNlcHRpb24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Iv
b2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252
ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4
dAppbmRleCBhOTZjMWI0NTg1NDQ1YjFmNmYxMmViYTM1YTA3YzAwN2JmNmM2YWQ0Li4yOWE5OGMx
YzEwODM2MzNjZTdlOGJmMWE0MmI1Y2RhZTRhNGI2ZDMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVy
dC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9i
LnctZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNCBAQAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwg
bWVzc2FnZSA9IERhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgot
CiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJv
ZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0
VG9CbG9iIHdpdGggZGVmYXVsdCB0eXBlLzEuMCBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVz
dWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1
bHQgdHlwZS8wLjIgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAK
QEAgLTEzLDcgKzExLDcgQEAgUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGpwZWcv
MC4yIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYQogUEFTUyBUZXN0IHRoYXQg
Y29udmVydFRvQmxvYiB3aXRoIHdlYnAvZGVmYXVsdCBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3Qg
cmVzdWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdl
YnAvMS4wIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNT
IFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggd2VicC8wLjIgcXVhbGl0eSBwcm9kdWNlcyBj
b3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKLUZBSUwgVGVzdCB0aGF0IGNhbGwgY29udmVydFRv
QmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIGluIGEg
d29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQor
UEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVu
Q2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxs
IGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5DYW52YXMgd2l0aCBzaXplIDAgdGhyb3dzIGV4
Y2VwdGlvbiBpbiBhIHdvcmtlciAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBv
biBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHRhaW50ZWQgb3JpZ2luIHRocm93cyBleGNlcHRpb24g
aW4gYSB3b3JrZXIgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZz
Y3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Ro
ZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1h
cC1leHBlY3RlZC50eHQKaW5kZXggZmUxZTkwZTdiM2FlYmQ3MDhjZTYwZDJiM2U5ODQyZDgwNDVk
YmY5OC4uNTZlMWQ3ZTY2OWI5YjIyN2JhMDE1YTJmNzE1N2Y0MGI1NTJjY2NkOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5p
bWFnZWJpdG1hcC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQKQEAgLTMs
NiArMyw2IEBAIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCByZXR1cm5zIGFu
IEltYWdlQml0bWFwIHdpdGggY29ycmVjdCB3aWR0aCBhCiBGQUlMIFRlc3QgdGhhdCB0cmFuc2Zl
clRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3QgY29sb3Ig
YXNzZXJ0X2VxdWFsczogQWxwaGEgY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKDUwLCAyNSkgZXhw
ZWN0ZWQgMjU1IGJ1dCBnb3QgMAogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFw
IHdvbid0IGNoYW5nZSBjb250ZXh0J3MgcHJvcGVydHkgCiBGQUlMIFRlc3QgdGhhdCB0cmFuc2Zl
clRvSW1hZ2VCaXRtYXAgcHJlc2VydmVzIHRyYW5zZm9ybSBhc3NlcnRfZXF1YWxzOiBHcmVlbiBj
aGFubmVsIG9mIHRoZSBwaXhlbCBhdCAoMjMsIDI1KSBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCi1G
QUlMIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRldGFjaGVkIE9m
ZnNjcmVlbkNhbnZhcyB0aHJvd3MgYW4gZXhjZXB0aW9uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBj
bG9uZWQuCitQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRl
dGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgYW4gZXhjZXB0aW9uIAogUEFTUyBUZXN0IHRo
YXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHdpdGhvdXQgYSBjb250ZXh0IHRocm93cyBhbiBleGNl
cHRpb24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9m
ZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnct
ZXhwZWN0ZWQudHh0CmluZGV4IDlkNmRiZTJlM2M3YzNjZTMxZjMyNzI2MmYwMjYyZmYwNWQ5ODI0
OTQuLjEzYTAzZWIwNzgyZmI3YTM2YTlmZjQ5MmMwMDVjYTkwNjE0OWJmODUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNh
bnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1h
Z2ViaXRtYXAudy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dApAQCAt
NSw2ICs1LDYgQEAgUEFTUyBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgdHdp
Y2UgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnIKIEZBSUwgVGVzdCB0aGF0IGNhbGwg
dHJhbnNmZXJUb0ltYWdlQml0bWFwIHR3aWNlIG9uIGEgYWxwaGEtZGlzYWJsZWQgY29udGV4dCBy
ZXR1cm5zIGFuIEltYWdlQml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCiBQQVNT
IFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd29uJ3QgY2hhbmdlIGNvbnRleHQncyBw
cm9wZXJ0eSBpbiBhIHdvcmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdl
Qml0bWFwIHByZXNlcnZlcyB0cmFuc2Zvcm0gaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFs
czogcHJvcGVydHkgMSwgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2Fs
bCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhy
b3dzIGFuIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFj
aGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdl
Qml0bWFwIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24g
aW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3
aXRob3V0IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVy
cmFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNh
bnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dAppbmRleCBkMjMyNjViMDI5ZWRiYjA2ZWJk
ZjE1MjFkMTk3NWNjNjg1MDM4ZGM0Li42YTFiZWIwYWI1YjcwZmIxNGE1OTFjMGViZDc5Njk1ZmNj
MjEwMTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2Fu
dmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNh
bnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQKQEAgLTEsOSAr
MSw3IEBACiAKLUZBSUwgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVj
dCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gVGhlIG9iamVjdCBjYW4gbm90
IGJlIGNsb25lZC4KLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0
aGF0IGhhcyBhIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7b2Zmc2Ny
ZWVuQ2FudmFzfSwgW29mZnNjcmVlbkNhbnZhc10pOwotICAgICAgICB9IiB0aHJldyBvYmplY3Qg
IkRhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIgdGhhdCBpcyBu
b3QgYSBET01FeGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBl
cXVhbCB0byAyNSwgZXhwZWN0ZWQgMTEKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNj
cmVlbkNhbnZhcyB0d2ljZSB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUg
Y2xvbmVkLgotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0
YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5v
dCBiZSBjbG9uZWQuCi1GQUlMIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJ3dlYmdsJykg
b24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbi4gVGhlIG9iamVj
dCBjYW4gbm90IGJlIGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNp
emUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gCitQQVNT
IFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0
IHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVu
Q2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBn
ZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNl
cHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEg
ZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUu
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFz
LnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50eHQKaW5kZXggNjRkNzk1YTBjMzgzMDg4NTIzMzY3
ZWQxMWFmNzYyNmYwNTU2ODc1OC4uNTI3ZDg2MWY4Y2Y3YTE0MTFiNTgyOTk1Mzc2MDE4OTc4ZDIx
MjFkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZh
cy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNh
bnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dApAQCAtMSwx
MCArMSw4IEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNsb25lRXJy
b3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi0KLUZBSUwgVGVzdCB0aGF0IE9mZnNj
cmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCBmcm9t
IGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBh
IDJkIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gYXNzZXJ0X3RydWU6IGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3Jl
ZW5DYW52YXMgdGhhdCBoYXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3
b3JrZXIuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IHRo
YXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24gaW4g
YSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQg
T2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJl
YWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0IHRoYXQgY2Fs
bGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRo
cm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNo
ZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBUZXN0IHRoYXQgT2Zmc2NyZWVuQ2FudmFzJ3Mgc2l6
ZSBpcyBjb3JyZWN0IGFmdGVyIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gYSB3b3JrZXIuIAorUEFT
UyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgMmQgY29u
dGV4dCB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5z
ZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIHdlYmdsIGNvbnRleHQgdGhyb3dzIGV4
Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3Jl
ZW5DYW52YXMgdHdpY2UgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3Qg
dGhhdCBjYWxsaW5nIGdldENvbnRleHQoJzJkJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52
YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5n
IGdldENvbnRleHQoJ3dlYmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dz
IGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388986</attachid>
            <date>2020-01-28 06:36:17 -0800</date>
            <delta_ts>2020-01-28 06:43:01 -0800</delta_ts>
            <desc>again</desc>
            <filename>accesibility-generation-assert-7.patch</filename>
            <type>text/plain</type>
            <size>6704</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAz
MTQwNGI1YWRiYS4uY2Q3MGZhMGVkYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0NCw4ICs4NDQsNiBAQCB3ZWJraXQub3JnL2IvMjA2
MDcxIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MjA2MDcxIGVkaXRpbmcvc3BlbGxpbmcvbWFya2Vycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMjA2MDcxIGVkaXRpbmcvc3BlbGxpbmcvcmV0cm8tY29ycmVjdGlvbi1zcGVsbGluZy1tYXJr
ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIwNjI0MSBbIE1vamF2ZSBEZWJ1
ZyBdIGFjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC10ZXh0L3NlYXJjaC10ZXh0Lmh0bWwgWyBTa2lw
IF0KLQogd2Via2l0Lm9yZy9iLzE5OTExNyBbIERlYnVnIF0gc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMuaHRtbCBbIFRpbWVvdXQgXQogCiB3
ZWJraXQub3JnL2IvMjA2NTAzIFsgTW9qYXZlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2RvbS9pZGxoYXJuZXNzLndvcmtlci5odG1sIFsgRmFpbHVyZSBdCkBAIC04NTQs
NCArODUyLDQgQEAgd2Via2l0Lm9yZy9iLzIwNjY3OSBbIFJlbGVhc2UgXSBmYXN0L2Zvcm1zL3Rl
eHRhcmVhL3RleHRhcmVhLXN0YXRlLXJlc3RvcmUuaHRtbAogCiB3ZWJraXQub3JnL2IvMjA2Njg0
IFsgRGVidWcgXSBpbnNwZWN0b3IvaGVhcC90cmFja2luZy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzIwNTk1NiBpbnNwZWN0b3IvcnVudGltZS9leGVjdXRpb25Db250ZXh0
Q3JlYXRlZC1vbkVuYWJsZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA1OTU2IGluc3BlY3Rvci9ydW50aW1lL2V4ZWN1dGlv
bkNvbnRleHRDcmVhdGVkLW9uRW5hYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYjRkYTI0ZWM4ZWEuLmM1NTAxZjZjOWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTIzMTUsNiArMjMxNSw5IEBAIFN0eWxlOjpSZXNvbHZlciYgRG9jdW1l
bnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHZvaWQgRG9jdW1lbnQ6OmZv
bnRzTmVlZFVwZGF0ZShGb250U2VsZWN0b3ImKQogewogICAgIGludmFsaWRhdGVNYXRjaGVkUHJv
cGVydGllc0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOworCisgICAgaWYgKG1fdXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCisgICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0
eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0
eWxlUmVjYWxjKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCmluZGV4IDdmY2FhNDRkNTRhLi5lMmZlOTY4ZTAxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC00NjIsNiArNDYyLDggQEAg
dm9pZCBGb250Q2FjaGU6OmludmFsaWRhdGUoKQogCiAgICAgZ0dlbmVyYXRpb24rKzsKIAorICAg
IFdURlJlcG9ydEJhY2t0cmFjZSgpOworCiAgICAgVmVjdG9yPFJlZjxGb250U2VsZWN0b3I+PiBj
bGllbnRzOwogICAgIGNsaWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShnQ2xpZW50cy0+c2l6
ZSgpKTsKICAgICBmb3IgKGF1dG8gaXQgPSBnQ2xpZW50cy0+YmVnaW4oKSwgZW5kID0gZ0NsaWVu
dHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IDBiNTQ4MTBmNmY0Li4y
ODg2NTE5NTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAgLTE3Nyw3ICsxNzcsOSBAQCBjb25zdCBGb250UmFu
Z2VzJiBGb250Q2FzY2FkZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250
Q2FzY2FkZURlcwogICAgICAgICByZXR1cm4gbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzW2luZGV4
XTsKIAogICAgIEFTU0VSVChpbmRleCA9PSBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuc2l6ZSgp
KTsKLSAgICBBU1NFUlQoRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKKyAgICBpZiAoRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkg
IT0gbV9nZW5lcmF0aW9uKQorICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSA9PSBtX2dlbmVy
YXRpb24pOwogCiAgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFuZ2Vz
KCkpOwogICAgIGF1dG8mIGZvbnRSYW5nZXMgPSBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMubGFz
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9u
c0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNo
ZS5jcHAKaW5kZXggNzNlOWU2ZmNhM2UuLmM5MzZiYmJmMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9NYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUuaCIKIAorI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjksNiArNzAsMTAgQEAgYm9vbCBN
YXRjaGVkRGVjbGFyYXRpb25zQ2FjaGU6OkVudHJ5Ojppc1VzYWJsZUFmdGVySGlnaFByaW9yaXR5
UHJvcGVydGllcyhjb25zdAogICAgIGlmIChzdHlsZS5lZmZlY3RpdmVab29tKCkgIT0gcmVuZGVy
U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8g
RklYTUU6IENhY2hlIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZCBvbiBnZW5lcmF0aW9uIGJ1bXAu
CisvLyAgICBpZiAocmVuZGVyU3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udHMoKS0+Z2VuZXJhdGlv
bigpICE9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2VuZXJhdGlvbigpKQorLy8gICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxGb3JMZW5n
dGhSZXNvbHV0aW9uKHN0eWxlLCAqcmVuZGVyU3R5bGUpOwogfQogCkBAIC0xMDYsNiArMTExLDE2
IEBAIHZvaWQgTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOjphZGQoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYKICAgICAgICAgbV9zd2VlcFRpbWVyLnN0YXJ0T25l
U2hvdChzd2VlcERlbGF5KTsKICAgICB9CiAKKy8vICAgIGJvb2wgZXhpc3RpbmdHZW5lcmF0aW9u
TWF0Y2hlcyA9IG1fZW50cmllcy5pc0VtcHR5KCkgfHwgbV9lbnRyaWVzLmJlZ2luKCktPnZhbHVl
LnJlbmRlclN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRzKCktPmdlbmVyYXRpb24oKSA9PSBGb250
Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKTsKKy8vICAgIGlmICghZXhpc3RpbmdHZW5l
cmF0aW9uTWF0Y2hlcykKKy8vICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKy8vICAgIFJF
TEVBU0VfQVNTRVJUKGV4aXN0aW5nR2VuZXJhdGlvbk1hdGNoZXMpOworCisgICAgYm9vbCBuZXdn
R2VuZXJhdGlvbk1hdGNoZXMgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRzKCktPmdlbmVyYXRp
b24oKSA9PSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKTsKKyAgICBpZiAoIW5l
d2dHZW5lcmF0aW9uTWF0Y2hlcykKKyAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQobmV3Z0dlbmVyYXRpb25NYXRjaGVzKTsKKwogICAgIEFTU0VSVChoYXNo
KTsKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgdGhlIG9yaWdpbmFsIFJlbmRlclN0
eWxlIGluc3RhbmNlLiBJdCBtYXkgYmUgZnVydGhlciBtb2RpZmllZC4KICAgICAvLyBUaGUgUmVu
ZGVyU3R5bGUgaW4gdGhlIGNhY2hlIGlzIHJlYWxseSBqdXN0IGEgaG9sZGVyIGZvciB0aGUgc3Vi
c3RydWN0dXJlcyBhbmQgbmV2ZXIgdXNlZCBhcy1pcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggOGJmMzcxYTA3YmIuLmNmOGU0ZTkwMzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNT
U1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgpAQCAtNTMxLDYgKzUzMiw4IEBAIHN0YXRpYyBib29sIGVsZW1lbnRUeXBlSGFz
QXBwZWFyYW5jZUZyb21VQVN0eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKIHZvaWQgUmVz
b2x2ZXI6OmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKQogeworICAgIGZwcmlu
dGYoc3RkZXJyLCAiaW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSAlcCBGb250Q2Fj
aGUgJWRcbiIsIHRoaXMsICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSk7Cisg
ICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CiAgICAgbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUu
aW52YWxpZGF0ZSgpOwogfQogCkBAIC01NDksNiArNTUyLDE0IEBAIHZvaWQgUmVzb2x2ZXI6OmFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMoU3RhdGUmIHN0YXRlLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0
Y2hSZXN1CiAgICAgYXV0byYgZWxlbWVudCA9ICpzdGF0ZS5lbGVtZW50KCk7CiAKICAgICBhdXRv
KiBjYWNoZUVudHJ5ID0gbV9tYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuZmluZChjYWNoZUhhc2gs
IG1hdGNoUmVzdWx0KTsKKworICAgIGJvb2wgaXNPSyA9ICFjYWNoZUVudHJ5IHx8IGNhY2hlRW50
cnktPnJlbmRlclN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRzKCktPmdlbmVyYXRpb24oKSA9PSBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKTsKKyAgICBpZiAoIWlzT0spIHsKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIhaXNPSyBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzICVwIEZv
bnRDYWNoZSAlZCBmb250cyAlZFxuIiwgdGhpcywgRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5l
cmF0aW9uKCksIGNhY2hlRW50cnktPnJlbmRlclN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRzKCkt
PmdlbmVyYXRpb24oKSk7CisgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVChpc09LKTsKKwogICAgIGlmIChjYWNoZUVudHJ5ICYmIE1hdGNoZWRE
ZWNsYXJhdGlvbnNDYWNoZTo6aXNDYWNoZWFibGUoZWxlbWVudCwgc3R5bGUsIHBhcmVudFN0eWxl
KSkgewogICAgICAgICAvLyBXZSBjYW4gYnVpbGQgdXAgdGhlIHN0eWxlIGJ5IGNvcHlpbmcgbm9u
LWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4gZWFybGllciBzdHlsZSBvYmplY3QgYnVpbHQg
dXNpbmcgdGhlIHNhbWUgZXhhY3QKICAgICAgICAgLy8gc3R5bGUgZGVjbGFyYXRpb25zLiBXZSB0
aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5oZXJpdGVkIHByb3BlcnRpZXMsIGlmIGFueSwg
YXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24gdGhlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389010</attachid>
            <date>2020-01-28 08:54:23 -0800</date>
            <delta_ts>2020-01-28 09:20:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20200128165421.patch</filename>
            <type>text/plain</type>
            <size>41164</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlNzQxY2Q2NjgxNzRi
OTAyYmQxNTk2YzdjNWU1MWE2NmYxNjYzMC4uNDE0NGJhNjI5YmNiN2IxNTM0ZWViYjJlOGM5ZTc0
ZTFiNTAwZDkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT2Zmc2NyZWVuQ2FudmFzZXNEZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6Cisg
ICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNl
Ojp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29u
c3QpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T2Zmc2NyZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
c2NyZWVuQ2FudmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnNldEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1h
Z2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9C
bG9iKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKwogMjAxOS0xMC0wNCAgQ2hyaXMg
TG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
IGFuZCBjYW5jZWxBbmltYXRpb25GcmFtZSBzaG91bGQgYmUgcHJlc2VudCBvbiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjg3NGQ1ZGFjZTc3ODM3YmVjZmNiZjQ0MTQ1
ZjNjOWFlMWMzMjVhZS4uZmQxMzliYWQ2NWJlOGExZjk0OTUyMzczZGVlZDA2MmE1YmZjYzZmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC04Nyw2ICs4NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisj
aW5jbHVkZSAiSlNPZmZzY3JlZW5DYW52YXMuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMu
aCIKKyNlbmRpZgorCiAjaWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8
fCBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCiAjZGVmaW5lIEFTU1VNRV9MSVRUTEVfRU5ESUFO
IDAKICNlbHNlCkBAIC0xNjksNiArMTc0LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAg
ICBSVENDZXJ0aWZpY2F0ZVRhZyA9IDQ0LAogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBUYWcgPSA0
NSwKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZyA9IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1Miw2
ICszNjAsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAw
eDgwMDAwMDAwOwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJf
dD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9y
aWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6
aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8
aW1hZ2VCeXRlRGF0YTp1aW50OF90PikKKyAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJU
YWcgPHZhbHVlOnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBz
ZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTU0OSwxMiArNTU4
LDE4IEBAIHRlbXBsYXRlIDw+IGJvb2wgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4oVmVjdG9y
PHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IHVpbnQ4CiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBD
bG9uZUJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBz
ZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
UykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9m
ZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICNlbmRpZgogICAgICAgICBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9u
Q29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMp
CiAgICAgewogICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorI2lmIEVO
QUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywK
ICNlbmRpZgpAQCAtNTgyLDYgKzU5Nyw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PEpTT2JqZWN0KiwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAKICAgICBDbG9uZVNlcmlhbGl6ZXIo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYg
YXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0
bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3
YXNtTW9kdWxlcywKICNlbmRpZgpAQCAtNjAwLDYgKzYxOCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMp
OwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAoYXJyYXlCdWZmZXJzLCBtX3RyYW5zZmVycmVkQXJy
YXlCdWZmZXJzKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGltYWdlQml0bWFwcywgbV90cmFu
c2ZlcnJlZEltYWdlQml0bWFwcyk7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAg
ICAgIGZpbGxUcmFuc2Zlck1hcChvZmZzY3JlZW5DYW52YXNlcywgbV90cmFuc2ZlcnJlZE9mZnNj
cmVlbkNhbnZhc2VzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgpA
QCAtOTQ0LDYgKzk2NSwyMCBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIHZvaWQg
ZHVtcE9mZnNjcmVlbkNhbnZhcyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSYgY29kZSkKKyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkT2Zmc2Ny
ZWVuQ2FudmFzZXMuZmluZChvYmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJl
ZE9mZnNjcmVlbkNhbnZhc2VzLmVuZCgpKSB7CisgICAgICAgICAgICB3cml0ZShPZmZzY3JlZW5D
YW52YXNUcmFuc2ZlclRhZyk7CisgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wg
ZHVtcElmVGVybWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNv
ZGUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMDk1LDYgKzEx
MzAsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250
ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlh
bGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2Fn
ZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgeyB9LAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FO
VkFTKQorICAgICAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKICNlbmRpZgpAQCAtMTE1
NCw2ICsxMTkyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZHVtcEltYWdlQml0bWFw
KG9iaiwgY29kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICAgICBpZiAob2JqLT5pbmhl
cml0cyh2bSwgSlNPZmZzY3JlZW5DYW52YXM6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBk
dW1wT2Zmc2NyZWVuQ2FudmFzKG9iaiwgY29kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlh
bGl6ZSBhcyBudWxsLgpAQCAtMTUwMSw2ICsxNTQ1LDkgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQ
b29sIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVy
cmVkQXJyYXlCdWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFw
czsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPYmplY3RQb29sIG1fdHJhbnNm
ZXJyZWRPZmZzY3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmlu
Z0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAg
ICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKQEAgLTE3ODAsNyArMTgyNywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0gICAgc3RhdGljIERlc2VyaWFs
aXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0
cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZm
ZXJzCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3Rv
cjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VC
dWZmZXJzCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXNlcworI2VuZGlmCisgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JG
aWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVz
CiAjZW5kaWYKQEAgLTE3ODksNiArMTg0MCw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFidWZm
ZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAgICAgIENsb25l
RGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JV
UkxzLCBibG9iRmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycykK
KyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhc2VzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAgICAgLCB3YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODM4LDExICsxODkyLDE0IEBA
IHByaXZhdGU6CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURl
c2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBt
ZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50
cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4m
JiBpbWFnZUJ1ZmZlcnMsCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGJ1ZmZlciwKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXNlcyA9IHsgfSwKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICAgICAgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcywKKyAgICAgICAgV2FzbU1v
ZHVsZUFycmF5KiB3YXNtTW9kdWxlcyA9IG51bGxwdHIKICNlbmRpZgotICAgICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKKyAgICAgICAgKQogICAgICAgICA6IENsb25lQmFzZShs
ZXhpY2FsR2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCkKICAgICAgICAgLCBtX2lzRE9NR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+aW5oZXJpdHM8
SlNET01HbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpCkBAIC0xODU0LDYgKzE5MTEs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2FycmF5QnVmZmVycyhhcnJheUJ1ZmZlckNvbnRl
bnRzID8gYXJyYXlCdWZmZXJDb250ZW50cy0+c2l6ZSgpIDogMCkKICAgICAgICAgLCBtX2ltYWdl
QnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCiAgICAgICAgICwgbV9pbWFnZUJpdG1hcHMo
bV9pbWFnZUJ1ZmZlcnMuc2l6ZSgpKQorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAg
ICAgICAsIG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXMpKQorICAgICAgICAsIG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9m
ZnNjcmVlbkNhbnZhc2VzLnNpemUoKSkKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzKHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0xODYzLDYg
KzE5MjQsOSBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIHNo
YXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisg
ICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+
JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICAgICAsIFdhc21Nb2R1bGVBcnJheSogd2FzbU1vZHVsZXMKICNlbmRpZgpAQCAt
MTg4MSw2ICsxOTQ1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9zaGFyZWRCdWZmZXJzKHNo
YXJlZEJ1ZmZlcnMpCiAgICAgICAgICwgbV9pbWFnZUJ1ZmZlcnMoV1RGTW92ZShpbWFnZUJ1ZmZl
cnMpKQogICAgICAgICAsIG1faW1hZ2VCaXRtYXBzKG1faW1hZ2VCdWZmZXJzLnNpemUoKSkKKyNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzZXMoV1RGTW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKKyAgICAgICAgLCBt
X29mZnNjcmVlbkNhbnZhc2VzKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5zaXplKCkpCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgbV93YXNtTW9kdWxlcyh3
YXNtTW9kdWxlcykKICNlbmRpZgpAQCAtMjcxOSw2ICsyNzg3LDI0IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBnZXRKU1ZhbHVlKGJpdG1hcCk7CiAgICAgfQogCisjaWYgRU5BQkxFKE9GRlND
UkVFTl9DQU5WQVMpCisgICAgSlNWYWx1ZSByZWFkT2Zmc2NyZWVuQ2FudmFzKCkKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVh
ZCA9IHJlYWQoaW5kZXgpOworICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCBp
bmRleCA+PSBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgpKSB7CisgICAgICAgICAg
ICBmYWlsKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSkKKyAgICAgICAgICAgIG1fb2Zm
c2NyZWVuQ2FudmFzZXNbaW5kZXhdID0gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFdURk1v
dmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOworCisgICAgICAgIGF1
dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0uZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CisgICAgfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBKU1ZhbHVlIHJlYWRSVENDZXJ0aWZpY2F0ZSgp
CiAgICAgewpAQCAtMzA1OCwxMSArMzE0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBKU1ZhbHVlIGNyeXB0b0tleTsKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKLSAgICAgICAgICAgIENsb25lRGVzZXJp
YWxpemVyIHJhd0tleURlc2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIG1fZ2xvYmFs
T2JqZWN0LCBkdW1teU1lc3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LAotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAgICAgICAgICAgICBudWxscHRyLAotI2VuZGlmCi0gICAgICAgICAgICAg
ICAgc2VyaWFsaXplZEtleSk7CisgICAgICAgICAgICBDbG9uZURlc2VyaWFsaXplciByYXdLZXlE
ZXNlcmlhbGl6ZXIobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgZHVtbXlN
ZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwgc2VyaWFsaXplZEtleSk7CiAgICAgICAgICAgICBp
ZiAoIXJhd0tleURlc2VyaWFsaXplci5yZWFkQ3J5cHRvS2V5KGNyeXB0b0tleSkpIHsKICAgICAg
ICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAg
LTMwOTQsNiArMzE3NiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIGNhc2UgSW1hZ2VC
aXRtYXBUYWc6CiAgICAgICAgICAgICByZXR1cm4gcmVhZEltYWdlQml0bWFwKCk7CisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgIGNhc2UgT2Zmc2NyZWVuQ2FudmFzVHJhbnNm
ZXJUYWc6CisgICAgICAgICAgICByZXR1cm4gcmVhZE9mZnNjcmVlbkNhbnZhcygpOworI2VuZGlm
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtX3B0ci0tOyAvLyBQdXNoIHRoZSB0YWcg
YmFjawogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTMxMjMsNiArMzIwOSwxMCBA
QCBwcml2YXRlOgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogbV9zaGFyZWRCdWZmZXJz
OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9v
bD4+IG1faW1hZ2VCdWZmZXJzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBtX2lt
YWdlQml0bWFwczsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVl
bkNhbnZhc2VzOworICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gbV9vZmZzY3Jl
ZW5DYW52YXNlczsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9k
dWxlQXJyYXkqIG1fd2FzbU1vZHVsZXM7CiAjZW5kaWYKQEAgLTMzNDAsNiArMzQzMCw5IEBAIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlciwgc3RkOjp1bmlxCiB9CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXksIFZlY3RvcjxzdGQ6OnBhaXI8
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisjaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcwor
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0
cjxXYXNtTW9kdWxlQXJyYXk+IHdhc21Nb2R1bGVzQXJyYXkKICNlbmRpZgpAQCAtMzM0OCw2ICsz
NDQxLDkgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICAgICAsIG1fYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1fc2hh
cmVkQnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKHNoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkp
KQogICAgICwgbV9pbWFnZUJ1ZmZlcnMoV1RGTW92ZShpbWFnZUJ1ZmZlcnMpKQorI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICwgbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdU
Rk1vdmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykpCisjZW5kaWYKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkoV1RGTW92ZSh3YXNtTW9kdWxlc0Fy
cmF5KSkKICNlbmRpZgpAQCAtMzQzNSwxMiArMzUzMSwxOCBAQCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYg
bGV4aQogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0
bWFwPj4gZHVtbXlJbWFnZUJpdG1hcHM7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisg
ICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBkdW1teU9mZnNjcmVlbkNhbnZhc2Vz
OworI2VuZGlmCiAgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJh
eUJ1ZmZlcnM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSBk
dW1teU1vZHVsZXM7CiAjZW5kaWYKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlT
aGFyZWRCdWZmZXJzOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXpl
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJy
YXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
UykKKyAgICAgICAgZHVtbXlPZmZzY3JlZW5DYW52YXNlcywKKyNlbmRpZgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAgICAgZHVtbXlNb2R1bGVzLAogI2VuZGlmCkBAIC0zNDU2LDExICsz
NTU4LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBpZiAoY29kZSAhPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyLCBudWxscHRyLCB7IH0KLSNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICwgbnVsbHB0cgotI2VuZGlmCi0gICAgICAgICAg
ICApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShidWZmZXIpLCBibG9iVVJMcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CiB9CiAKIHN0
YXRpYyBib29sIGNvbnRhaW5zRHVwbGljYXRlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0
bWFwPj4mIGltYWdlQml0bWFwcykKQEAgLTM0NzMsMTEgKzM1NzEsMjkgQEAgc3RhdGljIGJvb2wg
Y29udGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1h
Z2VCaXRtYXBzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQorc3RhdGljIGJvb2wgY2FuT2Zmc2NyZWVuQ2FudmFzZXNEZXRhY2goY29uc3QgVmVj
dG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiYgb2Zmc2NyZWVuQ2FudmFzZXMpCit7CisgICAg
SGFzaFNldDxPZmZzY3JlZW5DYW52YXMqPiB2aXNpdGVkOworICAgIGZvciAoYXV0byYgb2Zmc2Ny
ZWVuQ2FudmFzIDogb2Zmc2NyZWVuQ2FudmFzZXMpIHsKKyAgICAgICAgaWYgKCFvZmZzY3JlZW5D
YW52YXMtPmNhbkRldGFjaCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAv
LyBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGFkZCwgd2Ugc2hvdWxkIG5vdCBlbmNvdW50ZXIg
ZHVwbGljYXRlcy4KKyAgICAgICAgaWYgKCF2aXNpdGVkLmFkZChvZmZzY3JlZW5DYW52YXMuZ2V0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKyNlbmRpZgorCiBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4m
JiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRz
LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQogewogICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKTsKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBh
cnJheUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IGltYWdlQml0bWFw
czsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBWZWN0b3I8UmVmUHRyPE9mZnNj
cmVlbkNhbnZhcz4+IG9mZnNjcmVlbkNhbnZhc2VzOworI2VuZGlmCiAgICAgZm9yIChhdXRvJiB0
cmFuc2ZlcmFibGUgOiB0cmFuc2Zlckxpc3QpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXlCdWZm
ZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkp
IHsKICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKQpAQCAtMzUwNCwx
MSArMzYyMCwyMiBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICBp
ZiAoYXV0byBvZmZzY3JlZW5DYW52YXMgPSBKU09mZnNjcmVlbkNhbnZhczo6dG9XcmFwcGVkKHZt
LCB0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBvZmZzY3JlZW5DYW52YXNlcy5h
cHBlbmQoV1RGTW92ZShvZmZzY3JlZW5DYW52YXMpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25l
RXJyb3IgfTsKICAgICB9CiAKICAgICBpZiAoY29udGFpbnNEdXBsaWNhdGVzKGltYWdlQml0bWFw
cykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhQ2xvbmVFcnJvciB9OworI2lmIEVO
QUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIGlmICghY2FuT2Zmc2NyZWVuQ2FudmFzZXNEZXRh
Y2gob2Zmc2NyZWVuQ2FudmFzZXMpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKyNlbmRpZgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAg
ICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKQEAgLTM1MTcsNiArMzY0NCw5IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUo
JmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywg
aW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICBvZmZz
Y3JlZW5DYW52YXNlcywKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
d2FzbU1vZHVsZXMsIAogI2VuZGlmCkBAIC0zNTMxLDcgKzM2NjEsMTYgQEAgRXhjZXB0aW9uT3I8
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KEpTR2xvYmFsT2IKIAogICAgIGF1dG8gaW1hZ2VCdWZmZXJzID0gSW1hZ2VCaXRtYXA6OmRldGFj
aEJpdG1hcHMoV1RGTW92ZShpbWFnZUJpdG1hcHMpKTsKIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52
YXM+PiBkZXRhY2hlZENhbnZhc2VzOworICAgIGZvciAoYXV0byBvZmZzY3JlZW5DYW52YXMgOiBv
ZmZzY3JlZW5DYW52YXNlcykKKyAgICAgICAgZGV0YWNoZWRDYW52YXNlcy5hcHBlbmQob2Zmc2Ny
ZWVuQ2FudmFzLT5kZXRhY2goKSk7CisjZW5kaWYKKwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQgPT0gU2VyaWFs
aXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlID8gV1RGTW92ZShzaGFyZWRCdWZmZXJz
KSA6IG51bGxwdHIsIFdURk1vdmUoaW1hZ2VCdWZmZXJzKQorI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQorICAgICAgICAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZENhbnZhc2VzKQorI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1
ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0zNTg0LDcgKzM3MjMs
MTEgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogCiBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRo
cm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xv
bmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIG1lc3NhZ2VQb3J0cywgV1RGTW92ZShtX2ltYWdlQnVmZmVycyksIG1fYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LmdldCgpLCBtX2RhdGEsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBt
X3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkKKyAgICBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgV1RGTW92ZShtX2ltYWdlQnVmZmVy
cykKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBXVEZNb3ZlKG1fZGV0
YWNoZWRPZmZzY3JlZW5DYW52YXNlcykKKyNlbmRpZgorICAgICAgICAsIG1fYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5LmdldCgpLCBtX2RhdGEsIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzLCBtX3No
YXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgICwgbV93YXNtTW9kdWxlc0FycmF5LmdldCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggZTI4OGYy
OTRlOWYyOTdiNzYyZmZjMjU4NjE1MmI1MGU1NmZjMzdmZi4uYzZjM2YwNmZlYzM3ZmE4Yzk2NDI4
MTI1OGRjNjcxMjlhOTVmNjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgY2xhc3MgTW9kdWxl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
K2NsYXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOworI2VuZGlmCiBjbGFzcyBJREJWYWx1ZTsK
IGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgTWVzc2FnZVBvcnQ7CkBAIC0xMTMsOCArMTE2LDEx
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+KTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzCisjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgPSB7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKLSAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1vZHVsZUFycmF5PgorICAgICAg
ICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+ID0gbnVsbHB0cgogI2VuZGlmCiAg
ICAgICAgICk7CiAKQEAgLTEyMiw2ICsxMjgsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiBtX2ltYWdlQnVmZmVyczsKKyNpZiBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPj4gbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzOworI2VuZGlmCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2Fz
bU1vZHVsZXNBcnJheTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
YW52YXNCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAppbmRleCBkMjA1
ZmU4MTg4MDJjNjhkMWE2NTU4NzIwMGMxNzE5OTc2OTRkYjExLi4wZGE2ZThiNjJlZDgwYjk1Mzg0
NzcyNzUwZmE0NDkxZmIzYWMwYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nh
bnZhc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaApAQCAtNjUs
OCArNjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuQ2FudmFzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludENh
bnZhcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KICAgICBjb25zdCBJ
bnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICBJbWFnZUJ1ZmZl
ciogYnVmZmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNj
cmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
aW5kZXggNzU1ZjExZWY4OWUxMTgxYmUwNmQ1ZWEyZjAwNzg2OTZlMzliZTRkMS4uOTg1NzExMGFh
OWVlNzc0YWE4MWE0ZWJjMDU4YzI5YTU0Zjg5Yjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcApAQCAtNDMsMTEgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9mZnNjcmVlbkNhbnZhcyk7CiAKK0RldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyhzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG9yaWdp
bkNsZWFuKQorICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9zaXplKHNp
emUpCisgICAgLCBtX29yaWdpbkNsZWFuKG9yaWdpbkNsZWFuKQoreworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZm
ZXIoKQoreworICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKK30KKwogUmVmPE9mZnNjcmVl
bkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhlaWdodCkpOwog
fQogCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+JiYgZGV0YWNoZWRDYW52YXMpCit7CisgICAgUmVmPE9mZnNjcmVlbkNhbnZhcz4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCBkZXRhY2hlZENh
bnZhcy0+c2l6ZSgpLndpZHRoKCksIGRldGFjaGVkQ2FudmFzLT5zaXplKCkuaGVpZ2h0KCkpKTsK
KyAgICBjbG9uZS0+c2V0SW1hZ2VCdWZmZXIoZGV0YWNoZWRDYW52YXMtPnRha2VJbWFnZUJ1ZmZl
cigpKTsKKyAgICBpZiAoIWRldGFjaGVkQ2FudmFzLT5vcmlnaW5DbGVhbigpKQorICAgICAgICBj
bG9uZS0+c2V0T3JpZ2luVGFpbnRlZCgpOworCisgICAgcmV0dXJuIGNsb25lOworfQorCiBPZmZz
Y3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIDogQ2FudmFzQmFzZShJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpKQogICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIo
JmNvbnRleHQpCkBAIC02MiwxMyArODQsMzEgQEAgT2Zmc2NyZWVuQ2FudmFzOjp+T2Zmc2NyZWVu
Q2FudmFzKCkKICAgICBzZXRJbWFnZUJ1ZmZlcihudWxscHRyKTsKIH0KIAordW5zaWduZWQgT2Zm
c2NyZWVuQ2FudmFzOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBDYW52YXNCYXNlOjp3aWR0aCgpOworfQorCit1bnNp
Z25lZCBPZmZzY3JlZW5DYW52YXM6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGV0YWNo
ZWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBDYW52YXNCYXNlOjpoZWlnaHQoKTsK
K30KKwogdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKQog
eworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAgICByZXR1cm47CiAgICAgc2V0U2l6ZShJbnRT
aXplKG5ld1dpZHRoLCBoZWlnaHQoKSkpOwogfQogCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0
SGVpZ2h0KHVuc2lnbmVkIG5ld0hlaWdodCkKIHsKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOwogICAgIHNldFNpemUoSW50U2l6ZSh3aWR0aCgpLCBuZXdIZWlnaHQpKTsKIH0K
IApAQCAtODAsNiArMTIwLDkgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSkKIAogRXhjZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4
dD4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRl
LCBSZW5kZXJpbmdDb250ZXh0VHlwZSBjb250ZXh0VHlwZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6VW5rbm93bj4+JiYgYXJndW1lbnRzKQogeworICAgIGlmIChtX2RldGFjaGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwogICAgIGlmIChjb250
ZXh0VHlwZSA9PSBSZW5kZXJpbmdDb250ZXh0VHlwZTo6XzJkKSB7CiAgICAgICAgIGlmIChtX2Nv
bnRleHQpIHsKICAgICAgICAgICAgIGlmICghaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPigqbV9jb250ZXh0KSkKQEAgLTExOCw3ICsxNjEsNyBAQCBFeGNlcHRpb25PcjxPZmZz
Y3JlZW5SZW5kZXJpbmdDb250ZXh0PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpK
U0dsb2JhbAogCiBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52
YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCisgICAg
aWYgKG1fZGV0YWNoZWQgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBpZiAoaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPigqbV9jb250ZXh0KSkgewpAQCAtMTkyLDcgKzIzNSw3IEBAIHZvaWQgT2Zm
c2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyYmIG9wdGlvbnMs
IFJlZjxEZWZlcnJlZFByCiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbmRleFNpemVFcnJvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFidWZmZXIoKSkgeworICAgIGlmICht
X2RldGFjaGVkIHx8ICFidWZmZXIoKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDYgKzI2OSwyMSBA
QCBTZWN1cml0eU9yaWdpbiogT2Zmc2NyZWVuQ2FudmFzOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0
CiAgICAgcmV0dXJuICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuc2VjdXJpdHlPcmlnaW4o
KTsKIH0KIAorYm9vbCBPZmZzY3JlZW5DYW52YXM6OmNhbkRldGFjaCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RldGFjaGVkICYmICFtX2NvbnRleHQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpkZXRhY2goKQoreworICAg
IGlmICghY2FuRGV0YWNoKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9kZXRh
Y2hlZCA9IHRydWU7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4odGFrZUltYWdlQnVmZmVyKCksIHNpemUoKSwgb3JpZ2luQ2xlYW4oKSk7Cit9CisKIENT
U1ZhbHVlUG9vbCYgT2Zmc2NyZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2woKQogewogICAgIGF1dG8q
IGNvbnRleHQgPSBjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjQ4LDcg
KzMwNiw4IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0
CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1h
Z2VCdWZmZXIoKSBjb25zdAogewotICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1ZTsK
KyAgICBpZiAoIW1fZGV0YWNoZWQpCisgICAgICAgIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0g
dHJ1ZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aCB0
cmFuc2ZlclRvSW1hZ2VCaXRtYXAsIHdoaWNoCiAgICAgLy8gcmVxdWlyZXMgdGhhdCB0aGUgY2Fu
dmFzIGJpdG1hcCByZWZlciB0byBhIG5ldywgYmxhbmsgYml0bWFwIG9mIHRoZSBzYW1lCkBAIC0y
NTcsNyArMzE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52
YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7Cisg
ICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBudWxscHRyIDogSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKIH0KIAog
dm9pZCBPZmZzY3JlZW5DYW52YXM6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5oCmluZGV4IDY1OTU3ODlkNWM4MzQ2NTI4MTU2MWEzYjA0MzBiZDVkMmNkNjFlZTguLjY3
NDRmNzJmN2VmMGY3YjM1M2QwYzdjYTQ4Njk4ZWMxZTI0ZDFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuaApAQCAtNTQsNiArNTQsMjIgQEAgdXNpbmcgT2Zmc2NyZWVuUmVu
ZGVyaW5nQ29udGV4dCA9IFZhcmlhbnQ8UmVmUHRyPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQKIHVzaW5nIE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQgPSBWYXJpYW50PFJlZlB0cjxP
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+PjsKICNlbmRpZgogCitjbGFzcyBEZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXMpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4m
JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgb3JpZ2luQ2xlYW4pOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiB0YWtlSW1hZ2VCdWZmZXIoKTsKKyAgICBjb25zdCBJbnRTaXplJiBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgYm9vbCBvcmlnaW5DbGVhbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luQ2xlYW47IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyOworICAgIEludFNpemUgbV9zaXplOworICAgIGJv
b2wgbV9vcmlnaW5DbGVhbjsKK307CisKIGNsYXNzIE9mZnNjcmVlbkNhbnZhcyBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1YmxpYyBDYW52YXNCYXNlLCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPZmZzY3JlZW5DYW52YXMpOwog
cHVibGljOgpAQCAtNjksOCArODUsMTEgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMg
UmVmPE9mZnNjcmVlbkNhbnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmPE9mZnNjcmVlbkNh
bnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRPZmZzY3JlZW5DYW52YXM+JiYpOwogICAgIHZpcnR1YWwgfk9mZnNjcmVlbkNhbnZhcygp
OwogCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBoZWln
aHQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFdpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lk
IHNldEhlaWdodCh1bnNpZ25lZCk7CiAKQEAgLTg4LDYgKzEwNywxMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhc0Ny
ZWF0ZWRJbWFnZUJ1ZmZlcjsgfQogCiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGNhbkRldGFjaCgpIGNvbnN0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4gZGV0YWNoKCk7CisKICAgICBDU1NW
YWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpA
QCAtMTE5LDYgKzE0Miw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBtX2hhc0NyZWF0ZWRJbWFnZUJ1
ZmZlciBtZWFucyB3ZSB0cmllZCB0byBtYWxsb2MgdGhlIGJ1ZmZlci4gV2UgZGlkbid0IG5lY2Vz
c2FyaWx5IGdldCBpdC4KICAgICBtdXRhYmxlIGJvb2wgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIg
eyBmYWxzZSB9OworCisgICAgYm9vbCBtX2RldGFjaGVkIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDk3MDJhZDc4ZDAyNTBlZjkxMGUwMjE0MzIy
MDI2OTkxMDU4ZjU5YzAuLjY0YTI0OTE4MWZkYWM5N2QzYTIxNjI3NTk0NmZkMGE5ZDcwYzM1NzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEw
LTEwICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
W1RyYW5zZmVyYWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50
by5ibG9iLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxv
Yi53LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8u
aW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFu
c2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2Fu
dmFzLnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50eHQ6CisKIDIwMTktMTEtMjUgIENocmlzIExv
cmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lQ29sb3Igc2FmZSB0byB1c2Ugd2l0aGluIGEgd29ya2VyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVy
dC50by5ibG9iLWV4cGVjdGVkLnR4dAppbmRleCA4ZmQ5ZWE5NjUwZmZlYTc4ZmFlZGQ0ZThjN2M1
MjgyMDY5ODU3Yjk4Li4yZmVkZGQyODhiY2FhNTQ5YmQ0Njc3ODgyZWE1YTNjOGFlMWMxNThiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0LnRv
LmJsb2ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2Fu
dmFzLmNvbnZlcnQudG8uYmxvYi1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFBBU1MgVGVz
dCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0IHR5cGUgcHJvZHVjZXMgY29ycmVjdCBy
ZXN1bHQKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBwbmcgcHJvZHVjZXMgY29y
cmVjdCByZXN1bHQgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGgganBnZSBwcm9k
dWNlcyBjb3JyZWN0IHJlc3VsdCAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCB3
ZWJwIHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAotRkFJTCBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0
VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KK1BBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRv
QmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIAogUEFT
UyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgT2Zmc2NyZWVuQ2FudmFzIHdpdGgg
c2l6ZSAwIHRocm93cyBleGNlcHRpb24gCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Js
b2Igb24gYSBPZmZzY3JlZW5DYW52YXMgd2l0aCB0YWludGVkIG9yaWdpbiB0aHJvd3MgZXhjZXB0
aW9uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5j
b252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNj
cmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQKaW5kZXggYTk2YzFiNDU4
NTQ0NWIxZjZmMTJlYmEzNWEwN2MwMDdiZjZjNmFkNC4uMjlhOThjMWMxMDgzNjMzY2U3ZThiZjFh
NDJiNWNkYWU0YTRiNmQzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3Jl
ZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0
LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dApA
QCAtMSw2ICsxLDQgQEAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBEYXRhQ2xv
bmVFcnJvcjogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KLQogUEFTUyBUZXN0IHRoYXQg
Y29udmVydFRvQmxvYiB3aXRoIGRlZmF1bHQgYXJndW1lbnRzIHByb2R1Y2VzIGNvcnJlY3QgcmVz
dWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1
bHQgdHlwZS8xLjAgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAK
IFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBkZWZhdWx0IHR5cGUvMC4yIHF1YWxp
dHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIgCkBAIC0xMyw3ICsxMSw3IEBA
IFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBqcGVnLzAuMiBxdWFsaXR5IHByb2R1
Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0
aCB3ZWJwL2RlZmF1bHQgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtl
ciAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCB3ZWJwLzEuMCBxdWFsaXR5IHBy
b2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY29udmVy
dFRvQmxvYiB3aXRoIHdlYnAvMC4yIHF1YWxpdHkgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4g
YSB3b3JrZXIgCi1GQUlMIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBkZXRhY2hl
ZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciBhc3NlcnRfdW5y
ZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNh
bGwgY29udmVydFRvQmxvYiBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhj
ZXB0aW9uIGluIGEgd29ya2VyIAogUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0VG9CbG9iIG9u
IGEgT2Zmc2NyZWVuQ2FudmFzIHdpdGggc2l6ZSAwIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3Jr
ZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5DYW52
YXMgd2l0aCB0YWludGVkIG9yaWdpbiB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5z
ZmVyLnRvLmltYWdlYml0bWFwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZh
cy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZlMWU5MGU3YjNhZWJkNzA4Y2U2MGQyYjNlOTg0MmQ4MDQ1ZGJmOTguLjU2ZTFkN2U2Njli
OWIyMjdiYTAxNWEyZjcxNTdmNDBiNTUyY2NjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2Ny
ZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
b2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJh
bnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNiBAQCBQQVNTIFRl
c3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgcmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRo
IGNvcnJlY3Qgd2lkdGggYQogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHJl
dHVybnMgYW4gSW1hZ2VCaXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9yIGFzc2VydF9lcXVhbHM6IEFs
cGhhIGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICg1MCwgMjUpIGV4cGVjdGVkIDI1NSBidXQgZ290
IDAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3b24ndCBjaGFuZ2UgY29u
dGV4dCdzIHByb3BlcnR5IAogRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHBy
ZXNlcnZlcyB0cmFuc2Zvcm0gYXNzZXJ0X2VxdWFsczogR3JlZW4gY2hhbm5lbCBvZiB0aGUgcGl4
ZWwgYXQgKDIzLCAyNSkgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2Fs
bCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhy
b3dzIGFuIGV4Y2VwdGlvbiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0
IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5D
YW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFn
ZUJpdG1hcCB3aXRob3V0IGEgY29udGV4dCB0aHJvd3MgYW4gZXhjZXB0aW9uIAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRv
LmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29m
ZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dAppbmRl
eCA5ZDZkYmUyZTNjN2MzY2UzMWYzMjcyNjJmMDI2MmZmMDVkOTgyNDk0Li4xM2EwM2ViMDc4MmZi
N2EzNmE5ZmY0OTJjMDA1Y2E5MDYxNDliZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVl
bi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
b2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJh
bnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw2IEBAIFBBU1Mg
VGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHR3aWNlIHJldHVybnMgYW4gSW1h
Z2VCaXRtYXAgd2l0aCBjb3JyCiBGQUlMIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJp
dG1hcCB0d2ljZSBvbiBhIGFscGhhLWRpc2FibGVkIGNvbnRleHQgcmV0dXJucyBhbiBJbWFnZUJp
dG1hcCB3aXRoIGNvcnJlY3QgY29sb3IgaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFsczog
cHJvcGVydHkgMywgZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAogUEFTUyBUZXN0IHRoYXQgdHJhbnNm
ZXJUb0ltYWdlQml0bWFwIHdvbid0IGNoYW5nZSBjb250ZXh0J3MgcHJvcGVydHkgaW4gYSB3b3Jr
ZXIgCiBGQUlMIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBwcmVzZXJ2ZXMg
dHJhbnNmb3JtIGluIGEgd29ya2VyIGFzc2VydF9hcnJheV9lcXVhbHM6IHByb3BlcnR5IDEsIGV4
cGVjdGVkIDI1NSBidXQgZ290IDAKLUZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdl
Qml0bWFwIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24g
aW4gYSB3b3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBj
b2RlCitQQVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRldGFj
aGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogUEFT
UyBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgd2l0aG91dCBhIGNvbnRleHQg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBhIHdvcmtlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1v
ZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJs
ZS1leHBlY3RlZC50eHQKaW5kZXggZDIzMjY1YjAyOWVkYmIwNmViZGYxNTIxZDE5NzVjYzY4NTAz
OGRjNC4uNmExYmViMGFiNWI3MGZiMTRhNTkxYzBlYmQ3OTY5NWZjYzIxMDEyMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2Fu
dmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsNyBAQAogCi1GQUlMIFRl
c3QgdGhhdCBvZmZzY3JlZW5DYW52YXMncyBzaXplIGlzIGNvcnJlY3QgYWZ0ZXIgYmVpbmcgdHJh
bnNmZXJyZWQgdG8gYSB3b3JrZXIuIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi1GQUlM
IFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0
IHRocm93cyBleGNlcHRpb24uIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe29mZnNjcmVlbkNhbnZhc30sIFtvZmZz
Y3JlZW5DYW52YXNdKTsKLSAgICAgICAgfSIgdGhyZXcgb2JqZWN0ICJEYXRhQ2xvbmVFcnJvcjog
VGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4iIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9u
IEludmFsaWRTdGF0ZUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gMjUsIGV4cGVj
dGVkIDExCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdHdpY2Ug
dGhyb3dzIGV4Y2VwdGlvbi4gVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KLUZBSUwgVGVz
dCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgnMmQnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNh
bnZhcyB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotRkFJ
TCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zm
c2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9u
ZWQuCitQQVNTIFRlc3QgdGhhdCBvZmZzY3JlZW5DYW52YXMncyBzaXplIGlzIGNvcnJlY3QgYWZ0
ZXIgYmVpbmcgdHJhbnNmZXJyZWQgdG8gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNm
ZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgY29udGV4dCB0aHJvd3MgZXhjZXB0aW9u
LiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0d2ljZSB0aHJv
d3MgZXhjZXB0aW9uLiAKK1BBU1MgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgnMmQnKSBv
biBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uLiAKK1BBU1MgVGVz
dCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgnd2ViZ2wnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVl
bkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3Jl
ZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxlLnct
ZXhwZWN0ZWQudHh0CmluZGV4IDY0ZDc5NWEwYzM4MzA4ODUyMzM2N2VkMTFhZjc2MjZmMDU1Njg3
NTguLjUyN2Q4NjFmOGNmN2ExNDExYjU4Mjk5NTM3NjAxODk3OGQyMTIxZDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNh
bnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXJyYWJsZS53
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2Fu
dmFzLnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsOCBAQAogCi1IYXJu
ZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IERhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNh
biBub3QgYmUgY2xvbmVkLgotCi1GQUlMIFRlc3QgdGhhdCBPZmZzY3JlZW5DYW52YXMncyBzaXpl
IGlzIGNvcnJlY3QgYWZ0ZXIgYmVpbmcgdHJhbnNmZXJyZWQgZnJvbSBhIHdvcmtlci4gYXNzZXJ0
X3VucmVhY2hlZDogZXJyb3IgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFRlc3QgdGhh
dCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSAyZCBjb250ZXh0IHRocm93
cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF90cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQotRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFz
IGEgd2ViZ2wgY29udGV4dCB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRfdHJ1
ZTogZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9m
ZnNjcmVlbkNhbnZhcyB0d2ljZSB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRf
dW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVGVzdCB0aGF0
IGNhbGxpbmcgZ2V0Q29udGV4dCgnMmQnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0
aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFj
aGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVGVzdCB0aGF0IGNhbGxpbmcgZ2V0Q29udGV4dCgn
d2ViZ2wnKSBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIGlu
IGEgd29ya2VyLiBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKK1BBU1MgVGVzdCB0aGF0IE9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRl
ciBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5z
ZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIDJkIGNvbnRleHQgdGhyb3dzIGV4Y2Vw
dGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5D
YW52YXMgdGhhdCBoYXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3Jr
ZXIuIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRo
cm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRD
b250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRp
b24gaW4gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJn
bCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gaW4gYSB3
b3JrZXIuIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389015</attachid>
            <date>2020-01-28 09:20:13 -0800</date>
            <delta_ts>2020-01-28 14:48:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202574-20200128172012.patch</filename>
            <type>text/plain</type>
            <size>41166</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlNzQxY2Q2NjgxNzRi
OTAyYmQxNTk2YzdjNWU1MWE2NmYxNjYzMC4uNDE0NGJhNjI5YmNiN2IxNTM0ZWViYjJlOGM5ZTc0
ZTFiNTAwZDkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVy
YWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NzQKKworICAgICAgICBSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KKworICAgICAgICBCdWcgMjAyNTc0IC0gSW1wbGVtZW50IFtUcmFuc2Zl
cmFibGVdIHByb3BlcnR5IG9mIE9mZnNjcmVlbkNhbnZhcworCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25l
U2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBPZmZz
Y3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OkNsb25lRGVzZXJpYWxp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkT2Zmc2NyZWVu
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuT2Zmc2NyZWVuQ2FudmFzZXNEZXRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6Cisg
ICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNl
Ojp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoZWlnaHQgY29u
c3QpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T2Zmc2NyZWVuQ2FudmFzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
c2NyZWVuQ2FudmFzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnNldEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmdldENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1h
Z2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjb252ZXJ0VG9C
bG9iKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6ZGV0YWNoKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM6Om9yaWdpbkNsZWFuIGNvbnN0KToKKwogMjAxOS0xMC0wNCAgQ2hyaXMg
TG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
IGFuZCBjYW5jZWxBbmltYXRpb25GcmFtZSBzaG91bGQgYmUgcHJlc2VudCBvbiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjg3NGQ1ZGFjZTc3ODM3YmVjZmNiZjQ0MTQ1
ZjNjOWFlMWMzMjVhZS4uYzRjN2UyODgyNzcyNjZkZGVjNzUyMDQxMjEyYjVlMmJjNWZhYTM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC04Nyw2ICs4NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisj
aW5jbHVkZSAiSlNPZmZzY3JlZW5DYW52YXMuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMu
aCIKKyNlbmRpZgorCiAjaWYgQ1BVKEJJR19FTkRJQU4pIHx8IENQVShNSURETEVfRU5ESUFOKSB8
fCBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCiAjZGVmaW5lIEFTU1VNRV9MSVRUTEVfRU5ESUFO
IDAKICNlbHNlCkBAIC0xNjksNiArMTc0LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAg
ICBSVENDZXJ0aWZpY2F0ZVRhZyA9IDQ0LAogI2VuZGlmCiAgICAgSW1hZ2VCaXRtYXBUYWcgPSA0
NSwKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZyA9IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1Miw2
ICszNjAsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAw
eDgwMDAwMDAwOwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJf
dD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9y
aWdpbkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6
aW50MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8
aW1hZ2VCeXRlRGF0YTp1aW50OF90PikKKyAqICAgIHwgT2Zmc2NyZWVuQ2FudmFzVHJhbnNmZXJU
YWcgPHZhbHVlOnVpbnQzMl90PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBz
ZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTU0OSwxMiArNTU4
LDE4IEBAIHRlbXBsYXRlIDw+IGJvb2wgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4oVmVjdG9y
PHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IHVpbnQ4CiBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBD
bG9uZUJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBz
ZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
UykKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9m
ZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICNlbmRpZgogICAgICAgICBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9u
Q29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMp
CiAgICAgewogICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAorI2lmIEVO
QUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICAgICAgb2Zmc2NyZWVuQ2FudmFzZXMsCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICB3YXNtTW9kdWxlcywK
ICNlbmRpZgpAQCAtNTgyLDYgKzU5Nyw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PEpTT2JqZWN0KiwgdWludDMyX3Q+IE9iamVjdFBvb2w7CiAKICAgICBDbG9uZVNlcmlhbGl6ZXIo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYg
YXJyYXlCdWZmZXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0
bWFwcywKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4mIG9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlm
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3
YXNtTW9kdWxlcywKICNlbmRpZgpAQCAtNjAwLDYgKzYxOCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGZpbGxUcmFuc2Zlck1hcChtZXNzYWdlUG9ydHMsIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMp
OwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAoYXJyYXlCdWZmZXJzLCBtX3RyYW5zZmVycmVkQXJy
YXlCdWZmZXJzKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKGltYWdlQml0bWFwcywgbV90cmFu
c2ZlcnJlZEltYWdlQml0bWFwcyk7CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAg
ICAgIGZpbGxUcmFuc2Zlck1hcChvZmZzY3JlZW5DYW52YXNlcywgbV90cmFuc2ZlcnJlZE9mZnNj
cmVlbkNhbnZhc2VzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgpA
QCAtOTQ0LDYgKzk2NSwyMCBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIHZvaWQg
ZHVtcE9mZnNjcmVlbkNhbnZhcyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSYgY29kZSkKKyAgICB7CisgICAgICAgIGF1dG8gaW5kZXggPSBtX3RyYW5zZmVycmVkT2Zmc2Ny
ZWVuQ2FudmFzZXMuZmluZChvYmopOworICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJl
ZE9mZnNjcmVlbkNhbnZhc2VzLmVuZCgpKSB7CisgICAgICAgICAgICB3cml0ZShPZmZzY3JlZW5D
YW52YXNUcmFuc2ZlclRhZyk7CisgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wg
ZHVtcElmVGVybWluYWwoSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNv
ZGUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CkBAIC0xMDk1LDYgKzEx
MzAsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXJDb250
ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKICAgICAgICAgICAgICAgICBDbG9uZVNlcmlh
bGl6ZXIgcmF3S2V5U2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIGR1bW15TWVzc2Fn
ZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgeyB9LAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FO
VkFTKQorICAgICAgICAgICAgICAgICAgICB7IH0sCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TW9kdWxlcywKICNlbmRpZgpAQCAtMTE1
NCw2ICsxMTkyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZHVtcEltYWdlQml0bWFw
KG9iaiwgY29kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICAgICBpZiAob2JqLT5pbmhl
cml0cyh2bSwgSlNPZmZzY3JlZW5DYW52YXM6OmluZm8oKSkpIHsKKyAgICAgICAgICAgICAgICBk
dW1wT2Zmc2NyZWVuQ2FudmFzKG9iaiwgY29kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlh
bGl6ZSBhcyBudWxsLgpAQCAtMTUwMSw2ICsxNTQ1LDkgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQ
b29sIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVy
cmVkQXJyYXlCdWZmZXJzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEltYWdlQml0bWFw
czsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICBPYmplY3RQb29sIG1fdHJhbnNm
ZXJyZWRPZmZzY3JlZW5DYW52YXNlczsKKyNlbmRpZgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCB1aW50MzJfdCwgSWRlbnRpZmllclJlcEhhc2g+IFN0cmlu
Z0NvbnN0YW50UG9vbDsKICAgICBTdHJpbmdDb25zdGFudFBvb2wgbV9jb25zdGFudFBvb2w7CiAg
ICAgSWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKQEAgLTE3ODAsNyArMTgyNywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogCi0gICAgc3RhdGljIERlc2VyaWFs
aXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0
cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZm
ZXJzCisgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3Rv
cjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VC
dWZmZXJzCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgICwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXNlcworI2VuZGlmCisgICAgICAgICwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JG
aWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogc2hhcmVkQnVmZmVycwogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBXYXNtTW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVz
CiAjZW5kaWYKQEAgLTE3ODksNiArMTg0MCw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFidWZm
ZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAgICAgIENsb25l
RGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JV
UkxzLCBibG9iRmlsZVBhdGhzLCBzaGFyZWRCdWZmZXJzLCBXVEZNb3ZlKGltYWdlQnVmZmVycykK
KyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhc2VzKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICAgICAgICAgLCB3YXNtTW9kdWxlcwogI2VuZGlmCkBAIC0xODM4LDExICsxODkyLDE0IEBA
IHByaXZhdGU6CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURl
c2VyaWFsaXplcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBt
ZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50
cywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4m
JiBpbWFnZUJ1ZmZlcnMsCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+JiYgaW1hZ2VCdWZmZXJzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGJ1ZmZlcgorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICAs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzZXMgPSB7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLSAgICAgICAgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcywKKyAgICAgICAgLCBXYXNt
TW9kdWxlQXJyYXkqIHdhc21Nb2R1bGVzID0gbnVsbHB0cgogI2VuZGlmCi0gICAgICAgIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQorICAgICAgICApCiAgICAgICAgIDogQ2xvbmVCYXNl
KGxleGljYWxHbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICAsIG1faXNET01HbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5pbmhlcml0
czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKQEAgLTE4NTQsNiArMTkx
MSwxMCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fYXJyYXlCdWZmZXJzKGFycmF5QnVmZmVyQ29u
dGVudHMgPyBhcnJheUJ1ZmZlckNvbnRlbnRzLT5zaXplKCkgOiAwKQogICAgICAgICAsIG1faW1h
Z2VCdWZmZXJzKFdURk1vdmUoaW1hZ2VCdWZmZXJzKSkKICAgICAgICAgLCBtX2ltYWdlQml0bWFw
cyhtX2ltYWdlQnVmZmVycy5zaXplKCkpCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisg
ICAgICAgICwgbV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKFdURk1vdmUoZGV0YWNoZWRPZmZz
Y3JlZW5DYW52YXNlcykpCisgICAgICAgICwgbV9vZmZzY3JlZW5DYW52YXNlcyhtX2RldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzZXMuc2l6ZSgpKQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAsIG1fd2FzbU1vZHVsZXMod2FzbU1vZHVsZXMpCiAjZW5kaWYKQEAgLTE4NjMs
NiArMTkyNCw5IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHMsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSog
c2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
KyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFz
Pj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgICwgV2FzbU1vZHVsZUFycmF5KiB3YXNtTW9kdWxlcwogI2VuZGlmCkBA
IC0xODgxLDYgKzE5NDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3NoYXJlZEJ1ZmZlcnMo
c2hhcmVkQnVmZmVycykKICAgICAgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVm
ZmVycykpCiAgICAgICAgICwgbV9pbWFnZUJpdG1hcHMobV9pbWFnZUJ1ZmZlcnMuc2l6ZSgpKQor
I2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICAsIG1fZGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXNlcyhXVEZNb3ZlKGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpKQorICAgICAgICAs
IG1fb2Zmc2NyZWVuQ2FudmFzZXMobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLnNpemUoKSkK
KyNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgLCBtX3dhc21Nb2R1bGVz
KHdhc21Nb2R1bGVzKQogI2VuZGlmCkBAIC0yNzE5LDYgKzI3ODcsMjQgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIGdldEpTVmFsdWUoYml0bWFwKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBUykKKyAgICBKU1ZhbHVlIHJlYWRPZmZzY3JlZW5DYW52YXMoKQorICAgIHsK
KyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlS
ZWFkID0gcmVhZChpbmRleCk7CisgICAgICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8
IGluZGV4ID49IG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5zaXplKCkpIHsKKyAgICAgICAg
ICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhdKQorICAgICAgICAgICAgbV9v
ZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgV1RG
TW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQoaW5kZXgpKSk7CisKKyAgICAgICAg
YXV0byBvZmZzY3JlZW5DYW52YXMgPSBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XS5nZXQoKTsK
KyAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUob2Zmc2NyZWVuQ2FudmFzKTsKKyAgICB9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIEpTVmFsdWUgcmVhZFJUQ0NlcnRpZmljYXRl
KCkKICAgICB7CkBAIC0zMDU4LDExICszMTQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEpTVmFsdWUgY3J5cHRvS2V5OwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwotICAgICAgICAgICAgQ2xvbmVEZXNl
cmlhbGl6ZXIgcmF3S2V5RGVzZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9nbG9i
YWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBudWxscHRyLCB7IH0sCi0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotICAgICAgICAgICAgICAgIG51bGxwdHIsCi0jZW5kaWYKLSAgICAgICAgICAg
ICAgICBzZXJpYWxpemVkS2V5KTsKKyAgICAgICAgICAgIENsb25lRGVzZXJpYWxpemVyIHJhd0tl
eURlc2VyaWFsaXplcihtX2xleGljYWxHbG9iYWxPYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBkdW1t
eU1lc3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LCBzZXJpYWxpemVkS2V5KTsKICAgICAgICAgICAg
IGlmICghcmF3S2V5RGVzZXJpYWxpemVyLnJlYWRDcnlwdG9LZXkoY3J5cHRvS2V5KSkgewogICAg
ICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpA
QCAtMzA5NCw2ICszMTc2LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgY2FzZSBJbWFn
ZUJpdG1hcFRhZzoKICAgICAgICAgICAgIHJldHVybiByZWFkSW1hZ2VCaXRtYXAoKTsKKyNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgY2FzZSBPZmZzY3JlZW5DYW52YXNUcmFu
c2ZlclRhZzoKKyAgICAgICAgICAgIHJldHVybiByZWFkT2Zmc2NyZWVuQ2FudmFzKCk7CisjZW5k
aWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRh
ZyBiYWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMzEyMyw2ICszMjA5LDEw
IEBAIHByaXZhdGU6CiAgICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBtX3NoYXJlZEJ1ZmZl
cnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBi
b29sPj4gbV9pbWFnZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IG1f
aW1hZ2VCaXRtYXBzOworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+PiBtX29mZnNj
cmVlbkNhbnZhc2VzOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21N
b2R1bGVBcnJheSogbV93YXNtTW9kdWxlczsKICNlbmRpZgpAQCAtMzM0MCw2ICszNDMwLDkgQEAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4
X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXEKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6cGFp
cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICwgc3RkOjp1bmlxdWVf
cHRyPFdhc21Nb2R1bGVBcnJheT4gd2FzbU1vZHVsZXNBcnJheQogI2VuZGlmCkBAIC0zMzQ4LDYg
KzM0NDEsOSBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShW
ZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV9hcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9z
aGFyZWRCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJh
eSkpCiAgICAgLCBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKGltYWdlQnVmZmVycykpCisjaWYgRU5B
QkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgLCBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMo
V1RGTW92ZShkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKSkKKyNlbmRpZgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAsIG1fd2FzbU1vZHVsZXNBcnJheShXVEZNb3ZlKHdhc21Nb2R1bGVz
QXJyYXkpKQogI2VuZGlmCkBAIC0zNDM1LDEyICszNTMxLDE4IEBAIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
JiBsZXhpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CiAgICAgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VC
aXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
KyAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1bW15T2Zmc2NyZWVuQ2FudmFz
ZXM7CisjZW5kaWYKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFy
cmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5
IGR1bW15TW9kdWxlczsKICNlbmRpZgogICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1t
eVNoYXJlZEJ1ZmZlcnM7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxp
emUoJmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlB
cnJheUJ1ZmZlcnMsIGR1bW15SW1hZ2VCaXRtYXBzLAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FO
VkFTKQorICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogICAgICAgICBkdW1teU1vZHVsZXMsCiAjZW5kaWYKQEAgLTM0NTYsMTEg
KzM1NTgsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aQogICAgIGlmIChjb2RlICE9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIG51bGxwdHIsIG51bGxwdHIsIHsgfQotI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgLCBudWxscHRyCi0jZW5kaWYKLSAgICAgICAg
ICAgICkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShX
VEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyLCBudWxscHRyLCB7IH0pKTsKIH0KIAog
c3RhdGljIGJvb2wgY29udGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VC
aXRtYXA+PiYgaW1hZ2VCaXRtYXBzKQpAQCAtMzQ3MywxMSArMzU3MSwyOSBAQCBzdGF0aWMgYm9v
bCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBp
bWFnZUJpdG1hcHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVMpCitzdGF0aWMgYm9vbCBjYW5PZmZzY3JlZW5DYW52YXNlc0RldGFjaChjb25zdCBW
ZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+JiBvZmZzY3JlZW5DYW52YXNlcykKK3sKKyAg
ICBIYXNoU2V0PE9mZnNjcmVlbkNhbnZhcyo+IHZpc2l0ZWQ7CisgICAgZm9yIChhdXRvJiBvZmZz
Y3JlZW5DYW52YXMgOiBvZmZzY3JlZW5DYW52YXNlcykgeworICAgICAgICBpZiAoIW9mZnNjcmVl
bkNhbnZhcy0+Y2FuRGV0YWNoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IC8vIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYWRkLCB3ZSBzaG91bGQgbm90IGVuY291bnRl
ciBkdXBsaWNhdGVzLgorICAgICAgICBpZiAoIXZpc2l0ZWQuYWRkKG9mZnNjcmVlbkNhbnZhcy5n
ZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorI2VuZGlmCisKIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+
PiYmIHRyYW5zZmVyTGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9y
dHMsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOwogICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+
IGFycmF5QnVmZmVyczsKICAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gaW1hZ2VCaXRt
YXBzOworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIFZlY3RvcjxSZWZQdHI8T2Zm
c2NyZWVuQ2FudmFzPj4gb2Zmc2NyZWVuQ2FudmFzZXM7CisjZW5kaWYKICAgICBmb3IgKGF1dG8m
IHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlzdCkgewogICAgICAgICBpZiAoYXV0byBhcnJheUJ1
ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih2bSwgdHJhbnNmZXJhYmxlLmdldCgp
KSkgewogICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5pc05ldXRlcmVkKCkpCkBAIC0zNTA0
LDExICszNjIwLDIyIEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAg
IGlmIChhdXRvIG9mZnNjcmVlbkNhbnZhcyA9IEpTT2Zmc2NyZWVuQ2FudmFzOjp0b1dyYXBwZWQo
dm0sIHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIG9mZnNjcmVlbkNhbnZhc2Vz
LmFwcGVuZChXVEZNb3ZlKG9mZnNjcmVlbkNhbnZhcykpOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhQ2xv
bmVFcnJvciB9OwogICAgIH0KIAogICAgIGlmIChjb250YWluc0R1cGxpY2F0ZXMoaW1hZ2VCaXRt
YXBzKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CisjaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgaWYgKCFjYW5PZmZzY3JlZW5DYW52YXNlc0Rl
dGFjaChvZmZzY3JlZW5DYW52YXNlcykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOwpAQCAtMzUxNyw2ICszNjQ0LDkgQEAgRXhjZXB0
aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCBpbWFnZUJpdG1hcHMsCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAgICAgIG9m
ZnNjcmVlbkNhbnZhc2VzLAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICB3YXNtTW9kdWxlcywgCiAjZW5kaWYKQEAgLTM1MzEsNyArMzY2MSwxNiBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoSlNHbG9iYWxPYgogCiAgICAgYXV0byBpbWFnZUJ1ZmZlcnMgPSBJbWFnZUJpdG1hcDo6ZGV0
YWNoQml0bWFwcyhXVEZNb3ZlKGltYWdlQml0bWFwcykpOwogCisjaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVMpCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNh
bnZhcz4+IGRldGFjaGVkQ2FudmFzZXM7CisgICAgZm9yIChhdXRvIG9mZnNjcmVlbkNhbnZhcyA6
IG9mZnNjcmVlbkNhbnZhc2VzKQorICAgICAgICBkZXRhY2hlZENhbnZhc2VzLmFwcGVuZChvZmZz
Y3JlZW5DYW52YXMtPmRldGFjaCgpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJp
YWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
cnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCisjaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVMpCisgICAgICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkQ2FudmFzZXMpCisj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICAgICAgLCBtYWtlVW5p
cXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKQEAgLTM1ODQsNyArMzcy
MywxMSBAQCBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAKIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiBtZXNzYWdlUG9ydHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
dGhyb3dFeGNlcHRpb25zKQogewotICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBD
bG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VCdWZmZXJzKSwgbV9hcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMs
IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQorICAgIERlc2VyaWFsaXphdGlvblJl
c3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoJmxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1faW1hZ2VCdWZm
ZXJzKQorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgICAgICAsIFdURk1vdmUobV9k
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKQorI2VuZGlmCisgICAgICAgICwgbV9hcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkuZ2V0KCksIG1fZGF0YSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIG1f
c2hhcmVkQnVmZmVyQ29udGVudHNBcnJheS5nZXQoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgLCBtX3dhc21Nb2R1bGVzQXJyYXkuZ2V0KCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBlMjg4
ZjI5NGU5ZjI5N2I3NjJmZmMyNTg2MTUyYjUwZTU2ZmMzN2ZmLi5jNmMzZjA2ZmVjMzdmYThjOTY0
MjgxMjU4ZGM2NzEyOWE5NWY2NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNDcsNiArNDcsOSBAQCBjbGFzcyBNb2R1
bGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
KQorY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7CisjZW5kaWYKIGNsYXNzIElEQlZhbHVl
OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBNZXNzYWdlUG9ydDsKQEAgLTExMyw4ICsxMTYs
MTEgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4pOwogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVu
aXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKKyNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERl
dGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiA9IHsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQotICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+CisgICAg
ICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gPSBudWxscHRyCiAjZW5kaWYK
ICAgICAgICAgKTsKIApAQCAtMTIyLDYgKzEyOCw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9zaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgYm9vbD4+IG1faW1hZ2VCdWZmZXJzOworI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXM7CisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVBcnJheT4gbV93
YXNtTW9kdWxlc0FycmF5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NhbnZhc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCmluZGV4IGQy
MDVmZTgxODgwMmM2OGQxYTY1NTg3MjAwYzE3MTk5NzY5NGRiMTEuLjBkYTZlOGI2MmVkODBiOTUz
ODQ3NzI3NTBmYTQ0OTFmYjNhYzBhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FudmFzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCkBAIC02
NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW5DYW52YXMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVBhaW50
Q2FudmFzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KLSAgICB1bnNpZ25lZCBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS5oZWlnaHQoKTsgfQogICAgIGNvbnN0
IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIEltYWdlQnVm
ZmVyKiBidWZmZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAppbmRleCA3NTVmMTFlZjg5ZTExODFiZTA2ZDVlYTJmMDA3ODY5NmUzOWJlNGQxLi45ODU3MTEw
YWE5ZWU3NzRhYTgxYTRlYmMwNThjMjlhNTRmODliNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwCkBAIC00MywxMSArNDMsMzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2Zmc2NyZWVuQ2FudmFzKTsKIAorRGV0
YWNoZWRPZmZzY3JlZW5DYW52YXM6OkRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgb3Jp
Z2luQ2xlYW4pCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX3NpemUo
c2l6ZSkKKyAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xlYW4pCit7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworfQorCiBSZWY8T2Zmc2Ny
ZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7
CiB9CiAKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNj
cmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKK3sKKyAgICBSZWY8T2Zmc2NyZWVuQ2FudmFz
PiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIGRldGFjaGVk
Q2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRDYW52YXMtPnNpemUoKS5oZWlnaHQoKSkp
OworICAgIGNsb25lLT5zZXRJbWFnZUJ1ZmZlcihkZXRhY2hlZENhbnZhcy0+dGFrZUltYWdlQnVm
ZmVyKCkpOworICAgIGlmICghZGV0YWNoZWRDYW52YXMtPm9yaWdpbkNsZWFuKCkpCisgICAgICAg
IGNsb25lLT5zZXRPcmlnaW5UYWludGVkKCk7CisKKyAgICByZXR1cm4gY2xvbmU7Cit9CisKIE9m
ZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgOiBDYW52YXNCYXNl
KEludFNpemUod2lkdGgsIGhlaWdodCkpCiAgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cigmY29udGV4dCkKQEAgLTYyLDEzICs4NCwzMSBAQCBPZmZzY3JlZW5DYW52YXM6On5PZmZzY3Jl
ZW5DYW52YXMoKQogICAgIHNldEltYWdlQnVmZmVyKG51bGxwdHIpOwogfQogCit1bnNpZ25lZCBP
ZmZzY3JlZW5DYW52YXM6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAobV9kZXRhY2hlZCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIENhbnZhc0Jhc2U6OndpZHRoKCk7Cit9CisKK3Vu
c2lnbmVkIE9mZnNjcmVlbkNhbnZhczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAobV9kZXRh
Y2hlZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIENhbnZhc0Jhc2U6OmhlaWdodCgp
OworfQorCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0V2lkdGgodW5zaWduZWQgbmV3V2lkdGgp
CiB7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAgICAgIHJldHVybjsKICAgICBzZXRTaXplKElu
dFNpemUobmV3V2lkdGgsIGhlaWdodCgpKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpz
ZXRIZWlnaHQodW5zaWduZWQgbmV3SGVpZ2h0KQogeworICAgIGlmIChtX2RldGFjaGVkKQorICAg
ICAgICByZXR1cm47CiAgICAgc2V0U2l6ZShJbnRTaXplKHdpZHRoKCksIG5ld0hlaWdodCkpOwog
fQogCkBAIC04MCw2ICsxMjAsOSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0U2l6ZShjb25z
dCBJbnRTaXplJiBuZXdTaXplKQogCiBFeGNlcHRpb25PcjxPZmZzY3JlZW5SZW5kZXJpbmdDb250
ZXh0PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUsIFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPj4mJiBhcmd1bWVudHMpCiB7CisgICAgaWYgKG1fZGV0YWNoZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCiAgICAgaWYgKGNv
bnRleHRUeXBlID09IFJlbmRlcmluZ0NvbnRleHRUeXBlOjpfMmQpIHsKICAgICAgICAgaWYgKG1f
Y29udGV4dCkgewogICAgICAgICAgICAgaWYgKCFpczxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpKQpAQCAtMTE4LDcgKzE2MSw3IEBAIEV4Y2VwdGlvbk9yPE9m
ZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dChKU0M6
OkpTR2xvYmFsCiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNh
bnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKIHsKLSAgICBpZiAoIW1fY29udGV4dCkKKyAg
ICBpZiAobV9kZXRhY2hlZCB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIGlmIChpczxPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpKSB7CkBAIC0xOTIsNyArMjM1LDcgQEAgdm9pZCBP
ZmZzY3JlZW5DYW52YXM6OmNvbnZlcnRUb0Jsb2IoSW1hZ2VFbmNvZGVPcHRpb25zJiYgb3B0aW9u
cywgUmVmPERlZmVycmVkUHIKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEluZGV4U2l6ZUVycm9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWJ1ZmZlcigpKSB7CisgICAgaWYg
KG1fZGV0YWNoZWQgfHwgIWJ1ZmZlcigpKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjYsNiArMjY5LDIx
IEBAIFNlY3VyaXR5T3JpZ2luKiBPZmZzY3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2luKCkgY29u
c3QKICAgICByZXR1cm4gJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5zZWN1cml0eU9yaWdp
bigpOwogfQogCitib29sIE9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1fZGV0YWNoZWQgJiYgIW1fY29udGV4dDsKK30KKworc3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmRldGFjaCgpCit7Cisg
ICAgaWYgKCFjYW5EZXRhY2goKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX2Rl
dGFjaGVkID0gdHJ1ZTsKKworICAgIHJldHVybiBtYWtlVW5pcXVlPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPih0YWtlSW1hZ2VCdWZmZXIoKSwgc2l6ZSgpLCBvcmlnaW5DbGVhbigpKTsKK30KKwog
Q1NTVmFsdWVQb29sJiBPZmZzY3JlZW5DYW52YXM6OmNzc1ZhbHVlUG9vbCgpCiB7CiAgICAgYXV0
byogY29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0yNDgs
NyArMzA2LDggQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52YXM6OnRha2VJ
bWFnZUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVl
OworICAgIGlmICghbV9kZXRhY2hlZCkKKyAgICAgICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIg
PSB0cnVlOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBwcmltYXJpbHkgZm9yIHVzZSB3aXRo
IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCwgd2hpY2gKICAgICAvLyByZXF1aXJlcyB0aGF0IHRoZSBj
YW52YXMgYml0bWFwIHJlZmVyIHRvIGEgbmV3LCBibGFuayBiaXRtYXAgb2YgdGhlIHNhbWUKQEAg
LTI1Nyw3ICszMTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IE9mZnNjcmVlbkNh
bnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsK
KyAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9kZXRhY2hlZCA/IG51bGxwdHIgOiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOwogfQog
CiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmgKaW5kZXggNjU5NTc4OWQ1YzgzNDY1MjgxNTYxYTNiMDQzMGJkNWQyY2Q2MWVlOC4u
Njc0NGY3MmY3ZWYwZjdiMzUzZDBjN2NhNDg2OThlYzFlMjRkMWU5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC01NCw2ICs1NCwyMiBAQCB1c2luZyBPZmZzY3JlZW5S
ZW5kZXJpbmdDb250ZXh0ID0gVmFyaWFudDxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dAogdXNpbmcgT2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dCA9IFZhcmlhbnQ8UmVmUHRy
PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4+OwogI2VuZGlmCiAKK2NsYXNzIERl
dGFjaGVkT2Zmc2NyZWVuQ2FudmFzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhcyk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBvcmlnaW5DbGVhbik7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHRha2VJbWFnZUJ1ZmZlcigpOworICAgIGNvbnN0IEludFNpemUm
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIG9yaWdpbkNsZWFuKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
Ym9vbCBtX29yaWdpbkNsZWFuOworfTsKKwogY2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVuQ2FudmFzPiwgcHVibGljIENhbnZhc0Jhc2UsIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZnNjcmVlbkNhbnZhcyk7
CiBwdWJsaWM6CkBAIC02OSw4ICs4NSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRp
YyBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworICAgIHN0YXRpYyBSZWY8T2Zmc2NyZWVu
Q2FudmFzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJik7CiAgICAgdmlydHVhbCB+T2Zmc2NyZWVuQ2FudmFz
KCk7CiAKKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGhl
aWdodCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQpOwogICAgIHZv
aWQgc2V0SGVpZ2h0KHVuc2lnbmVkKTsKIApAQCAtODgsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFz
Q3JlYXRlZEltYWdlQnVmZmVyOyB9CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4oKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuRGV0YWNoKCkgY29uc3Q7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiBkZXRhY2goKTsKKwogICAgIENT
U1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
CkBAIC0xMTksNiArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIG1faGFzQ3JlYXRlZEltYWdl
QnVmZmVyIG1lYW5zIHdlIHRyaWVkIHRvIG1hbGxvYyB0aGUgYnVmZmVyLiBXZSBkaWRuJ3QgbmVj
ZXNzYXJpbHkgZ2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZl
ciB7IGZhbHNlIH07CisKKyAgICBib29sIG1fZGV0YWNoZWQgeyBmYWxzZSB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOTcwMmFkNzhkMDI1MGVmOTEwZTAyMTQz
MjIwMjY5OTEwNThmNTljMC4uNjRhMjQ5MTgxZmRhYzk3ZDNhMjE2Mjc1OTQ2ZmQwYTlkNzBjMzU3
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTkt
MTAtMTAgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBbVHJhbnNmZXJhYmxlXSBwcm9wZXJ0eSBvZiBPZmZzY3JlZW5DYW52YXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252ZXJ0
LnRvLmJsb2ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5i
bG9iLnctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50
by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRy
YW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVl
bmNhbnZhcy50cmFuc2ZlcnJhYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMS0yNSAgQ2hyaXMg
TG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVDb2xvciBzYWZlIHRvIHVzZSB3aXRoaW4gYSB3b3JrZXIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxv
Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNjcmVlbmNhbnZhcy5jb252
ZXJ0LnRvLmJsb2ItZXhwZWN0ZWQudHh0CmluZGV4IDhmZDllYTk2NTBmZmVhNzhmYWVkZDRlOGM3
YzUyODIwNjk4NTdiOTguLjJmZWRkZDI4OGJjYWE1NDliZDQ2Nzc4ODJlYTVhM2M4YWUxYzE1OGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
b2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFzLmNvbnZlcnQu
dG8uYmxvYi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZlcnQtdG8tYmxvYi9vZmZzY3JlZW5j
YW52YXMuY29udmVydC50by5ibG9iLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgUEFTUyBU
ZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1bHQgdHlwZSBwcm9kdWNlcyBjb3JyZWN0
IHJlc3VsdAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHBuZyBwcm9kdWNlcyBj
b3JyZWN0IHJlc3VsdCAKIFBBU1MgVGVzdCB0aGF0IGNvbnZlcnRUb0Jsb2Igd2l0aCBqcGdlIHBy
b2R1Y2VzIGNvcnJlY3QgcmVzdWx0IAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRo
IHdlYnAgcHJvZHVjZXMgY29ycmVjdCByZXN1bHQgCi1GQUlMIFRlc3QgdGhhdCBjYWxsIGNvbnZl
cnRUb0Jsb2Igb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBU
aGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgorUEFTUyBUZXN0IHRoYXQgY2FsbCBjb252ZXJ0
VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24gCiBQ
QVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Igb24gYSBPZmZzY3JlZW5DYW52YXMgd2l0
aCBzaXplIDAgdGhyb3dzIGV4Y2VwdGlvbiAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRv
QmxvYiBvbiBhIE9mZnNjcmVlbkNhbnZhcyB3aXRoIHRhaW50ZWQgb3JpZ2luIHRocm93cyBleGNl
cHRpb24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zmc2NyZWVuY2FudmFz
LmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy9jb252ZXJ0LXRvLWJsb2Ivb2Zm
c2NyZWVuY2FudmFzLmNvbnZlcnQudG8uYmxvYi53LWV4cGVjdGVkLnR4dAppbmRleCBhOTZjMWI0
NTg1NDQ1YjFmNmYxMmViYTM1YTA3YzAwN2JmNmM2YWQ0Li4yOWE5OGMxYzEwODM2MzNjZTdlOGJm
MWE0MmI1Y2RhZTRhNGI2ZDMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvY29udmVydC10by1ibG9iL29mZnNj
cmVlbmNhbnZhcy5jb252ZXJ0LnRvLmJsb2Iudy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL2NvbnZl
cnQtdG8tYmxvYi9vZmZzY3JlZW5jYW52YXMuY29udmVydC50by5ibG9iLnctZXhwZWN0ZWQudHh0
CkBAIC0xLDYgKzEsNCBAQAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IERhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotCiBQQVNTIFRlc3QgdGhh
dCBjb252ZXJ0VG9CbG9iIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJvZHVjZXMgY29ycmVjdCBy
ZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252ZXJ0VG9CbG9iIHdpdGggZGVm
YXVsdCB0eXBlLzEuMCBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29ya2Vy
IAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGRlZmF1bHQgdHlwZS8wLjIgcXVh
bGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBpbiBhIHdvcmtlciAKQEAgLTEzLDcgKzExLDcg
QEAgUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIGpwZWcvMC4yIHF1YWxpdHkgcHJv
ZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYQogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3
aXRoIHdlYnAvZGVmYXVsdCBxdWFsaXR5IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0IGluIGEgd29y
a2VyIAogUEFTUyBUZXN0IHRoYXQgY29udmVydFRvQmxvYiB3aXRoIHdlYnAvMS4wIHF1YWxpdHkg
cHJvZHVjZXMgY29ycmVjdCByZXN1bHQgaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjb252
ZXJ0VG9CbG9iIHdpdGggd2VicC8wLjIgcXVhbGl0eSBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdCBp
biBhIHdvcmtlciAKLUZBSUwgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIGRldGFj
aGVkIE9mZnNjcmVlbkNhbnZhcyB0aHJvd3MgZXhjZXB0aW9uIGluIGEgd29ya2VyIGFzc2VydF91
bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBUZXN0IHRoYXQg
Y2FsbCBjb252ZXJ0VG9CbG9iIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBl
eGNlcHRpb24gaW4gYSB3b3JrZXIgCiBQQVNTIFRlc3QgdGhhdCBjYWxsIGNvbnZlcnRUb0Jsb2Ig
b24gYSBPZmZzY3JlZW5DYW52YXMgd2l0aCBzaXplIDAgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdv
cmtlciAKIFBBU1MgVGVzdCB0aGF0IGNhbGwgY29udmVydFRvQmxvYiBvbiBhIE9mZnNjcmVlbkNh
bnZhcyB3aXRoIHRhaW50ZWQgb3JpZ2luIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIgCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
b2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJh
bnNmZXIudG8uaW1hZ2ViaXRtYXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2Fu
dmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQK
aW5kZXggZmUxZTkwZTdiM2FlYmQ3MDhjZTYwZDJiM2U5ODQyZDgwNDVkYmY5OC4uNTZlMWQ3ZTY2
OWI5YjIyN2JhMDE1YTJmNzE1N2Y0MGI1NTJjY2NkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZz
Y3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50
cmFuc2Zlci50by5pbWFnZWJpdG1hcC1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw2IEBAIFBBU1Mg
VGVzdCB0aGF0IHRyYW5zZmVyVG9JbWFnZUJpdG1hcCByZXR1cm5zIGFuIEltYWdlQml0bWFwIHdp
dGggY29ycmVjdCB3aWR0aCBhCiBGQUlMIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAg
cmV0dXJucyBhbiBJbWFnZUJpdG1hcCB3aXRoIGNvcnJlY3QgY29sb3IgYXNzZXJ0X2VxdWFsczog
QWxwaGEgY2hhbm5lbCBvZiB0aGUgcGl4ZWwgYXQgKDUwLCAyNSkgZXhwZWN0ZWQgMjU1IGJ1dCBn
b3QgMAogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHdvbid0IGNoYW5nZSBj
b250ZXh0J3MgcHJvcGVydHkgCiBGQUlMIFRlc3QgdGhhdCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAg
cHJlc2VydmVzIHRyYW5zZm9ybSBhc3NlcnRfZXF1YWxzOiBHcmVlbiBjaGFubmVsIG9mIHRoZSBw
aXhlbCBhdCAoMjMsIDI1KSBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCi1GQUlMIFRlc3QgdGhhdCBj
YWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRldGFjaGVkIE9mZnNjcmVlbkNhbnZhcyB0
aHJvd3MgYW4gZXhjZXB0aW9uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCitQQVNTIFRl
c3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCBvbiBhIGRldGFjaGVkIE9mZnNjcmVl
bkNhbnZhcyB0aHJvd3MgYW4gZXhjZXB0aW9uIAogUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXJUb0lt
YWdlQml0bWFwIHdpdGhvdXQgYSBjb250ZXh0IHRocm93cyBhbiBleGNlcHRpb24gCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIu
dG8uaW1hZ2ViaXRtYXAudy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMv
b2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVyLnRvLmltYWdlYml0bWFwLnctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDlkNmRiZTJlM2M3YzNjZTMxZjMyNzI2MmYwMjYyZmYwNWQ5ODI0OTQuLjEzYTAzZWIwNzgy
ZmI3YTM2YTlmZjQ5MmMwMDVjYTkwNjE0OWJmODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2Ny
ZWVuLWNhbnZhcy9vZmZzY3JlZW5jYW52YXMudHJhbnNmZXIudG8uaW1hZ2ViaXRtYXAudy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50
cmFuc2Zlci50by5pbWFnZWJpdG1hcC53LWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDYgQEAgUEFT
UyBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAgdHdpY2UgcmV0dXJucyBhbiBJ
bWFnZUJpdG1hcCB3aXRoIGNvcnIKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdl
Qml0bWFwIHR3aWNlIG9uIGEgYWxwaGEtZGlzYWJsZWQgY29udGV4dCByZXR1cm5zIGFuIEltYWdl
Qml0bWFwIHdpdGggY29ycmVjdCBjb2xvciBpbiBhIHdvcmtlciBhc3NlcnRfYXJyYXlfZXF1YWxz
OiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAyNTUgYnV0IGdvdCAwCiBQQVNTIFRlc3QgdGhhdCB0cmFu
c2ZlclRvSW1hZ2VCaXRtYXAgd29uJ3QgY2hhbmdlIGNvbnRleHQncyBwcm9wZXJ0eSBpbiBhIHdv
cmtlciAKIEZBSUwgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIHByZXNlcnZl
cyB0cmFuc2Zvcm0gaW4gYSB3b3JrZXIgYXNzZXJ0X2FycmF5X2VxdWFsczogcHJvcGVydHkgMSwg
ZXhwZWN0ZWQgMjU1IGJ1dCBnb3QgMAotRkFJTCBUZXN0IHRoYXQgY2FsbCB0cmFuc2ZlclRvSW1h
Z2VCaXRtYXAgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGFuIGV4Y2VwdGlv
biBpbiBhIHdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxl
IGNvZGUKK1BBU1MgVGVzdCB0aGF0IGNhbGwgdHJhbnNmZXJUb0ltYWdlQml0bWFwIG9uIGEgZGV0
YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBhbiBleGNlcHRpb24gaW4gYSB3b3JrZXIgCiBQ
QVNTIFRlc3QgdGhhdCBjYWxsIHRyYW5zZmVyVG9JbWFnZUJpdG1hcCB3aXRob3V0IGEgY29udGV4
dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGEgd29ya2VyIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhl
LW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJh
YmxlLWV4cGVjdGVkLnR4dAppbmRleCBkMjMyNjViMDI5ZWRiYjA2ZWJkZjE1MjFkMTk3NWNjNjg1
MDM4ZGM0Li42YTFiZWIwYWI1YjcwZmIxNGE1OTFjMGViZDc5Njk1ZmNjMjEwMTIwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFi
bGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXJyYWJsZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw3IEBACiAKLUZBSUwg
VGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0
cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KLUZB
SUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIGNvbnRl
eHQgdGhyb3dzIGV4Y2VwdGlvbi4gYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7b2Zmc2NyZWVuQ2FudmFzfSwgW29m
ZnNjcmVlbkNhbnZhc10pOwotICAgICAgICB9IiB0aHJldyBvYmplY3QgIkRhdGFDbG9uZUVycm9y
OiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIgdGhhdCBpcyBub3QgYSBET01FeGNlcHRp
b24gSW52YWxpZFN0YXRlRXJyb3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVhbCB0byAyNSwgZXhw
ZWN0ZWQgMTEKLUZBSUwgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0d2lj
ZSB0aHJvd3MgZXhjZXB0aW9uLiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgotRkFJTCBU
ZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVu
Q2FudmFzIHRocm93cyBleGNlcHRpb24uIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCi1G
QUlMIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJ3dlYmdsJykgb24gYSBkZXRhY2hlZCBP
ZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbi4gVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4KK1BBU1MgVGVzdCB0aGF0IG9mZnNjcmVlbkNhbnZhcydzIHNpemUgaXMgY29ycmVjdCBh
ZnRlciBiZWluZyB0cmFuc2ZlcnJlZCB0byBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFu
c2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBoYXMgYSBjb250ZXh0IHRocm93cyBleGNlcHRp
b24uIAorUEFTUyBUZXN0IHRoYXQgdHJhbnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRo
cm93cyBleGNlcHRpb24uIAorUEFTUyBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcp
IG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAorUEFTUyBU
ZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2Ny
ZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGhlLW9mZnNj
cmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUudy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGhlLW9mZnNjcmVlbi1jYW52YXMvb2Zmc2NyZWVuY2FudmFzLnRyYW5zZmVycmFibGUu
dy1leHBlY3RlZC50eHQKaW5kZXggNjRkNzk1YTBjMzgzMDg4NTIzMzY3ZWQxMWFmNzYyNmYwNTU2
ODc1OC4uNTI3ZDg2MWY4Y2Y3YTE0MTFiNTgyOTk1Mzc2MDE4OTc4ZDIxMjFkNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RoZS1vZmZzY3JlZW4tY2FudmFzL29mZnNjcmVlbmNhbnZhcy50cmFuc2ZlcnJhYmxl
LnctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90aGUtb2Zmc2NyZWVuLWNhbnZhcy9vZmZzY3JlZW5j
YW52YXMudHJhbnNmZXJyYWJsZS53LWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw4IEBACiAKLUhh
cm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gRGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3Qg
Y2FuIG5vdCBiZSBjbG9uZWQuCi0KLUZBSUwgVGVzdCB0aGF0IE9mZnNjcmVlbkNhbnZhcydzIHNp
emUgaXMgY29ycmVjdCBhZnRlciBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIGEgd29ya2VyLiBhc3Nl
cnRfdW5yZWFjaGVkOiBlcnJvciBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVGVzdCB0
aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVlbkNhbnZhcyB0aGF0IGhhcyBhIDJkIGNvbnRleHQgdGhy
b3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdGhhdCBo
YXMgYSB3ZWJnbCBjb250ZXh0IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF90
cnVlOiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IHRoYXQgdHJhbnNmZXIgYW4g
T2Zmc2NyZWVuQ2FudmFzIHR3aWNlIHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2Vy
dF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0IHRo
YXQgY2FsbGluZyBnZXRDb250ZXh0KCcyZCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFz
IHRocm93cyBleGNlcHRpb24gaW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJl
YWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBUZXN0IHRoYXQgY2FsbGluZyBnZXRDb250ZXh0
KCd3ZWJnbCcpIG9uIGEgZGV0YWNoZWQgT2Zmc2NyZWVuQ2FudmFzIHRocm93cyBleGNlcHRpb24g
aW4gYSB3b3JrZXIuIGFzc2VydF91bnJlYWNoZWQ6IGVycm9yIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQorUEFTUyBUZXN0IHRoYXQgT2Zmc2NyZWVuQ2FudmFzJ3Mgc2l6ZSBpcyBjb3JyZWN0IGFm
dGVyIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gYSB3b3JrZXIuIAorUEFTUyBUZXN0IHRoYXQgdHJh
bnNmZXIgYW4gT2Zmc2NyZWVuQ2FudmFzIHRoYXQgaGFzIGEgMmQgY29udGV4dCB0aHJvd3MgZXhj
ZXB0aW9uIGluIGEgd29ya2VyLiAKK1BBU1MgVGVzdCB0aGF0IHRyYW5zZmVyIGFuIE9mZnNjcmVl
bkNhbnZhcyB0aGF0IGhhcyBhIHdlYmdsIGNvbnRleHQgdGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdv
cmtlci4gCitQQVNTIFRlc3QgdGhhdCB0cmFuc2ZlciBhbiBPZmZzY3JlZW5DYW52YXMgdHdpY2Ug
dGhyb3dzIGV4Y2VwdGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5nIGdl
dENvbnRleHQoJzJkJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2Vw
dGlvbiBpbiBhIHdvcmtlci4gCitQQVNTIFRlc3QgdGhhdCBjYWxsaW5nIGdldENvbnRleHQoJ3dl
YmdsJykgb24gYSBkZXRhY2hlZCBPZmZzY3JlZW5DYW52YXMgdGhyb3dzIGV4Y2VwdGlvbiBpbiBh
IHdvcmtlci4gCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>