<?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>189625</bug_id>
          
          <creation_ts>2018-09-14 13:00:31 -0700</creation_ts>
          <short_desc>WebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample</short_desc>
          <delta_ts>2018-09-25 17:25:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1459848</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-14 13:00:31 -0700</bug_when>
    <thetext>WebGL 2 Conformance: primitive restart and draw_primitive_restart WebGL2 sample</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459849</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-14 13:01:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/42882620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460364</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-17 15:28:02 -0700</bug_when>
    <thetext>Patch is ready to go; waiting on updates to webgl testing framework before uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461608</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-20 17:14:45 -0700</bug_when>
    <thetext>Thanks to the new tests, regressions: Unexpected text-only failures (6)
  webgl/2.0.0/conformance/extensions/angle-instanced-arrays-out-of-bounds.html [ Failure ]
  webgl/2.0.0/conformance/rendering/draw-elements-out-of-bounds.html [ Failure ]
  webgl/2.0.0/conformance2/rendering/instanced-arrays.html [ Failure ]
  webgl/2.0.0/conformance2/rendering/instanced-rendering-bug.html [ Failure ]
  webgl/2.0.0/conformance2/rendering/out-of-bounds-index-buffers-after-copying.html [ Failure ]
  webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object.html [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462161</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-21 16:26:50 -0700</bug_when>
    <thetext>Regressions are fixed (on mac), but unfortunately there are no new passes within the webgl/conformance and conformance2 tests, only in the long-running deqp suite.

Whipping up a basic test case to verify primitive restart functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463310</commentid>
    <comment_count>5</comment_count>
      <attachid>350780</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-25 13:34:10 -0700</bug_when>
    <thetext>Created attachment 350780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463311</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-25 13:36:49 -0700</bug_when>
    <thetext>Attachment 350780 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:721:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:722:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:723:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463322</commentid>
    <comment_count>7</comment_count>
      <attachid>350780</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-09-25 13:53:34 -0700</bug_when>
    <thetext>Comment on attachment 350780
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:2009
&gt; +unsigned WebGLRenderingContextBase::getMaxIndex(const RefPtr&lt;JSC::ArrayBuffer&gt; elementArrayBuffer, GC3Dintptr uoffset, GC3Dsizei n)

I think you should pass in numElements raw, and do the / sizeof(T) inside here, the same way you do with the uoffset.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:2053
&gt; +        maxIndex = getMaxIndex&lt;GC3Duint&gt;(buffer, offset, count);

... although I assume count here has already take the sizeof(T) into account?

&gt; LayoutTests/webgl/webgl2-primitive-restart-expected.html:54
&gt; +        if(!isWebGL2) {

Nit: if &lt;space&gt; (</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463336</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-25 14:16:38 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #7)
&gt; Comment on attachment 350780 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350780&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:2009
&gt; &gt; +unsigned WebGLRenderingContextBase::getMaxIndex(const RefPtr&lt;JSC::ArrayBuffer&gt; elementArrayBuffer, GC3Dintptr uoffset, GC3Dsizei n)
&gt; 
&gt; I think you should pass in numElements raw, and do the / sizeof(T) inside
&gt; here, the same way you do with the uoffset.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:2053
&gt; &gt; +        maxIndex = getMaxIndex&lt;GC3Duint&gt;(buffer, offset, count);
&gt; 
&gt; ... although I assume count here has already take the sizeof(T) into account?

Yes, count as passed into the parent function is already the correct number.

Tryna figure out why the compilers aren&apos;t liking my function template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463375</commentid>
    <comment_count>9</comment_count>
      <attachid>350802</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-25 15:29:40 -0700</bug_when>
    <thetext>Created attachment 350802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463379</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-25 15:32:15 -0700</bug_when>
    <thetext>Attachment 350802 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:721:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:722:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:723:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463392</commentid>
    <comment_count>11</comment_count>
      <attachid>350806</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-09-25 15:52:34 -0700</bug_when>
    <thetext>Created attachment 350806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463395</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-25 15:54:28 -0700</bug_when>
    <thetext>Attachment 350806 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:721:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:722:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.h:723:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463425</commentid>
    <comment_count>13</comment_count>
      <attachid>350806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-25 17:24:59 -0700</bug_when>
    <thetext>Comment on attachment 350806
Patch

Clearing flags on attachment: 350806

Committed r236490: &lt;https://trac.webkit.org/changeset/236490&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463426</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-25 17:25:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350780</attachid>
            <date>2018-09-25 13:34:10 -0700</date>
            <delta_ts>2018-09-25 15:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189625-20180925133409.patch</filename>
            <type>text/plain</type>
            <size>24268</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA5MTk3NTBkNjQ3MTVm
NTA5NDQ4NGQ0OTU1MjIzZWUzMTJlNDE1Zi4uZDY0M2FiMTM4NzQ5ZTJmMjVmODMwNTllZTEwZWI0
NjZmMzZkZGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA5LTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgMiBDb25mb3Jt
YW5jZTogcHJpbWl0aXZlIHJlc3RhcnQgYW5kIGRyYXdfcHJpbWl0aXZlX3Jlc3RhcnQgV2ViR0wy
IHNhbXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg4MjYyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWYgdGVzdDogd2ViZ2wvd2ViZ2wy
LXByaW1pdGl2ZS1yZXN0YXJ0Lmh0bWwuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9y
IFByaW1pdGl2ZSBSZXN0YXJ0IEZpeGVkIEluZGV4IGFzIGV4cGVjdGVkIAorICAgICAgICBieSB0
aGUgV2ViR0wgMiBzcGVjaWZpY2F0aW9ucy4gCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpnZXRMYXN0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVJbmRleEFycmF5UHJlY2lzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHQzRENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnByaW1pdGl2ZVJlc3RhcnRJbmRleCk6CisKIDIwMTgtMDktMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
YSBWYXJpYW50IGZvciBGb3JtRGF0YUVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMzUyMzQ3N2ViZTUy
YTJmZWZlMWU3Y2QyNTVlMjQ3ZjM0MWY5YTA5NC4uMzU0NzVmYzkzNWRiYjc0MTc1MDkwNTUyMWE4
ZDRlZmQ1NGU5MDA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIwMjAsMjYgKzIwMjAsMTUgQEAgYm9vbCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0Mz
RGVudW0gdHlwZSwgdW5zaWcKICAgICBpZiAoIW1heEluZGV4KSB7CiAgICAgICAgIC8vIENvbXB1
dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIgZm9yIHRoZSBnaXZlbiB0
eXBlIG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTogewotICAgICAgICAgICAgY29uc3QgR0MzRHVi
eXRlKiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVieXRlKj4oYnVmZmVyLT5kYXRhKCkpOwot
ICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsr
KQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4SW5kZXggPyBzdGQ6Om1heChtYXhJbmRl
eC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpIDogc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgbWF4SW5kZXggPSBnZXRNYXhJbmRleDxHQzNEdWJ5dGU+KGJ1ZmZl
ciwgMCwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6IHsKLSAgICAgICAgICAg
IG51bUVsZW1lbnRzIC89IHNpemVvZihHQzNEdXNob3J0KTsKLSAgICAgICAgICAgIGNvbnN0IEdD
M0R1c2hvcnQqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdXNob3J0Kj4oYnVmZmVyLT5kYXRh
KCkpOwotICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1FbGVtZW50
czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4SW5kZXggPyBzdGQ6Om1heCht
YXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpIDogc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8R0MzRHVzaG9y
dD4oYnVmZmVyLCAwLCBudW1FbGVtZW50cyAvIHNpemVvZihHQzNEdXNob3J0KSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9JTlQ6IHsKLSAgICAgICAgICAgIG51bUVsZW1lbnRzIC89IHNpemVvZihHQzNEdWlu
dCk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEdWludCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdD
M0R1aW50Kj4oYnVmZmVyLT5kYXRhKCkpOwotICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIg
aSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0g
bWF4SW5kZXggPyBzdGQ6Om1heChtYXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocFtpXSkpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBtYXhJbmRleCA9IGdl
dE1heEluZGV4PEdDM0R1aW50PihidWZmZXIsIDAsIG51bUVsZW1lbnRzIC8gc2l6ZW9mKEdDM0R1
aW50KSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDg4Mjg1OGM2ZGMzZmYyY2U5NDBmNzU1NTlkZWU1NmE0MWI4ZDU3OWQuLmYyYjdiN2RiNWYwOWI2
YzljNDM5ZWNhNjJiZjk2N2Y1NzZjM2JiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC05Nyw2ICs5
Nyw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgpAQCAtMjAwNCwxMCArMjAwNSwzNCBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6
ZShHQzNEc2l6ZWkgY291bnQsIEdDM0RlbgogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgordW5zaWduZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4
SW5kZXgoY29uc3QgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciwg
R0MzRGludHB0ciB1b2Zmc2V0LCBHQzNEc2l6ZWkgbikKK3sKKyAgICB1bnNpZ25lZCBtYXhJbmRl
eCA9IDA7CisgICAgVCByZXN0YXJ0SW5kZXggPSAwOworCisjaWYgRU5BQkxFKFdFQkdMMikKKyAg
ICAvLyBXZWJHTCAyIHNwZWMgZW5mb3JjZXMgdGhhdCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhF
RF9JTkRFWCBpcyBhbHdheXMgZW5hYmxlZCwgc28gaWdub3JlIHRoZSByZXN0YXJ0IGluZGV4Lgor
ICAgIGlmIChpc1dlYkdMMigpKQorICAgICAgICByZXN0YXJ0SW5kZXggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKTsKKyNlbmRpZgorCisgICAgLy8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1l
bnQgb2Zmc2V0LgorICAgIHVvZmZzZXQgLz0gc2l6ZW9mKFQpOworICAgIGNvbnN0IFQqIHAgPSBz
dGF0aWNfY2FzdDxjb25zdCBUKj4oZWxlbWVudEFycmF5QnVmZmVyLT5kYXRhKCkpICsgdW9mZnNl
dDsKKyAgICB3aGlsZSAobi0tID4gMCkgeworICAgICAgICBpZiAoKnAgIT0gcmVzdGFydEluZGV4
ICYmICpwID4gbWF4SW5kZXgpCisgICAgICAgICAgICBtYXhJbmRleCA9ICpwOworICAgICAgICAr
K3A7CisgICAgfQorCisgICAgcmV0dXJuIG1heEluZGV4OworfQorCiBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UoR0MzRHNpemVpIGNvdW50
LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCwgdW5zaWduZWQmIG51bUVsZW1lbnRz
UmVxdWlyZWQpCiB7CiAgICAgQVNTRVJUKGNvdW50ID49IDAgJiYgb2Zmc2V0ID49IDApOwotICAg
IHVuc2lnbmVkIGxhc3RJbmRleCA9IDA7CisgICAgdW5zaWduZWQgbWF4SW5kZXggPSAwOwogICAg
IAogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZl
cnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKIApAQCAtMjAxOSw0MSAr
MjA0NCwyNCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSW5kZXhB
cnJheVByZWNpc2UoR0MzRHNpemVpIGNvdW50LCBHQzNEZQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBpZiAoIWVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVy
KCkpCisgICAgYXV0byBidWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1
ZmZlcigpOworICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1
bnNpZ25lZCBsb25nIHVvZmZzZXQgPSBvZmZzZXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBuID0gY291
bnQ7Ci0KLSAgICBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UKSB7
Ci0gICAgICAgIC8vIE1ha2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4KLSAgICAgICAgdW9m
ZnNldCAvPSBzaXplb2YoR0MzRHVpbnQpOwotICAgICAgICBjb25zdCBHQzNEdWludCogcCA9IHN0
YXRpY19jYXN0PGNvbnN0IEdDM0R1aW50Kj4oZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJy
YXlCdWZmZXIoKS0+ZGF0YSgpKSArIHVvZmZzZXQ7Ci0gICAgICAgIHdoaWxlIChuLS0gPiAwKSB7
Ci0gICAgICAgICAgICBpZiAoKnAgPiBsYXN0SW5kZXgpCi0gICAgICAgICAgICAgICAgbGFzdElu
ZGV4ID0gKnA7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUKSB7Ci0gICAgICAgIC8vIE1h
a2UgdW9mZnNldCBhbiBlbGVtZW50IG9mZnNldC4KLSAgICAgICAgdW9mZnNldCAvPSBzaXplb2Yo
R0MzRHVzaG9ydCk7Ci0gICAgICAgIGNvbnN0IEdDM0R1c2hvcnQqIHAgPSBzdGF0aWNfY2FzdDxj
b25zdCBHQzNEdXNob3J0Kj4oZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIo
KS0+ZGF0YSgpKSArIHVvZmZzZXQ7Ci0gICAgICAgIHdoaWxlIChuLS0gPiAwKSB7Ci0gICAgICAg
ICAgICBpZiAoKnAgPiBsYXN0SW5kZXgpCi0gICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gKnA7
Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpIHsKLSAgICAgICAgY29uc3QgR0MzRHVieXRl
KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVieXRlKj4oZWxlbWVudEFycmF5QnVmZmVyLT5l
bGVtZW50QXJyYXlCdWZmZXIoKS0+ZGF0YSgpKSArIHVvZmZzZXQ7Ci0gICAgICAgIHdoaWxlIChu
LS0gPiAwKSB7Ci0gICAgICAgICAgICBpZiAoKnAgPiBsYXN0SW5kZXgpCi0gICAgICAgICAgICAg
ICAgbGFzdEluZGV4ID0gKnA7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6Cisg
ICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8R0MzRHVpbnQ+KGJ1ZmZlciwgb2Zmc2V0LCBj
b3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX1NIT1JUOgorICAgICAgICBtYXhJbmRleCA9IGdldE1heEluZGV4PEdDM0R1c2hvcnQ+KGJ1
ZmZlciwgb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6CisgICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8
R0MzRHVieXRlPihidWZmZXIsIG9mZnNldCwgY291bnQpOworICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICAvLyBUaGVuIHNldCB0aGUgbGFzdCBpbmRleCBpbiB0aGUgaW5kZXggYXJyYXkgYW5k
IG1ha2Ugc3VyZSBpdCBpcyB2YWxpZC4KLSAgICBhdXRvIGNoZWNrZWROdW1FbGVtZW50c1JlcXVp
cmVkID0gY2hlY2tlZEFkZEFuZE11bHRpcGx5PHVuc2lnbmVkPihsYXN0SW5kZXgsIDEsIDEpOwor
ICAgIC8vIFRoZW4gc2V0IHRoZSBtYXhpdW11bSBpbmRleCBpbiB0aGUgaW5kZXggYXJyYXkgYW5k
IG1ha2Ugc3VyZSBpdCBpcyB2YWxpZC4KKyAgICBhdXRvIGNoZWNrZWROdW1FbGVtZW50c1JlcXVp
cmVkID0gY2hlY2tlZEFkZEFuZE11bHRpcGx5PHVuc2lnbmVkPihtYXhJbmRleCwgMSwgMSk7CiAg
ICAgaWYgKCFjaGVja2VkTnVtRWxlbWVudHNSZXF1aXJlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIG51bUVsZW1lbnRzUmVxdWlyZWQgPSBjaGVja2VkTnVtRWxlbWVudHNSZXF1aXJlZC52
YWx1ZSgpOwpAQCAtMjMwNSw2ICsyMzEzLDIyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6CiAg
ICAgbWFya0NvbnRleHRDaGFuZ2VkQW5kTm90aWZ5Q2FudmFzT2JzZXJ2ZXIoKTsKIH0KIAorI2lm
IFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCitzdGF0aWMgR0MzRHVpbnQgZ2V0UmVzdGFy
dEluZGV4KEdDM0RlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURToKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0MzRHVieXRlPjo6bWF4KCk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEdD
M0R1c2hvcnQ+OjptYXgoKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9J
TlQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEdDM0R1aW50Pjo6bWF4KCk7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50
LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0KQogewogICAgIHVuc2lnbmVkIG51bUVs
ZW1lbnRzID0gMDsKQEAgLTIzMzMsNiArMjM1NywxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdD
MwogICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgdXNlc0ZhbGxiYWNrVGV4
dHVyZSA9IGNoZWNrVGV4dHVyZUNvbXBsZXRlbmVzcygiZHJhd0VsZW1lbnRzIiwgdHJ1ZSk7CiAK
KyNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQorICAgIGlmIChpc1dlYkdMMigpKQor
ICAgICAgICBtX2NvbnRleHQtPnByaW1pdGl2ZVJlc3RhcnRJbmRleChnZXRSZXN0YXJ0SW5kZXgo
dHlwZSkpOworI2VuZGlmCisKICAgICB7CiAgICAgICAgIEluc3BlY3RvclNjb3BlZFNoYWRlclBy
b2dyYW1IaWdobGlnaHQgc2NvcGVkSGlnaGxpZ2h0KCp0aGlzLCBtX2N1cnJlbnRQcm9ncmFtLmdl
dCgpKTsKIApAQCAtNjQzOSw2ICs2NDY4LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjCiAg
ICAgaWYgKCFpc0dMRVMyTlBPVFN0cmljdCgpKQogICAgICAgICBjaGVja1RleHR1cmVDb21wbGV0
ZW5lc3MoImRyYXdFbGVtZW50c0luc3RhbmNlZCIsIHRydWUpOwogCisjaWYgVVNFKE9QRU5HTCkg
JiYgRU5BQkxFKFdFQkdMMikKKyAgICBpZiAoaXNXZWJHTDIoKSkKKyAgICAgICAgbV9jb250ZXh0
LT5wcmltaXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUpKTsKKyNlbmRpZgor
CiAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CiAKICAgICBpZiAo
IWlzR0xFUzJDb21wbGlhbnQoKSAmJiB2ZXJ0ZXhBdHRyaWIwU2ltdWxhdGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
CmluZGV4IDA4YmM0ZmM4YmE4NDVlNzJhODdhYWFlOGNkNzE0OGVkNmQ1ODc0ZTUuLjRmY2M0ZDI4
MTI4MGUxYWI2YzUwMDk5ZmViZWZkZTEzOThlYTk4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTgzNCw2
ICs4MzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT2Zmc2NyZWVuQ2FudmFzKiBvZmZzY3JlZW5DYW52
YXMoKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxU
PiBjaGVja2VkQWRkQW5kTXVsdGlwbHkoVCB2YWx1ZSwgVCBhZGQsIFQgbXVsdGlwbHkpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1bnNpZ25lZCBnZXRNYXhJbmRleChjb25zdCBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyLCBHQzNEaW50cHRyIHVvZmZzZXQs
IEdDM0RzaXplaSBuKTsKIAogcHJpdmF0ZToKICAgICBib29sIHZhbGlkYXRlQXJyYXlCdWZmZXJU
eXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25h
bDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBjOWVhMWRmYmZjZWNiZjY3MmMy
ZTgyYmUzOTQ0YThhNzgwMjA3ODlkLi5hYTRhYzNmMmM5NzgwOWJiNTk5OWIyYWM0M2UwMWYxZDQx
NTk0N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTcxOCw3ICs3MTgsOSBAQCBwdWJsaWM6CiAgICAgICAgIFRF
WFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCA9IDB4OTEyRiwKICAgICAgICAgTUFYX0VMRU1FTlRfSU5E
RVggPSAweDhENkIsCiAgICAgICAgIE5VTV9TQU1QTEVfQ09VTlRTID0gMHg5MzgwLAotICAgICAg
ICBURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMgPSAweDgyREYsIAorICAgICAgICBURVhUVVJFX0lN
TVVUQUJMRV9MRVZFTFMgPSAweDgyREYsCisgICAgICAgIFBSSU1JVElWRV9SRVNUQVJUX0ZJWEVE
X0lOREVYID0gMHg4RDY5LAorICAgICAgICBQUklNSVRJVkVfUkVTVEFSVCA9IDB4OEY5RCwKIAog
ICAgICAgICAvLyBPcGVuR0wgRVMgMyBjb25zdGFudHMKICAgICAgICAgTUFQX1JFQURfQklUID0g
MHgwMDAxCkBAIC0xMTUxLDYgKzExNTMsMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxJbWFnZURh
dGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CiAgICAgYm9vbCBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIAorI2lmIFVTRShPUEVOR0wp
CisgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0MzRHVpbnQpOworI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHRleEltYWdlSU9TdXJmYWNlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiwg
R0MzRHVpbnQgcGxhbmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQppbmRleCBi
YWQ0NDVkMjljNTljODNiMDZlMTBiNWJiMmUwNDM4MzAyYmE1NzQ4Li5jYWFjYzRhZGM1MzU4ODgw
MTY3M2JlYjg3NDM1YTNjNjNiZjdkNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW0KQEAgLTI2NCw2ICsyNjQsOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZAogICAgIGVsc2UK
ICAgICAgICAgbV9jb250ZXh0T2JqID0gW1tFQUdMQ29udGV4dCBhbGxvY10gaW5pdFdpdGhBUEk6
YXBpIHNoYXJlZ3JvdXA6c2hhcmVkQ29udGV4dC0+bV9jb250ZXh0T2JqLnNoYXJlZ3JvdXBdOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaWYgKG1fYXR0cnMuaXNXZWJHTDIpCisg
ICAgICAgIDo6Z2xFbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlBSSU1JVElWRV9SRVNUQVJUX0ZJ
WEVEX0lOREVYKTsKICNlbHNlCiAgICAgVmVjdG9yPENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPiBh
dHRyaWJzOwogICAgIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0T2JqID0gMDsKQEAgLTM0
Nyw2ICszNTAsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBo
aWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmQKICAgICAvLyBTZXQgdGhlIGN1
cnJlbnQgY29udGV4dCB0byB0aGUgb25lIGdpdmVuIHRvIHVzLgogICAgIENHTFNldEN1cnJlbnRD
b250ZXh0KG1fY29udGV4dE9iaik7CiAKKyAgICAvLyBXZWJHTCAyIGV4cGVjdHMgRVMgMy1vbmx5
IFBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYIHRvIGJlIGVuYWJsZWQ7IHdlIG11c3QgZW11
bGF0ZSB0aGlzIG9uIG5vbi1FUyAzIHN5c3RlbXMuCisgICAgaWYgKG1faXNGb3JXZWJHTDIpCisg
ICAgICAgIDo6Z2xFbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlBSSU1JVElWRV9SRVNUQVJUKTsK
KwogI2VuZGlmIC8vICFVU0UoT1BFTkdMX0VTKQogICAgIAogICAgIHZhbGlkYXRlQXR0cmlidXRl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggNmM5YzNmN2YwYzAyNjY0ZTE1MTEzNWM4YjQ0ZWU4ZDZhOTIyOTlmYS4uYTBlYjA3M2ZlMDI5
YTkyNDQwYTBlMDllZGU0NDBjOWY1Njk2ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0yMDcwLDYgKzIwNzAsMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwgR0MzRHVp
bnQgZGl2aXNvcikKICAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvcik7CiB9CiAKKyNpZiBVU0UoT1BFTkdMKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cHJpbWl0aXZlUmVzdGFydEluZGV4KEdDM0R1aW50IGluZGV4KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIDo6Z2xQcmltaXRpdmVSZXN0YXJ0SW5kZXgoaW5kZXgpOworfQor
I2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDA5Nzc0ODZhNjc2ZTJkYzNkMDYzODkzYzQ2YWQxOTdmYTJjMWNjNzQuLjFjYjIyYzI1NDM5
MmNmODRmM2Q0MjY0NjZlZDEwYmNmNDZlM2ViNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
OC0wOS0xNCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YkdMIDIgQ29uZm9ybWFuY2U6IHByaW1pdGl2ZSByZXN0YXJ0IGFuZCBkcmF3X3ByaW1pdGl2ZV9y
ZXN0YXJ0IFdlYkdMMiBzYW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4OTYyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI4ODI2MjA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHN1cHBvcnQgZm9yIFByaW1pdGl2ZSBSZXN0YXJ0IEZpeGVkIEluZGV4IGFzIGV4cGVjdGVkIAor
ICAgICAgICBieSB0aGUgV2ViR0wgMiBzcGVjaWZpY2F0aW9ucy4gCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOiBTa2lwIHNvbWUgZmxha3kgdGVzdHMgYmV0d2VlbiBkaWZmZXJlbnQgTWFj
IG1hY2hpbmVzIHVuZGVyIDIuMC4wLiAKKyAgICAgICAgKiB3ZWJnbC93ZWJnbDItcHJpbWl0aXZl
LXJlc3RhcnQuaHRtbDogQ2FuYXJ5IHJlZiB0ZXN0IHRvIGJlIHJ1biBhcyBwYXJ0IG9mIExheW91
dFRlc3RzIHN1aXRlLgorICAgICAgICAqIHdlYmdsL3dlYmdsMi1wcmltaXRpdmUtcmVzdGFydC1l
eHBlY3RlZC5odG1sOgorCiAyMDE4LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlZWQgdXAgc3RvcmFnZS93ZWJzcWwvdHJhbnNh
Y3Rpb24tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcz
NzVkOTYzZTY3NjIzMzE2ODYwOWQzNTc5MTM5OWM2ZDBmODdjMTAuLmNlZDgzZGE0YWYxOGEyNThh
OTQ2ZDFmNWMwZTdhYjc3ZGU1OTk4ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTUyLDEzICs5
NTIsMTUgQEAgd2Via2l0Lm9yZy9iLzEzOTYzOSBbIERlYnVnIF0gY3Nzb20vbm9uLXN1YnBpeGVs
LXNjcm9sbC10b3AtbGVmdC12YWx1ZXMuaHRtbCBbIFMKIAogd2Via2l0Lm9yZy9iLzEzOTY0MCBb
IERlYnVnIF0gd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3NoYWRlci11bmlmb3Jt
LXBhY2tpbmctcmVzdHJpY3Rpb25zLmh0bWwgWyBTbG93IF0KIAotd2Via2l0Lm9yZy9iLzE4OTY0
MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci11bmluaXRpYWxpemVkLmh0
bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy93ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCBbIEZhaWx1cmUgU2xvdyBdCi13
ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMv
ZmVlZGJhY2stbG9vcC5odG1sIFsgRmFpbHVyZSBdIAotd2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS9yZW5kZXJpbmcvY2xpcHBpbmctd2lkZS1wb2ludHMuaHRtbCBb
IEZhaWx1cmUgXSAKLXdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy9jb3B5LXRleC1pbWFnZS0yZC1mb3JtYXRzLmh0bWwgWyBGYWlsdXJlIF0g
Ci13ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1v
YmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBGYWlsdXJlIFNsb3cgXQotd2Via2l0Lm9yZy9iLzE4OTY0
MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtM2Qtc2l6ZS1saW1p
dC5odG1sIFsgRmFpbHVyZSBdCisjIFRoZXNlIHRlc3RzIGFyZSBnZW5lcmF0aW5nIGluY29uc2lz
dGVudCByZXN1bHRzIGJldHdlZW4gbXkgbWFjaGluZSAoQU1EKSBhbmQgdGVzdCBib3RzIChJTlRF
TCkKK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvYnVmZmVycy9i
dWZmZXItdW5pbml0aWFsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTg5NjQxIHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtZHJhdy1idWZmZXJzLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVu
ZGVyYnVmZmVycy9mZWVkYmFjay1sb29wLmh0bWwgWyBTa2lwIF0gCit3ZWJraXQub3JnL2IvMTg5
NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9jbGlwcGluZy13aWRlLXBvaW50
cy5odG1sIFsgU2tpcCBdIAord2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9taXNjL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIFNraXAg
XSAKK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2ds
LW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtM2Qtc2l6ZS1saW1pdC5odG1s
IFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uy
L3JlbmRlcmluZy9ibGl0ZnJhbWVidWZmZXItZmlsdGVyLW91dG9mYm91bmRzLmh0bWwgWyBTbG93
IF0KIAogWyBEZWJ1ZyBdIGZhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwgWyBTbG93
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3dlYmdsMi1wcmltaXRpdmUtcmVzdGFy
dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0
YXJ0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VkYzg1YTNkNDVhYzdjYjlmOTRhMTAxMmMw
ZTk1N2Q2ZjU4MzM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3dlYmds
Mi1wcmltaXRpdmUtcmVzdGFydC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKworPGhlYWQ+CisgICAgPHRpdGxlPldlYkdM
IDIgU2FtcGxlcyAtIGRyYXdfcHJpbWl0aXZlX3Jlc3RhcnQ8L3RpdGxlPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IjIuMC4wL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cisg
ICAgPHNjcmlwdCBzcmM9IjIuMC4wL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iMi4wLjAvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorICAgIDxkaXYgaWQ9ImluZm8iPldlYkdMIDIgU2FtcGxlcyAtIGRyYXdfcHJp
bWl0aXZlX3Jlc3RhcnQ8L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAg
IDxzY3JpcHQgaWQ9InZzIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+I3ZlcnNpb24gMzAwIGVz
CisgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGludDsKKworICAgICAgICBsYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMyIHBvczsKKworICAg
ICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zLCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3Jp
cHQgaWQ9ImZzIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKKyAg
ICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICBwcmVjaXNpb24gaGlnaHAgaW50
OworCisgICAgICAgIG91dCB2ZWM0IGNvbG9yOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbG9yID0gdmVjNCgxLjAsIDAuNSwgMC4wLCAxLjApOworICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgIChmdW5jdGlvbiAoKSB7
CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxz
OworCisgICAgICAgIC8vIC0tIEluaXQgQ2FudmFzCisgICAgICAgIHZhciBjYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICAgICAgY2FudmFzLndpZHRoID0gMjAw
OworICAgICAgICBjYW52YXMuaGVpZ2h0ID0gY2FudmFzLndpZHRoOworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CisKKyAgICAgICAgLy8gLS0gSW5pdCBXZWJHTCBD
b250ZXh0CisgICAgICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbDInLCB7IGFu
dGlhbGlhczogZmFsc2UgfSk7CisgICAgICAgIHZhciBpc1dlYkdMMiA9ICEhZ2w7CisgICAgICAg
IGlmKCFpc1dlYkdMMikgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiV2ViR0wgMiBjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0ZXN0UGFzc2VkKCJXZWJHTCAyIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAgICAgLy8g
LS0gSW5pdCBQcm9ncmFtCisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2cyIsICJmcyJdKTsKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAg
ICAgICAvLyAtLSBJbml0IEJ1ZmZlcgorICAgICAgICB2YXIgdmVydGljZXMgPSBuZXcgRmxvYXQz
MkFycmF5KFsKKyAgICAgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgICAgICAtMS4wLCAgMS4w
LAorICAgICAgICAgICAgIDEuMCwgLTEuMCwKKyAgICAgICAgICAgICAxLjAsICAxLjAKKyAgICAg
ICAgXSk7CisKKyAgICAgICAgdmFyIHZlcnRleFBvc0J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4UG9zQnVmZmVy
KTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5T
VEFUSUNfRFJBVyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxs
KTsKKworICAgICAgICB2YXIgbnVtX3ZlcnRpY2VzID0gNjsKKyAgICAgICAgdmFyIGluZGljZXMg
PSBuZXcgVWludDE2QXJyYXkoWworICAgICAgICAgICAgMCwgMSwgMiwgMiwgMywgMQorICAgICAg
ICBdKTsKKworICAgICAgICB2YXIgdmVydGV4RWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB2ZXJ0
ZXhFbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC5iaW5kQnVmZmVy
KGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKworICAgICAgICAvLyAtLSBJbml0IFZl
cnRleCBBcnJheQorICAgICAgICB2YXIgdmVydGV4QXJyYXkgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJh
eSgpOworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOworCisgICAgICAg
IHZhciB2ZXJ0ZXhQb3NMb2NhdGlvbiA9IDA7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCB2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSh2ZXJ0ZXhQb3NMb2NhdGlvbik7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50
ZXIodmVydGV4UG9zTG9jYXRpb24sIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgCisgICAgICAg
IGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHZlcnRleEVsZW1lbnRCdWZm
ZXIpOworCisgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKworICAgICAgICAvLyAt
LSBSZW5kZXIKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAg
ICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBnbC5iaW5kVmVy
dGV4QXJyYXkodmVydGV4QXJyYXkpOworCisgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklB
TkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKworICAgICAgICAvLyAtLSBEZWxldGUg
V2ViR0wgcmVzb3VyY2VzCisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcih2ZXJ0ZXhQb3NCdWZmZXIp
OworICAgICAgICBnbC5kZWxldGVCdWZmZXIodmVydGV4RWxlbWVudEJ1ZmZlcik7CisgICAgICAg
IGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5
KHZlcnRleEFycmF5KTsKKyAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZjhmNWM2NDlhYTU0NGMyZmFiMWNiMzA2NjNhODcyNTcwMTkwZGI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0
Lmh0bWwKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4i
PgorCis8aGVhZD4KKyAgICA8dGl0bGU+V2ViR0wgMiBTYW1wbGVzIC0gZHJhd19wcmltaXRpdmVf
cmVzdGFydDwvdGl0bGU+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iMi4wLjAvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iMi4wLjAvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy93ZWJnbC10ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGRpdiBpZD0iaW5m
byI+V2ViR0wgMiBTYW1wbGVzIC0gZHJhd19wcmltaXRpdmVfcmVzdGFydDwvZGl2PgorICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hh
ZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKKyAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OworICAgICAgICBwcmVjaXNpb24gaGlnaHAgaW50OworCisgICAgICAgIGxheW91dChsb2Nh
dGlvbiA9IDApIGluIHZlYzIgcG9zOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAuMCwgMS4wKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBpZD0iZnMiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CisgICAgICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7CisKKyAgICAgICAgb3V0IHZlYzQgY29sb3I7
CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29sb3IgPSB2
ZWM0KDEuMCwgMC41LCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAg
IDxzY3JpcHQ+CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAg
ICAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKKyAgICAgICAgLy8gLS0gSW5pdCBDYW52
YXMKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
OworICAgICAgICBjYW52YXMud2lkdGggPSAyMDA7CisgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBj
YW52YXMud2lkdGg7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsK
KworICAgICAgICAvLyAtLSBJbml0IFdlYkdMIENvbnRleHQKKyAgICAgICAgdmFyIGdsID0gY2Fu
dmFzLmdldENvbnRleHQoJ3dlYmdsMicsIHsgYW50aWFsaWFzOiBmYWxzZSB9KTsKKyAgICAgICAg
dmFyIGlzV2ViR0wyID0gISFnbDsKKyAgICAgICAgaWYoIWlzV2ViR0wyKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJXZWJHTCAyIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RQYXNzZWQoIldlYkdMIDIgY29u
dGV4dCBleGlzdHMiKTsKKworICAgICAgICAvLyAtLSBJbml0IFByb2dyYW0KKyAgICAgICAgdmFy
IHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0pOworICAgICAgICBn
bC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIC8vIC0tIEluaXQgQnVmZmVyCisgICAg
ICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgICAgLTEuMCwg
LTEuMCwKKyAgICAgICAgICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgICAgMS4wLCAtMS4wLAor
ICAgICAgICAgICAgIDEuMCwgIDEuMAorICAgICAgICBdKTsKKworICAgICAgICB2YXIgdmVydGV4
UG9zQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wu
QVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgdmVydGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAgICAgICAKKyAgICAgICAgLy8gaHR0
cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc3BlY3MvbGF0ZXN0LzIuMC8jNS4x
OAorICAgICAgICAvLyBXZWJHTCAyLjAgYmVoYXZlcyBhcyB0aG91Z2ggUFJJTUlUSVZFX1JFU1RB
UlRfRklYRURfSU5ERVggd2VyZSBhbHdheXMgZW5hYmxlZC4gCisgICAgICAgIHZhciBNQVhfVU5T
SUdORURfU0hPUlQgPSA2NTUzNTsKKyAgICAgICAgdmFyIG51bV92ZXJ0aWNlcyA9IDc7CisgICAg
ICAgIHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFsKKyAgICAgICAgICAgIDAsIDEsIDIs
IE1BWF9VTlNJR05FRF9TSE9SVCwgMiwgMywgMQorICAgICAgICBdKTsKKworICAgICAgICB2YXIg
dmVydGV4RWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5k
QnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhFbGVtZW50QnVmZmVyKTsKKyAg
ICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wu
U1RBVElDX0RSQVcpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVG
RkVSLCBudWxsKTsKKworICAgICAgICAvLyAtLSBJbml0IFZlcnRleCBBcnJheQorICAgICAgICB2
YXIgdmVydGV4QXJyYXkgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBnbC5iaW5k
VmVydGV4QXJyYXkodmVydGV4QXJyYXkpOworCisgICAgICAgIHZhciB2ZXJ0ZXhQb3NMb2NhdGlv
biA9IDA7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3NC
dWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhQb3NMb2Nh
dGlvbik7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4UG9zTG9jYXRpb24s
IDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJS
QVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIHZlcnRleEVsZW1lbnRCdWZmZXIpOworCisgICAgICAgIGdsLmJp
bmRWZXJ0ZXhBcnJheShudWxsKTsKKworICAgICAgICAvLyAtLSBSZW5kZXIKKyAgICAgICAgZ2wu
Y2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICBnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUKTsKKworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmVydGV4QXJyYXkp
OworCisgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRV9TVFJJUCwgNywgZ2wuVU5T
SUdORURfU0hPUlQsIDApOworCisgICAgICAgIC8vIC0tIERlbGV0ZSBXZWJHTCByZXNvdXJjZXMK
KyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKHZlcnRleFBvc0J1ZmZlcik7CisgICAgICAgIGdsLmRl
bGV0ZUJ1ZmZlcih2ZXJ0ZXhFbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOwor
ICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350802</attachid>
            <date>2018-09-25 15:29:40 -0700</date>
            <delta_ts>2018-09-25 15:52:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189625-20180925152940.patch</filename>
            <type>text/plain</type>
            <size>24431</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA5MTk3NTBkNjQ3MTVm
NTA5NDQ4NGQ0OTU1MjIzZWUzMTJlNDE1Zi4uZDY0M2FiMTM4NzQ5ZTJmMjVmODMwNTllZTEwZWI0
NjZmMzZkZGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA5LTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgMiBDb25mb3Jt
YW5jZTogcHJpbWl0aXZlIHJlc3RhcnQgYW5kIGRyYXdfcHJpbWl0aXZlX3Jlc3RhcnQgV2ViR0wy
IHNhbXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg4MjYyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWYgdGVzdDogd2ViZ2wvd2ViZ2wy
LXByaW1pdGl2ZS1yZXN0YXJ0Lmh0bWwuCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9y
IFByaW1pdGl2ZSBSZXN0YXJ0IEZpeGVkIEluZGV4IGFzIGV4cGVjdGVkIAorICAgICAgICBieSB0
aGUgV2ViR0wgMiBzcGVjaWZpY2F0aW9ucy4gCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpnZXRMYXN0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVJbmRleEFycmF5UHJlY2lzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHQzRENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnByaW1pdGl2ZVJlc3RhcnRJbmRleCk6CisKIDIwMTgtMDktMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
YSBWYXJpYW50IGZvciBGb3JtRGF0YUVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMzUyMzQ3N2ViZTUy
YTJmZWZlMWU3Y2QyNTVlMjQ3ZjM0MWY5YTA5NC4uMzU0NzVmYzkzNWRiYjc0MTc1MDkwNTUyMWE4
ZDRlZmQ1NGU5MDA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIwMjAsMjYgKzIwMjAsMTUgQEAgYm9vbCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0Mz
RGVudW0gdHlwZSwgdW5zaWcKICAgICBpZiAoIW1heEluZGV4KSB7CiAgICAgICAgIC8vIENvbXB1
dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIgZm9yIHRoZSBnaXZlbiB0
eXBlIG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTogewotICAgICAgICAgICAgY29uc3QgR0MzRHVi
eXRlKiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVieXRlKj4oYnVmZmVyLT5kYXRhKCkpOwot
ICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsr
KQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4SW5kZXggPyBzdGQ6Om1heChtYXhJbmRl
eC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpIDogc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgbWF4SW5kZXggPSBnZXRNYXhJbmRleDxHQzNEdWJ5dGU+KGJ1ZmZl
ciwgMCwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6IHsKLSAgICAgICAgICAg
IG51bUVsZW1lbnRzIC89IHNpemVvZihHQzNEdXNob3J0KTsKLSAgICAgICAgICAgIGNvbnN0IEdD
M0R1c2hvcnQqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdXNob3J0Kj4oYnVmZmVyLT5kYXRh
KCkpOwotICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1FbGVtZW50
czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4SW5kZXggPyBzdGQ6Om1heCht
YXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpIDogc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8R0MzRHVzaG9y
dD4oYnVmZmVyLCAwLCBudW1FbGVtZW50cyAvIHNpemVvZihHQzNEdXNob3J0KSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9JTlQ6IHsKLSAgICAgICAgICAgIG51bUVsZW1lbnRzIC89IHNpemVvZihHQzNEdWlu
dCk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEdWludCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdD
M0R1aW50Kj4oYnVmZmVyLT5kYXRhKCkpOwotICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIg
aSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0g
bWF4SW5kZXggPyBzdGQ6Om1heChtYXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocFtpXSkpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pOworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBtYXhJbmRleCA9IGdl
dE1heEluZGV4PEdDM0R1aW50PihidWZmZXIsIDAsIG51bUVsZW1lbnRzIC8gc2l6ZW9mKEdDM0R1
aW50KSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDg4Mjg1OGM2ZGMzZmYyY2U5NDBmNzU1NTlkZWU1NmE0MWI4ZDU3OWQuLjg1NzRmY2ViZjk5MzMy
ZjIzNTEzZGIwYTdjMmQzZWEwYmVjODVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0yMDA3LDcg
KzIwMDcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVu
dEFycmF5U2l6ZShHQzNEc2l6ZWkgY291bnQsIEdDM0RlbgogYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKEdDM0RzaXplaSBjb3VudCwgR0Mz
RGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQsIHVuc2lnbmVkJiBudW1FbGVtZW50c1JlcXVp
cmVkKQogewogICAgIEFTU0VSVChjb3VudCA+PSAwICYmIG9mZnNldCA+PSAwKTsKLSAgICB1bnNp
Z25lZCBsYXN0SW5kZXggPSAwOworICAgIHVuc2lnbmVkIG1heEluZGV4ID0gMDsKICAgICAKICAg
ICBSZWZQdHI8V2ViR0xCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciA9IG1fYm91bmRWZXJ0ZXhB
cnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CiAKQEAgLTIwMTksNDEgKzIwMTks
MjQgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQ
cmVjaXNlKEdDM0RzaXplaSBjb3VudCwgR0MzRGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpKQor
ICAgIGF1dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIo
KTsKKyAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWdu
ZWQgbG9uZyB1b2Zmc2V0ID0gb2Zmc2V0OwotICAgIHVuc2lnbmVkIGxvbmcgbiA9IGNvdW50Owot
Ci0gICAgaWYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVCkgewotICAg
ICAgICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQuCi0gICAgICAgIHVvZmZzZXQg
Lz0gc2l6ZW9mKEdDM0R1aW50KTsKLSAgICAgICAgY29uc3QgR0MzRHVpbnQqIHAgPSBzdGF0aWNf
Y2FzdDxjb25zdCBHQzNEdWludCo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVm
ZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OwotICAgICAgICB3aGlsZSAobi0tID4gMCkgewotICAg
ICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQotICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9
ICpwOwotICAgICAgICAgICAgKytwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICh0eXBlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCkgewotICAgICAgICAvLyBNYWtlIHVv
ZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQuCi0gICAgICAgIHVvZmZzZXQgLz0gc2l6ZW9mKEdDM0R1
c2hvcnQpOwotICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
R0MzRHVzaG9ydCo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVudEFycmF5QnVmZmVyKCktPmRh
dGEoKSkgKyB1b2Zmc2V0OwotICAgICAgICB3aGlsZSAobi0tID4gMCkgewotICAgICAgICAgICAg
aWYgKCpwID4gbGFzdEluZGV4KQotICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9ICpwOwotICAg
ICAgICAgICAgKytwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSB7Ci0gICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9
IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1Ynl0ZSo+KGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxlbWVu
dEFycmF5QnVmZmVyKCktPmRhdGEoKSkgKyB1b2Zmc2V0OwotICAgICAgICB3aGlsZSAobi0tID4g
MCkgewotICAgICAgICAgICAgaWYgKCpwID4gbGFzdEluZGV4KQotICAgICAgICAgICAgICAgIGxh
c3RJbmRleCA9ICpwOwotICAgICAgICAgICAgKytwOwotICAgICAgICB9CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOgorICAgICAg
ICBtYXhJbmRleCA9IGdldE1heEluZGV4PEdDM0R1aW50PihidWZmZXIsIG9mZnNldCwgY291bnQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9T
SE9SVDoKKyAgICAgICAgbWF4SW5kZXggPSBnZXRNYXhJbmRleDxHQzNEdXNob3J0PihidWZmZXIs
IG9mZnNldCwgY291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFOgorICAgICAgICBtYXhJbmRleCA9IGdldE1heEluZGV4PEdDM0R1
Ynl0ZT4oYnVmZmVyLCBvZmZzZXQsIGNvdW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgLy8gVGhlbiBzZXQgdGhlIGxhc3QgaW5kZXggaW4gdGhlIGluZGV4IGFycmF5IGFuZCBtYWtl
IHN1cmUgaXQgaXMgdmFsaWQuCi0gICAgYXV0byBjaGVja2VkTnVtRWxlbWVudHNSZXF1aXJlZCA9
IGNoZWNrZWRBZGRBbmRNdWx0aXBseTx1bnNpZ25lZD4obGFzdEluZGV4LCAxLCAxKTsKKyAgICAv
LyBUaGVuIHNldCB0aGUgbWF4aXVtdW0gaW5kZXggaW4gdGhlIGluZGV4IGFycmF5IGFuZCBtYWtl
IHN1cmUgaXQgaXMgdmFsaWQuCisgICAgYXV0byBjaGVja2VkTnVtRWxlbWVudHNSZXF1aXJlZCA9
IGNoZWNrZWRBZGRBbmRNdWx0aXBseTx1bnNpZ25lZD4obWF4SW5kZXgsIDEsIDEpOwogICAgIGlm
ICghY2hlY2tlZE51bUVsZW1lbnRzUmVxdWlyZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBudW1FbGVtZW50c1JlcXVpcmVkID0gY2hlY2tlZE51bUVsZW1lbnRzUmVxdWlyZWQudmFsdWUo
KTsKQEAgLTIzMDUsNiArMjI4OCwyMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpegogICAgIG1h
cmtDb250ZXh0Q2hhbmdlZEFuZE5vdGlmeUNhbnZhc09ic2VydmVyKCk7CiB9CiAKKyNpZiBVU0Uo
T1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQorc3RhdGljIEdDM0R1aW50IGdldFJlc3RhcnRJbmRl
eChHQzNEZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPEdDM0R1Ynl0ZT46Om1heCgpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX1NIT1JUOgorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxHQzNEdXNo
b3J0Pjo6bWF4KCk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOgor
ICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxHQzNEdWludD46Om1heCgpOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0Mz
RGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCkKIHsKICAgICB1bnNpZ25lZCBudW1FbGVtZW50
cyA9IDA7CkBAIC0yMzMzLDYgKzIzMzIsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzMKICAg
ICBpZiAoIWlzR0xFUzJOUE9UU3RyaWN0KCkpCiAgICAgICAgIHVzZXNGYWxsYmFja1RleHR1cmUg
PSBjaGVja1RleHR1cmVDb21wbGV0ZW5lc3MoImRyYXdFbGVtZW50cyIsIHRydWUpOwogCisjaWYg
VVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKKyAgICBpZiAoaXNXZWJHTDIoKSkKKyAgICAg
ICAgbV9jb250ZXh0LT5wcmltaXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUp
KTsKKyNlbmRpZgorCiAgICAgewogICAgICAgICBJbnNwZWN0b3JTY29wZWRTaGFkZXJQcm9ncmFt
SGlnaGxpZ2h0IHNjb3BlZEhpZ2hsaWdodCgqdGhpcywgbV9jdXJyZW50UHJvZ3JhbS5nZXQoKSk7
CiAKQEAgLTY0MzksNiArNjQ0MywxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgYwogICAgIGlm
ICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgY2hlY2tUZXh0dXJlQ29tcGxldGVuZXNz
KCJkcmF3RWxlbWVudHNJbnN0YW5jZWQiLCB0cnVlKTsKIAorI2lmIFVTRShPUEVOR0wpICYmIEVO
QUJMRShXRUJHTDIpCisgICAgaWYgKGlzV2ViR0wyKCkpCisgICAgICAgIG1fY29udGV4dC0+cHJp
bWl0aXZlUmVzdGFydEluZGV4KGdldFJlc3RhcnRJbmRleCh0eXBlKSk7CisjZW5kaWYKKwogICAg
IG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0
aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOwogCiAgICAgaWYgKCFpc0dM
RVMyQ29tcGxpYW50KCkgJiYgdmVydGV4QXR0cmliMFNpbXVsYXRlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCAwOGJjNGZjOGJhODQ1ZTcyYTg3YWFhZThjZDcxNDhlZDZkNTg3NGU1Li45NmNjMTdiZDg1YjMx
M2U5Mzc5ZDliNjBjNTUyYzcyMTc5ZDU3ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgor
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpZiBFTkFCTEUoV0VCR0wy
KQpAQCAtODM0LDYgKzgzNSw3IEBAIHByb3RlY3RlZDoKICAgICBPZmZzY3JlZW5DYW52YXMqIG9m
ZnNjcmVlbkNhbnZhcygpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBzdGQ6
Om9wdGlvbmFsPFQ+IGNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGFkZCwgVCBtdWx0
aXBseSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVuc2lnbmVkIGdldE1heEluZGV4KGNv
bnN0IFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIsIEdDM0RpbnRw
dHIgdW9mZnNldCwgR0MzRHNpemVpIG4pOwogCiBwcml2YXRlOgogICAgIGJvb2wgdmFsaWRhdGVB
cnJheUJ1ZmZlclR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0eXBlLCBz
dGQ6Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKQEAgLTg1OCw2ICs4NjAsMzAgQEAg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tl
ZEFkZEFuZE11bHRpcGx5KFQgdmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJlc3VsdC51bnNhZmVH
ZXQoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB1bnNpZ25lZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhJbmRleChjb25zdCBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyLCBHQzNEaW50cHRyIHVvZmZzZXQsIEdDM0RzaXplaSBu
KQoreworICAgIHVuc2lnbmVkIG1heEluZGV4ID0gMDsKKyAgICBUIHJlc3RhcnRJbmRleCA9IDA7
CisKKyNpZiBFTkFCTEUoV0VCR0wyKQorICAgIC8vIFdlYkdMIDIgc3BlYyBlbmZvcmNlcyB0aGF0
IEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYIGlzIGFsd2F5cyBlbmFibGVkLCBzbyBp
Z25vcmUgdGhlIHJlc3RhcnQgaW5kZXguCisgICAgaWYgKGlzV2ViR0wyKCkpCisgICAgICAgIHJl
c3RhcnRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOworI2VuZGlmCisKKyAg
ICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQuCisgICAgdW9mZnNldCAvPSBzaXpl
b2YoVCk7CisgICAgY29uc3QgVCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IFQqPihlbGVtZW50QXJy
YXlCdWZmZXItPmRhdGEoKSkgKyB1b2Zmc2V0OworICAgIHdoaWxlIChuLS0gPiAwKSB7CisgICAg
ICAgIGlmICgqcCAhPSByZXN0YXJ0SW5kZXggJiYgKnAgPiBtYXhJbmRleCkKKyAgICAgICAgICAg
IG1heEluZGV4ID0gKnA7CisgICAgICAgICsrcDsKKyAgICB9CisKKyAgICByZXR1cm4gbWF4SW5k
ZXg7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19DQU5WQVNSRU5ERVJJTkdDT05URVhUKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UsIGlzV2ViR0woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGM5ZWExZGZiZmNlY2JmNjcyYzJlODJiZTM5NDRh
OGE3ODAyMDc4OWQuLmFhNGFjM2YyYzk3ODA5YmI1OTk5YjJhYzQzZTAxZjFkNDE1OTQ3YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtNzE4LDcgKzcxOCw5IEBAIHB1YmxpYzoKICAgICAgICAgVEVYVFVSRV9JTU1V
VEFCTEVfRk9STUFUID0gMHg5MTJGLAogICAgICAgICBNQVhfRUxFTUVOVF9JTkRFWCA9IDB4OEQ2
QiwKICAgICAgICAgTlVNX1NBTVBMRV9DT1VOVFMgPSAweDkzODAsCi0gICAgICAgIFRFWFRVUkVf
SU1NVVRBQkxFX0xFVkVMUyA9IDB4ODJERiwgCisgICAgICAgIFRFWFRVUkVfSU1NVVRBQkxFX0xF
VkVMUyA9IDB4ODJERiwKKyAgICAgICAgUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVggPSAw
eDhENjksCisgICAgICAgIFBSSU1JVElWRV9SRVNUQVJUID0gMHg4RjlELAogCiAgICAgICAgIC8v
IE9wZW5HTCBFUyAzIGNvbnN0YW50cwogICAgICAgICBNQVBfUkVBRF9CSVQgPSAweDAwMDEKQEAg
LTExNTEsNiArMTE1MywxMCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsKICAgICBib29sIHBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCisjaWYgVVNFKE9QRU5HTCkKKyAgICB2b2lk
IHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQzNEdWludCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGJvb2wgdGV4SW1hZ2VJT1N1cmZhY2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSU9TdXJmYWNlUmVmLCBHQzNEdWludCBw
bGFuZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IGJhZDQ0NWQyOWM1
OWM4M2IwNmUxMGI1YmIyZTA0MzgzMDJiYTU3NDguLmNhYWNjNGFkYzUzNTg4ODAxNjczYmViODc0
MzVhM2M2M2JmN2Q3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtMjY0
LDYgKzI2NCw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kCiAgICAgZWxzZQogICAgICAgICBt
X2NvbnRleHRPYmogPSBbW0VBR0xDb250ZXh0IGFsbG9jXSBpbml0V2l0aEFQSTphcGkgc2hhcmVn
cm91cDpzaGFyZWRDb250ZXh0LT5tX2NvbnRleHRPYmouc2hhcmVncm91cF07CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAobV9hdHRycy5pc1dlYkdMMikKKyAgICAgICAgOjpn
bEVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgp
OwogI2Vsc2UKICAgICBWZWN0b3I8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+IGF0dHJpYnM7CiAg
ICAgQ0dMUGl4ZWxGb3JtYXRPYmogcGl4ZWxGb3JtYXRPYmogPSAwOwpAQCAtMzQ3LDYgKzM1MCwx
MCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0
M0RBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZAogICAgIC8vIFNldCB0aGUgY3VycmVudCBjb250
ZXh0IHRvIHRoZSBvbmUgZ2l2ZW4gdG8gdXMuCiAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQobV9j
b250ZXh0T2JqKTsKIAorICAgIC8vIFdlYkdMIDIgZXhwZWN0cyBFUyAzLW9ubHkgUFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVggdG8gYmUgZW5hYmxlZDsgd2UgbXVzdCBlbXVsYXRlIHRoaXMg
b24gbm9uLUVTIDMgc3lzdGVtcy4KKyAgICBpZiAobV9pc0ZvcldlYkdMMikKKyAgICAgICAgOjpn
bEVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6UFJJTUlUSVZFX1JFU1RBUlQpOworCiAjZW5kaWYg
Ly8gIVVTRShPUEVOR0xfRVMpCiAgICAgCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA2YzljM2Y3
ZjBjMDI2NjRlMTUxMTM1YzhiNDRlZThkNmE5MjI5OWZhLi5hMGViMDczZmUwMjlhOTI0NDBhMGUw
OWVkZTQ0MGM5ZjU2OTZkNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTIwNzAsNiArMjA3MCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29y
KQogICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29y
KTsKIH0KIAorI2lmIFVTRShPUEVOR0wpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwcmltaXRp
dmVSZXN0YXJ0SW5kZXgoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgOjpnbFByaW1pdGl2ZVJlc3RhcnRJbmRleChpbmRleCk7Cit9CisjZW5kaWYKKwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDk3NzQ4
NmE2NzZlMmRjM2QwNjM4OTNjNDZhZDE5N2ZhMmMxY2M3NC4uMWNiMjJjMjU0MzkyY2Y4NGYzZDQy
NjQ2NmVkMTBiY2Y0NmUzZWI3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA5LTE0ICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgMiBDb25m
b3JtYW5jZTogcHJpbWl0aXZlIHJlc3RhcnQgYW5kIGRyYXdfcHJpbWl0aXZlX3Jlc3RhcnQgV2Vi
R0wyIHNhbXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg4MjYyMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBm
b3IgUHJpbWl0aXZlIFJlc3RhcnQgRml4ZWQgSW5kZXggYXMgZXhwZWN0ZWQgCisgICAgICAgIGJ5
IHRoZSBXZWJHTCAyIHNwZWNpZmljYXRpb25zLiAKKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlv
bnM6IFNraXAgc29tZSBmbGFreSB0ZXN0cyBiZXR3ZWVuIGRpZmZlcmVudCBNYWMgbWFjaGluZXMg
dW5kZXIgMi4wLjAuIAorICAgICAgICAqIHdlYmdsL3dlYmdsMi1wcmltaXRpdmUtcmVzdGFydC5o
dG1sOiBDYW5hcnkgcmVmIHRlc3QgdG8gYmUgcnVuIGFzIHBhcnQgb2YgTGF5b3V0VGVzdHMgc3Vp
dGUuCisgICAgICAgICogd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0LWV4cGVjdGVkLmh0
bWw6CisKIDIwMTgtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBzcGVlZCB1cCBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1kYXRh
YmFzZS1leHBhbmQtcXVvdGEuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzM3NWQ5NjNlNjc2
MjMzMTY4NjA5ZDM1NzkxMzk5YzZkMGY4N2MxMC4uY2VkODNkYTRhZjE4YTI1OGE5NDZkMWY1YzBl
N2FiNzdkZTU5OTg4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC05NTIsMTMgKzk1MiwxNSBAQCB3
ZWJraXQub3JnL2IvMTM5NjM5IFsgRGVidWcgXSBjc3NvbS9ub24tc3VicGl4ZWwtc2Nyb2xsLXRv
cC1sZWZ0LXZhbHVlcy5odG1sIFsgUwogCiB3ZWJraXQub3JnL2IvMTM5NjQwIFsgRGVidWcgXSB3
ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXVuaWZvcm0tcGFja2luZy1y
ZXN0cmljdGlvbnMuaHRtbCBbIFNsb3cgXQogCi13ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlL2J1ZmZlcnMvYnVmZmVyLXVuaW5pdGlhbGl6ZWQuaHRtbCBbIEZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3dlYmdsLWRyYXctYnVmZmVycy5odG1sIFsgRmFpbHVyZSBTbG93IF0KLXdlYmtpdC5vcmcv
Yi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mZWVkYmFjay1s
b29wLmh0bWwgWyBGYWlsdXJlIF0gCi13ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL3JlbmRlcmluZy9jbGlwcGluZy13aWRlLXBvaW50cy5odG1sIFsgRmFpbHVyZSBd
IAotd2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL2NvcHktdGV4LWltYWdlLTJkLWZvcm1hdHMuaHRtbCBbIEZhaWx1cmUgXSAKLXdlYmtpdC5v
cmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQt
Y2FsbHMuaHRtbCBbIEZhaWx1cmUgU2xvdyBdCi13ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC0zZC1zaXplLWxpbWl0Lmh0bWwgWyBG
YWlsdXJlIF0KKyMgVGhlc2UgdGVzdHMgYXJlIGdlbmVyYXRpbmcgaW5jb25zaXN0ZW50IHJlc3Vs
dHMgYmV0d2VlbiBteSBtYWNoaW5lIChBTUQpIGFuZCB0ZXN0IGJvdHMgKElOVEVMKQord2Via2l0
Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9idWZmZXJzL2J1ZmZlci11bmlu
aXRpYWxpemVkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJz
L2ZlZWRiYWNrLWxvb3AuaHRtbCBbIFNraXAgXSAKK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL2NsaXBwaW5nLXdpZGUtcG9pbnRzLmh0bWwgWyBT
a2lwIF0gCit3ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1
cmVzL21pc2MvY29weS10ZXgtaW1hZ2UtMmQtZm9ybWF0cy5odG1sIFsgU2tpcCBdIAord2Via2l0
Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdl
dC1jYWxscy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC0zZC1zaXplLWxpbWl0Lmh0bWwgWyBTa2lwIF0K
Kwogd2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcmVuZGVyaW5n
L2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0b2Zib3VuZHMuaHRtbCBbIFNsb3cgXQogCiBbIERl
YnVnIF0gZmFzdC93b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbCBbIFNsb3cgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0LWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOTg0MTc0ZWQ2NGMzYzQwMjRiN2EzZDFjYjAwNDA4YzRlMDFk
YmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2
ZS1yZXN0YXJ0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMTggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWwgbGFuZz0iZW4iPgorCis8aGVhZD4KKyAgICA8dGl0bGU+V2ViR0wgMiBTYW1wbGVz
IC0gZHJhd19wcmltaXRpdmVfcmVzdGFydDwvdGl0bGU+CisgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iMi4wLjAvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8c2NyaXB0
IHNyYz0iMi4wLjAvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisgICAgPGRpdiBpZD0iaW5mbyI+V2ViR0wgMiBTYW1wbGVzIC0gZHJhd19wcmltaXRpdmVfcmVz
dGFydDwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPHNjcmlwdCBp
ZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4jdmVyc2lvbiAzMDAgZXMKKyAgICAgICAg
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICBwcmVjaXNpb24gaGlnaHAgaW50OworCisg
ICAgICAgIGxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzIgcG9zOworCisgICAgICAgIHZvaWQg
bWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAu
MCwgMS4wKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBpZD0iZnMi
IHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworICAgICAgICBwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7CisKKyAgICAg
ICAgb3V0IHZlYzQgY29sb3I7CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29sb3IgPSB2ZWM0KDEuMCwgMC41LCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
J3VzZSBzdHJpY3QnOworICAgICAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKKyAgICAg
ICAgLy8gLS0gSW5pdCBDYW52YXMKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgICAgICBjYW52YXMud2lkdGggPSAyMDA7CisgICAgICAg
IGNhbnZhcy5oZWlnaHQgPSBjYW52YXMud2lkdGg7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoY2FudmFzKTsKKworICAgICAgICAvLyAtLSBJbml0IFdlYkdMIENvbnRleHQKKyAg
ICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicsIHsgYW50aWFsaWFzOiBm
YWxzZSB9KTsKKyAgICAgICAgdmFyIGlzV2ViR0wyID0gISFnbDsKKyAgICAgICAgaWYgKCFpc1dl
YkdMMikgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiV2ViR0wgMiBjb250ZXh0IGRvZXMgbm90
IGV4aXN0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0ZXN0
UGFzc2VkKCJXZWJHTCAyIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAgICAgLy8gLS0gSW5pdCBQ
cm9ncmFtCisgICAgICAgIHZhciBwcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2cyIs
ICJmcyJdKTsKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAvLyAt
LSBJbml0IEJ1ZmZlcgorICAgICAgICB2YXIgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KFsK
KyAgICAgICAgICAgIC0xLjAsIC0xLjAsCisgICAgICAgICAgICAtMS4wLCAgMS4wLAorICAgICAg
ICAgICAgIDEuMCwgLTEuMCwKKyAgICAgICAgICAgICAxLjAsICAxLjAKKyAgICAgICAgXSk7CisK
KyAgICAgICAgdmFyIHZlcnRleFBvc0J1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4UG9zQnVmZmVyKTsKKyAgICAg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJB
Vyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKworICAg
ICAgICB2YXIgbnVtX3ZlcnRpY2VzID0gNjsKKyAgICAgICAgdmFyIGluZGljZXMgPSBuZXcgVWlu
dDE2QXJyYXkoWworICAgICAgICAgICAgMCwgMSwgMiwgMiwgMywgMQorICAgICAgICBdKTsKKwor
ICAgICAgICB2YXIgdmVydGV4RWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
ICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhFbGVtZW50
QnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
aW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKworICAgICAgICAvLyAtLSBJbml0IFZlcnRleCBBcnJh
eQorICAgICAgICB2YXIgdmVydGV4QXJyYXkgPSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAg
ICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOworCisgICAgICAgIHZhciB2ZXJ0
ZXhQb3NMb2NhdGlvbiA9IDA7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVS
LCB2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2
ZXJ0ZXhQb3NMb2NhdGlvbik7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4
UG9zTG9jYXRpb24sIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIGdsLmJpbmRC
dWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHZlcnRleEVsZW1lbnRCdWZmZXIpOworCisg
ICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShudWxsKTsKKworICAgICAgICAvLyAtLSBSZW5kZXIK
KyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXko
dmVydGV4QXJyYXkpOworCisgICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYs
IGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKworICAgICAgICAvLyAtLSBEZWxldGUgV2ViR0wgcmVz
b3VyY2VzCisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcih2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAg
ICBnbC5kZWxldGVCdWZmZXIodmVydGV4RWxlbWVudEJ1ZmZlcik7CisgICAgICAgIGdsLmRlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZlcnRleEFy
cmF5KTsKKyAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0Lmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNmVkODIxNDcxZjAwZmI2N2UxNjYzNGZmNDA3MDUwNmEyYTNmYzgxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0Lmh0bWwKQEAg
LTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorCis8aGVh
ZD4KKyAgICA8dGl0bGU+V2ViR0wgMiBTYW1wbGVzIC0gZHJhd19wcmltaXRpdmVfcmVzdGFydDwv
dGl0bGU+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iMi4wLjAvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iMi4wLjAvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy93ZWJnbC10ZXN0LXV0aWxzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGRpdiBpZD0iaW5mbyI+V2ViR0wg
MiBTYW1wbGVzIC0gZHJhd19wcmltaXRpdmVfcmVzdGFydDwvZGl2PgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCisgICAgPHNjcmlwdCBpZD0idnMiIHR5cGU9Ingtc2hhZGVyL3gtdmVy
dGV4Ij4jdmVyc2lvbiAzMDAgZXMKKyAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgaW50OworCisgICAgICAgIGxheW91dChsb2NhdGlvbiA9IDAp
IGluIHZlYzIgcG9zOworCisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAgIDwv
c2NyaXB0PgorCisgICAgPHNjcmlwdCBpZD0iZnMiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQi
PiN2ZXJzaW9uIDMwMCBlcworICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAg
IHByZWNpc2lvbiBoaWdocCBpbnQ7CisKKyAgICAgICAgb3V0IHZlYzQgY29sb3I7CisKKyAgICAg
ICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29sb3IgPSB2ZWM0KDEuMCwg
MC41LCAwLjAsIDEuMCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+
CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICB2YXIg
d3R1ID0gV2ViR0xUZXN0VXRpbHM7CisKKyAgICAgICAgLy8gLS0gSW5pdCBDYW52YXMKKyAgICAg
ICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgICAg
ICBjYW52YXMud2lkdGggPSAyMDA7CisgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXMud2lk
dGg7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKworICAgICAg
ICAvLyAtLSBJbml0IFdlYkdMIENvbnRleHQKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENv
bnRleHQoJ3dlYmdsMicsIHsgYW50aWFsaWFzOiBmYWxzZSB9KTsKKyAgICAgICAgdmFyIGlzV2Vi
R0wyID0gISFnbDsKKyAgICAgICAgaWYgKCFpc1dlYkdMMikgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiV2ViR0wgMiBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB0ZXN0UGFzc2VkKCJXZWJHTCAyIGNvbnRleHQgZXhp
c3RzIik7CisKKyAgICAgICAgLy8gLS0gSW5pdCBQcm9ncmFtCisgICAgICAgIHZhciBwcm9ncmFt
ID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2cyIsICJmcyJdKTsKKyAgICAgICAgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtKTsKKworICAgICAgICAvLyAtLSBJbml0IEJ1ZmZlcgorICAgICAgICB2YXIg
dmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgICAgIC0xLjAsIC0xLjAsCisg
ICAgICAgICAgICAtMS4wLCAgMS4wLAorICAgICAgICAgICAgIDEuMCwgLTEuMCwKKyAgICAgICAg
ICAgICAxLjAsICAxLjAKKyAgICAgICAgXSk7CisKKyAgICAgICAgdmFyIHZlcnRleFBvc0J1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JV
RkZFUiwgdmVydGV4UG9zQnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIC8vIGh0dHBzOi8vd3d3
Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8yLjAvIzUuMTgKKyAgICAg
ICAgLy8gV2ViR0wgMi4wIGJlaGF2ZXMgYXMgdGhvdWdoIFBSSU1JVElWRV9SRVNUQVJUX0ZJWEVE
X0lOREVYIHdlcmUgYWx3YXlzIGVuYWJsZWQuIAorICAgICAgICB2YXIgTUFYX1VOU0lHTkVEX1NI
T1JUID0gNjU1MzU7CisgICAgICAgIHZhciBudW1fdmVydGljZXMgPSA3OworICAgICAgICB2YXIg
aW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShbCisgICAgICAgICAgICAwLCAxLCAyLCBNQVhfVU5T
SUdORURfU0hPUlQsIDIsIDMsIDEKKyAgICAgICAgXSk7CisKKyAgICAgICAgdmFyIHZlcnRleEVs
ZW1lbnRCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdmVydGV4RWxlbWVudEJ1ZmZlcik7CisgICAgICAgIGds
LmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGdsLlNUQVRJQ19E
UkFXKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbnVs
bCk7CisKKyAgICAgICAgLy8gLS0gSW5pdCBWZXJ0ZXggQXJyYXkKKyAgICAgICAgdmFyIHZlcnRl
eEFycmF5ID0gZ2wuY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgZ2wuYmluZFZlcnRleEFy
cmF5KHZlcnRleEFycmF5KTsKKworICAgICAgICB2YXIgdmVydGV4UG9zTG9jYXRpb24gPSAwOwor
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4UG9zQnVmZmVyKTsK
KyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4UG9zTG9jYXRpb24pOwor
ICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleFBvc0xvY2F0aW9uLCAyLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
UiwgbnVsbCk7CisgICAgICAgIAorICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCB2ZXJ0ZXhFbGVtZW50QnVmZmVyKTsKKworICAgICAgICBnbC5iaW5kVmVydGV4
QXJyYXkobnVsbCk7CisKKyAgICAgICAgLy8gLS0gUmVuZGVyCisgICAgICAgIGdsLmNsZWFyQ29s
b3IoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisKKyAgICAgICAgZ2wuYmluZFZlcnRleEFycmF5KHZlcnRleEFycmF5KTsKKworICAg
ICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVfU1RSSVAsIDcsIGdsLlVOU0lHTkVEX1NI
T1JULCAwKTsKKworICAgICAgICAvLyAtLSBEZWxldGUgV2ViR0wgcmVzb3VyY2VzCisgICAgICAg
IGdsLmRlbGV0ZUJ1ZmZlcih2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5kZWxldGVCdWZm
ZXIodmVydGV4RWxlbWVudEJ1ZmZlcik7CisgICAgICAgIGdsLmRlbGV0ZVByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgICAgIGdsLmRlbGV0ZVZlcnRleEFycmF5KHZlcnRleEFycmF5KTsKKyAgICB9KSgp
OworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350806</attachid>
            <date>2018-09-25 15:52:34 -0700</date>
            <delta_ts>2018-09-25 17:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189625-20180925155233.patch</filename>
            <type>text/plain</type>
            <size>24709</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA5MTk3NTBkNjQ3MTVm
NTA5NDQ4NGQ0OTU1MjIzZWUzMTJlNDE1Zi4uNWU3MGJhMmE0NWYzZjRjYzI5MDJkMjM4MjIzNzhk
YmFjYmFiYjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgMiBDb25mb3Jt
YW5jZTogcHJpbWl0aXZlIHJlc3RhcnQgYW5kIGRyYXdfcHJpbWl0aXZlX3Jlc3RhcnQgV2ViR0wy
IHNhbXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg4MjYyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgUmVmIHRlc3Q6IHdlYmdsL3dlYmdsMi1w
cmltaXRpdmUtcmVzdGFydC5odG1sLgorCisgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBQ
cmltaXRpdmUgUmVzdGFydCBGaXhlZCBJbmRleCBhcyBleHBlY3RlZCAKKyAgICAgICAgYnkgdGhl
IFdlYkdMIDIgc3BlY2lmaWNhdGlvbnMuIAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldExhc3RJbmRleCk6IFRlbXBsYXRlIHRoYXQgbXVz
dCBiZSBkZWZpbmVkIGluIGhlYWRlci4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwcmltaXRpdmVSZXN0YXJ0SW5kZXgpOgor
CiAyMDE4LTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVXNlIGEgVmFyaWFudCBmb3IgRm9ybURhdGFFbGVtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDM1MjM0NzdlYmU1MmEyZmVmZTFlN2NkMjU1ZTI0N2YzNDFmOWEwOTQuLjM1NDc1ZmM5MzVk
YmI3NDE3NTA5MDU1MjFhOGQ0ZWZkNTRlOTAwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMDIwLDI2ICsy
MDIwLDE1IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5
Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnCiAgICAgaWYgKCFtYXhJbmRleCkgewog
ICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4IGluIHRoZSBlbnRpcmUgYnVmZmVy
IGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU6IHsKLSAgICAgICAg
ICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1Ynl0ZSo+KGJ1
ZmZlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGZvciAoR0MzRHNpemVpcHRyIGkgPSAwOyBpIDwg
bnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJbmRleCA9IG1heEluZGV4ID8g
c3RkOjptYXgobWF4SW5kZXgudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pKSA6
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKTsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURToKKyAgICAgICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8
R0MzRHVieXRlPihidWZmZXIsIDAsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JU
OiB7Ci0gICAgICAgICAgICBudW1FbGVtZW50cyAvPSBzaXplb2YoR0MzRHVzaG9ydCk7Ci0gICAg
ICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9y
dCo+KGJ1ZmZlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGZvciAoR0MzRHNpemVpcHRyIGkgPSAw
OyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJbmRleCA9IG1heElu
ZGV4ID8gc3RkOjptYXgobWF4SW5kZXgudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBb
aV0pKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKTsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBtYXhJbmRleCA9IGdldE1h
eEluZGV4PEdDM0R1c2hvcnQ+KGJ1ZmZlciwgMCwgbnVtRWxlbWVudHMgLyBzaXplb2YoR0MzRHVz
aG9ydCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOiB7Ci0gICAgICAgICAgICBudW1FbGVtZW50cyAv
PSBzaXplb2YoR0MzRHVpbnQpOwotICAgICAgICAgICAgY29uc3QgR0MzRHVpbnQqIHAgPSBzdGF0
aWNfY2FzdDxjb25zdCBHQzNEdWludCo+KGJ1ZmZlci0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGZv
ciAoR0MzRHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAg
ICAgICBtYXhJbmRleCA9IG1heEluZGV4ID8gc3RkOjptYXgobWF4SW5kZXgudmFsdWUoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKTsK
KyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgbWF4SW5kZXggPSBnZXRNYXhJbmRleDxHQzNEdWludD4oYnVmZmVyLCAwLCBudW1FbGVtZW50
cyAvIHNpemVvZihHQzNEdWludCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA4ODI4NThjNmRjM2ZmMmNlOTQwZjc1NTU5ZGVlNTZhNDFiOGQ1Nzlk
Li44NTc0ZmNlYmY5OTMzMmYyMzUxM2RiMGE3YzJkM2VhMGJlYzg1YzY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUoR0MzRHNpemVpIGNvdW50LCBHQzNEZW4KIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZShHQzNE
c2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0LCB1bnNpZ25lZCYg
bnVtRWxlbWVudHNSZXF1aXJlZCkKIHsKICAgICBBU1NFUlQoY291bnQgPj0gMCAmJiBvZmZzZXQg
Pj0gMCk7Ci0gICAgdW5zaWduZWQgbGFzdEluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBtYXhJbmRl
eCA9IDA7CiAgICAgCiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIg
PSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogCkBA
IC0yMDE5LDQxICsyMDE5LDI0IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVJbmRleEFycmF5UHJlY2lzZShHQzNEc2l6ZWkgY291bnQsIEdDM0RlCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50
QXJyYXlCdWZmZXIoKSkKKyAgICBhdXRvIGJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+ZWxl
bWVudEFycmF5QnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHVuc2lnbmVkIGxvbmcgdW9mZnNldCA9IG9mZnNldDsKLSAgICB1bnNpZ25lZCBs
b25nIG4gPSBjb3VudDsKLQotICAgIGlmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9JTlQpIHsKLSAgICAgICAgLy8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1lbnQgb2Zmc2V0Lgot
ICAgICAgICB1b2Zmc2V0IC89IHNpemVvZihHQzNEdWludCk7Ci0gICAgICAgIGNvbnN0IEdDM0R1
aW50KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihlbGVtZW50QXJyYXlCdWZmZXIt
PmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKLSAgICAgICAgd2hpbGUg
KG4tLSA+IDApIHsKLSAgICAgICAgICAgIGlmICgqcCA+IGxhc3RJbmRleCkKLSAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAqcDsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQpIHsKLSAg
ICAgICAgLy8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1lbnQgb2Zmc2V0LgotICAgICAgICB1b2Zmc2V0
IC89IHNpemVvZihHQzNEdXNob3J0KTsKLSAgICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0
YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRB
cnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKLSAgICAgICAgd2hpbGUgKG4tLSA+IDAp
IHsKLSAgICAgICAgICAgIGlmICgqcCA+IGxhc3RJbmRleCkKLSAgICAgICAgICAgICAgICBsYXN0
SW5kZXggPSAqcDsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkgewotICAgICAgICBjb25z
dCBHQzNEdWJ5dGUqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdWJ5dGUqPihlbGVtZW50QXJy
YXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpLT5kYXRhKCkpICsgdW9mZnNldDsKLSAgICAg
ICAgd2hpbGUgKG4tLSA+IDApIHsKLSAgICAgICAgICAgIGlmICgqcCA+IGxhc3RJbmRleCkKLSAg
ICAgICAgICAgICAgICBsYXN0SW5kZXggPSAqcDsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAg
fQorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0lOVDoKKyAgICAgICAgbWF4SW5kZXggPSBnZXRNYXhJbmRleDxHQzNEdWludD4oYnVmZmVy
LCBvZmZzZXQsIGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgIG1heEluZGV4ID0gZ2V0TWF4SW5kZXg8R0Mz
RHVzaG9ydD4oYnVmZmVyLCBvZmZzZXQsIGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURToKKyAgICAgICAgbWF4SW5kZXggPSBn
ZXRNYXhJbmRleDxHQzNEdWJ5dGU+KGJ1ZmZlciwgb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIC8vIFRoZW4gc2V0IHRoZSBsYXN0IGluZGV4IGluIHRoZSBpbmRl
eCBhcnJheSBhbmQgbWFrZSBzdXJlIGl0IGlzIHZhbGlkLgotICAgIGF1dG8gY2hlY2tlZE51bUVs
ZW1lbnRzUmVxdWlyZWQgPSBjaGVja2VkQWRkQW5kTXVsdGlwbHk8dW5zaWduZWQ+KGxhc3RJbmRl
eCwgMSwgMSk7CisgICAgLy8gVGhlbiBzZXQgdGhlIG1heGl1bXVtIGluZGV4IGluIHRoZSBpbmRl
eCBhcnJheSBhbmQgbWFrZSBzdXJlIGl0IGlzIHZhbGlkLgorICAgIGF1dG8gY2hlY2tlZE51bUVs
ZW1lbnRzUmVxdWlyZWQgPSBjaGVja2VkQWRkQW5kTXVsdGlwbHk8dW5zaWduZWQ+KG1heEluZGV4
LCAxLCAxKTsKICAgICBpZiAoIWNoZWNrZWROdW1FbGVtZW50c1JlcXVpcmVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbnVtRWxlbWVudHNSZXF1aXJlZCA9IGNoZWNrZWROdW1FbGVtZW50
c1JlcXVpcmVkLnZhbHVlKCk7CkBAIC0yMzA1LDYgKzIyODgsMjIgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3Qs
IEdDM0RzaXoKICAgICBtYXJrQ29udGV4dENoYW5nZWRBbmROb3RpZnlDYW52YXNPYnNlcnZlcigp
OwogfQogCisjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKK3N0YXRpYyBHQzNEdWlu
dCBnZXRSZXN0YXJ0SW5kZXgoR0MzRGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOgorICAgICAgICByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxHQzNEdWJ5dGU+OjptYXgoKTsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8R0MzRHVzaG9ydD46Om1heCgpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0lOVDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8R0MzRHVp
bnQ+OjptYXgoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNE
c2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQpCiB7CiAgICAgdW5z
aWduZWQgbnVtRWxlbWVudHMgPSAwOwpAQCAtMjMzMyw2ICsyMzMyLDExIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXpl
aSBjb3VudCwgR0MzCiAgICAgaWYgKCFpc0dMRVMyTlBPVFN0cmljdCgpKQogICAgICAgICB1c2Vz
RmFsbGJhY2tUZXh0dXJlID0gY2hlY2tUZXh0dXJlQ29tcGxldGVuZXNzKCJkcmF3RWxlbWVudHMi
LCB0cnVlKTsKIAorI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCisgICAgaWYgKGlz
V2ViR0wyKCkpCisgICAgICAgIG1fY29udGV4dC0+cHJpbWl0aXZlUmVzdGFydEluZGV4KGdldFJl
c3RhcnRJbmRleCh0eXBlKSk7CisjZW5kaWYKKwogICAgIHsKICAgICAgICAgSW5zcGVjdG9yU2Nv
cGVkU2hhZGVyUHJvZ3JhbUhpZ2hsaWdodCBzY29wZWRIaWdobGlnaHQoKnRoaXMsIG1fY3VycmVu
dFByb2dyYW0uZ2V0KCkpOwogCkBAIC02NDM5LDYgKzY0NDMsMTEgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0Mz
RHNpemVpIGMKICAgICBpZiAoIWlzR0xFUzJOUE9UU3RyaWN0KCkpCiAgICAgICAgIGNoZWNrVGV4
dHVyZUNvbXBsZXRlbmVzcygiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIiwgdHJ1ZSk7CiAKKyNpZiBV
U0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQorICAgIGlmIChpc1dlYkdMMigpKQorICAgICAg
ICBtX2NvbnRleHQtPnByaW1pdGl2ZVJlc3RhcnRJbmRleChnZXRSZXN0YXJ0SW5kZXgodHlwZSkp
OworI2VuZGlmCisKICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsK
IAogICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpICYmIHZlcnRleEF0dHJpYjBTaW11bGF0ZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKaW5kZXggMDhiYzRmYzhiYTg0NWU3MmE4N2FhYWU4Y2Q3MTQ4ZWQ2ZDU4NzRl
NS4uOTZjYzE3YmQ4NWIzMTNlOTM3OWQ5YjYwYzU1MmM3MjE3OWQ1Nzg5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUg
IldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9D
b25zb2xlVHlwZXMuaD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aWYgRU5BQkxFKFdFQkdMMikKQEAgLTgzNCw2ICs4MzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT2Zm
c2NyZWVuQ2FudmFzKiBvZmZzY3JlZW5DYW52YXMoKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxUPiBjaGVja2VkQWRkQW5kTXVsdGlwbHkoVCB2YWx1
ZSwgVCBhZGQsIFQgbXVsdGlwbHkpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1bnNpZ25l
ZCBnZXRNYXhJbmRleChjb25zdCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gZWxlbWVudEFycmF5
QnVmZmVyLCBHQzNEaW50cHRyIHVvZmZzZXQsIEdDM0RzaXplaSBuKTsKIAogcHJpdmF0ZToKICAg
ICBib29sIHZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7CkBAIC04
NTgsNiArODYwLDMwIEBAIGlubGluZSBzdGQ6Om9wdGlvbmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZhbHVlCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXN1bHQudW5zYWZlR2V0KCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUg
dW5zaWduZWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0TWF4SW5kZXgoY29uc3QgUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlciwgR0MzRGludHB0ciB1b2Zm
c2V0LCBHQzNEc2l6ZWkgbikKK3sKKyAgICB1bnNpZ25lZCBtYXhJbmRleCA9IDA7CisgICAgVCBy
ZXN0YXJ0SW5kZXggPSAwOworCisjaWYgRU5BQkxFKFdFQkdMMikKKyAgICAvLyBXZWJHTCAyIHNw
ZWMgZW5mb3JjZXMgdGhhdCBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCBpcyBhbHdh
eXMgZW5hYmxlZCwgc28gaWdub3JlIHRoZSByZXN0YXJ0IGluZGV4LgorICAgIGlmIChpc1dlYkdM
MigpKQorICAgICAgICByZXN0YXJ0SW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgo
KTsKKyNlbmRpZgorCisgICAgLy8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1lbnQgb2Zmc2V0LgorICAg
IHVvZmZzZXQgLz0gc2l6ZW9mKFQpOworICAgIGNvbnN0IFQqIHAgPSBzdGF0aWNfY2FzdDxjb25z
dCBUKj4oZWxlbWVudEFycmF5QnVmZmVyLT5kYXRhKCkpICsgdW9mZnNldDsKKyAgICB3aGlsZSAo
bi0tID4gMCkgeworICAgICAgICBpZiAoKnAgIT0gcmVzdGFydEluZGV4ICYmICpwID4gbWF4SW5k
ZXgpCisgICAgICAgICAgICBtYXhJbmRleCA9ICpwOworICAgICAgICArK3A7CisgICAgfQorCisg
ICAgcmV0dXJuIG1heEluZGV4OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLCBpc1dlYkdMKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBjOWVhMWRmYmZjZWNi
ZjY3MmMyZTgyYmUzOTQ0YThhNzgwMjA3ODlkLi5mNDVlZDNiZjM1ZDY3YTc2NTEzZTVkYzIwMGNh
ZDA3ZjQwOTc1OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTcxOCw3ICs3MTgsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVCA9IDB4OTEyRiwKICAgICAgICAgTUFYX0VMRU1F
TlRfSU5ERVggPSAweDhENkIsCiAgICAgICAgIE5VTV9TQU1QTEVfQ09VTlRTID0gMHg5MzgwLAot
ICAgICAgICBURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMgPSAweDgyREYsIAorICAgICAgICBURVhU
VVJFX0lNTVVUQUJMRV9MRVZFTFMgPSAweDgyREYsCisgICAgICAgIFBSSU1JVElWRV9SRVNUQVJU
X0ZJWEVEX0lOREVYID0gMHg4RDY5LAorICAgICAgICBQUklNSVRJVkVfUkVTVEFSVCA9IDB4OEY5
RCwKIAogICAgICAgICAvLyBPcGVuR0wgRVMgMyBjb25zdGFudHMKICAgICAgICAgTUFQX1JFQURf
QklUID0gMHgwMDAxCkBAIC0xMTUxLDYgKzExNTMsMTAgQEAgcHVibGljOgogICAgIFJlZlB0cjxJ
bWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CiAgICAgYm9vbCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIAorI2lmIFVTRShP
UEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCisgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgo
R0MzRHVpbnQpOworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHRleElt
YWdlSU9TdXJmYWNlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIElPU3VyZmFjZVJlZiwgR0MzRHVpbnQgcGxhbmUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQppbmRleCBiYWQ0NDVkMjljNTljODNiMDZlMTBiNWJiMmUwNDM4MzAy
YmE1NzQ4Li5jYWFjYzRhZGM1MzU4ODgwMTY3M2JlYjg3NDM1YTNjNjNiZjdkNzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHQzRENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTI2NCw2ICsyNjQsOSBAQCBHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZAogICAgIGVsc2UKICAgICAgICAgbV9jb250ZXh0T2JqID0gW1tFQUdMQ29u
dGV4dCBhbGxvY10gaW5pdFdpdGhBUEk6YXBpIHNoYXJlZ3JvdXA6c2hhcmVkQ29udGV4dC0+bV9j
b250ZXh0T2JqLnNoYXJlZ3JvdXBdOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAg
aWYgKG1fYXR0cnMuaXNXZWJHTDIpCisgICAgICAgIDo6Z2xFbmFibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKICNlbHNlCiAgICAgVmVjdG9yPENH
TFBpeGVsRm9ybWF0QXR0cmlidXRlPiBhdHRyaWJzOwogICAgIENHTFBpeGVsRm9ybWF0T2JqIHBp
eGVsRm9ybWF0T2JqID0gMDsKQEAgLTM0Nyw2ICszNTAsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9z
dFdpbmQKICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgY29udGV4dCB0byB0aGUgb25lIGdpdmVuIHRv
IHVzLgogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaik7CiAKKyAgICAvLyBX
ZWJHTCAyIGV4cGVjdHMgRVMgMy1vbmx5IFBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYIHRv
IGJlIGVuYWJsZWQ7IHdlIG11c3QgZW11bGF0ZSB0aGlzIG9uIG5vbi1FUyAzIHN5c3RlbXMuCisg
ICAgaWYgKG1faXNGb3JXZWJHTDIpCisgICAgICAgIDo6Z2xFbmFibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OlBSSU1JVElWRV9SRVNUQVJUKTsKKwogI2VuZGlmIC8vICFVU0UoT1BFTkdMX0VTKQogICAg
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNmM5YzNmN2YwYzAyNjY0ZTE1MTEzNWM4YjQ0ZWU4
ZDZhOTIyOTlmYS4uZjBjZDE1OTQyM2Q3ZTYyNjg1YTNiODgzOWY4MTdkZjE1MGU3YjE4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0yMDcw
LDYgKzIwNzAsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliRGl2aXNv
cihHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXNvcikKICAgICBnZXRFeHRlbnNpb25zKCku
dmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKKyNpZiBVU0UoT1BFTkdM
KSAmJiBFTkFCTEUoV0VCR0wyKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJpbWl0aXZlUmVz
dGFydEluZGV4KEdDM0R1aW50IGluZGV4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIDo6Z2xQcmltaXRpdmVSZXN0YXJ0SW5kZXgoaW5kZXgpOworfQorI2VuZGlmCisKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5Nzc0ODZhNjc2
ZTJkYzNkMDYzODkzYzQ2YWQxOTdmYTJjMWNjNzQuLjU4ZWZhYTc1NGFhNjM5MjA3MTM3OTNiODYy
NWEwNzQ1MjdhNTE1YzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOS0xNCAgSnVzdGlu
IEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIDIgQ29uZm9ybWFu
Y2U6IHByaW1pdGl2ZSByZXN0YXJ0IGFuZCBkcmF3X3ByaW1pdGl2ZV9yZXN0YXJ0IFdlYkdMMiBz
YW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
OTYyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI4ODI2MjA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBQcmlt
aXRpdmUgUmVzdGFydCBGaXhlZCBJbmRleCBhcyBleHBlY3RlZCAKKyAgICAgICAgYnkgdGhlIFdl
YkdMIDIgc3BlY2lmaWNhdGlvbnMuIAorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tp
cCBzb21lIGZsYWt5IHRlc3RzIGJldHdlZW4gZGlmZmVyZW50IE1hYyBtYWNoaW5lcyB1bmRlciAy
LjAuMC4gCisgICAgICAgICogd2ViZ2wvd2ViZ2wyLXByaW1pdGl2ZS1yZXN0YXJ0Lmh0bWw6IENh
bmFyeSByZWYgdGVzdCB0byBiZSBydW4gYXMgcGFydCBvZiBMYXlvdXRUZXN0cyBzdWl0ZS4KKyAg
ICAgICAgKiB3ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQtZXhwZWN0ZWQuaHRtbDoKKwog
MjAxOC0wOS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHNwZWVkIHVwIHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWRhdGFiYXNlLWV4
cGFuZC1xdW90YS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3Mzc1ZDk2M2U2NzYyMzMxNjg2
MDlkMzU3OTEzOTljNmQwZjg3YzEwLi5jZWQ4M2RhNGFmMThhMjU4YTk0NmQxZjVjMGU3YWI3N2Rl
NTk5ODg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk1MiwxMyArOTUyLDE1IEBAIHdlYmtpdC5v
cmcvYi8xMzk2MzkgWyBEZWJ1ZyBdIGNzc29tL25vbi1zdWJwaXhlbC1zY3JvbGwtdG9wLWxlZnQt
dmFsdWVzLmh0bWwgWyBTCiAKIHdlYmtpdC5vcmcvYi8xMzk2NDAgWyBEZWJ1ZyBdIHdlYmdsLzEu
MC4yL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zaGFkZXItdW5pZm9ybS1wYWNraW5nLXJlc3RyaWN0
aW9ucy5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvYnVmZmVycy9idWZmZXItdW5pbml0aWFsaXplZC5odG1sIFsgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2Vi
Z2wtZHJhdy1idWZmZXJzLmh0bWwgWyBGYWlsdXJlIFNsb3cgXQotd2Via2l0Lm9yZy9iLzE4OTY0
MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZlZWRiYWNrLWxvb3AuaHRt
bCBbIEZhaWx1cmUgXSAKLXdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvcmVuZGVyaW5nL2NsaXBwaW5nLXdpZGUtcG9pbnRzLmh0bWwgWyBGYWlsdXJlIF0gCi13ZWJr
aXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvY29w
eS10ZXgtaW1hZ2UtMmQtZm9ybWF0cy5odG1sIFsgRmFpbHVyZSBdIAotd2Via2l0Lm9yZy9iLzE4
OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5o
dG1sIFsgRmFpbHVyZSBTbG93IF0KLXdlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UyL3RleHR1cmVzL21pc2MvdGV4LTNkLXNpemUtbGltaXQuaHRtbCBbIEZhaWx1cmUg
XQorIyBUaGVzZSB0ZXN0cyBhcmUgZ2VuZXJhdGluZyBpbmNvbnNpc3RlbnQgcmVzdWx0cyBiZXR3
ZWVuIG15IG1hY2hpbmUgKEFNRCkgYW5kIHRlc3QgYm90cyAoSU5URUwpCit3ZWJraXQub3JnL2Iv
MTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2J1ZmZlcnMvYnVmZmVyLXVuaW5pdGlhbGl6
ZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL3dlYmdsLWRyYXctYnVmZmVycy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZmVlZGJh
Y2stbG9vcC5odG1sIFsgU2tpcCBdIAord2Via2l0Lm9yZy9iLzE4OTY0MSB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZS9yZW5kZXJpbmcvY2xpcHBpbmctd2lkZS1wb2ludHMuaHRtbCBbIFNraXAgXSAK
K3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy9jb3B5LXRleC1pbWFnZS0yZC1mb3JtYXRzLmh0bWwgWyBTa2lwIF0gCit3ZWJraXQub3JnL2Iv
MTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxz
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xODk2NDEgd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UyL3RleHR1cmVzL21pc2MvdGV4LTNkLXNpemUtbGltaXQuaHRtbCBbIFNraXAgXQorCiB3ZWJr
aXQub3JnL2IvMTg5NjQxIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZW5kZXJpbmcvYmxpdGZy
YW1lYnVmZmVyLWZpbHRlci1vdXRvZmJvdW5kcy5odG1sIFsgU2xvdyBdCiAKIFsgRGVidWcgXSBm
YXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sIFsgU2xvdyBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3dlYmdsL3dlYmdsMi1wcmltaXRpdmUtcmVzdGFydC1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ5ODQxNzRlZDY0YzNjNDAyNGI3YTNkMWNiMDA0MDhjNGUwMWRiZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3Rh
cnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bCBsYW5nPSJlbiI+CisKKzxoZWFkPgorICAgIDx0aXRsZT5XZWJHTCAyIFNhbXBsZXMgLSBkcmF3
X3ByaW1pdGl2ZV9yZXN0YXJ0PC90aXRsZT4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIy
LjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IjIuMC4wL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pz
L3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8
ZGl2IGlkPSJpbmZvIj5XZWJHTCAyIFNhbXBsZXMgLSBkcmF3X3ByaW1pdGl2ZV9yZXN0YXJ0PC9k
aXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0IGlkPSJ2cyIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2ZXJzaW9uIDMwMCBlcworICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7CisKKyAgICAgICAg
bGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiBwb3M7CisKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMC4wLCAxLjAp
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0IGlkPSJmcyIgdHlwZT0i
eC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNpb24gMzAwIGVzCisgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKKyAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGludDsKKworICAgICAgICBvdXQg
dmVjNCBjb2xvcjsKKworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb2xvciA9IHZlYzQoMS4wLCAwLjUsIDAuMCwgMS4wKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorCisgICAgPHNjcmlwdD4KKyAgICAoZnVuY3Rpb24gKCkgeworICAgICAgICAndXNlIHN0
cmljdCc7CisgICAgICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKworICAgICAgICAvLyAt
LSBJbml0IENhbnZhcworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7CisgICAgICAgIGNhbnZhcy53aWR0aCA9IDIwMDsKKyAgICAgICAgY2FudmFz
LmhlaWdodCA9IGNhbnZhcy53aWR0aDsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChjYW52YXMpOworCisgICAgICAgIC8vIC0tIEluaXQgV2ViR0wgQ29udGV4dAorICAgICAgICB2
YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wyJywgeyBhbnRpYWxpYXM6IGZhbHNlIH0p
OworICAgICAgICB2YXIgaXNXZWJHTDIgPSAhIWdsOworICAgICAgICBpZiAoIWlzV2ViR0wyKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXZWJHTCAyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RQYXNzZWQo
IldlYkdMIDIgY29udGV4dCBleGlzdHMiKTsKKworICAgICAgICAvLyAtLSBJbml0IFByb2dyYW0K
KyAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0p
OworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgIC8vIC0tIEluaXQg
QnVmZmVyCisgICAgICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAg
ICAgICAgLTEuMCwgLTEuMCwKKyAgICAgICAgICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgICAg
MS4wLCAtMS4wLAorICAgICAgICAgICAgIDEuMCwgIDEuMAorICAgICAgICBdKTsKKworICAgICAg
ICB2YXIgdmVydGV4UG9zQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5i
dWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgdmVydGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKyAg
ICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIG51bGwpOworCisgICAgICAgIHZh
ciBudW1fdmVydGljZXMgPSA2OworICAgICAgICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJh
eShbCisgICAgICAgICAgICAwLCAxLCAyLCAyLCAzLCAxCisgICAgICAgIF0pOworCisgICAgICAg
IHZhciB2ZXJ0ZXhFbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGds
LmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHZlcnRleEVsZW1lbnRCdWZmZXIp
OworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRpY2Vz
LCBnbC5TVEFUSUNfRFJBVyk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIG51bGwpOworCisgICAgICAgIC8vIC0tIEluaXQgVmVydGV4IEFycmF5CisgICAg
ICAgIHZhciB2ZXJ0ZXhBcnJheSA9IGdsLmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgICAgIGds
LmJpbmRWZXJ0ZXhBcnJheSh2ZXJ0ZXhBcnJheSk7CisKKyAgICAgICAgdmFyIHZlcnRleFBvc0xv
Y2F0aW9uID0gMDsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRl
eFBvc0J1ZmZlcik7CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHZlcnRleFBv
c0xvY2F0aW9uKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhQb3NMb2Nh
dGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIG51bGwpOworICAgICAgICAKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdmVydGV4RWxlbWVudEJ1ZmZlcik7CisKKyAgICAgICAg
Z2wuYmluZFZlcnRleEFycmF5KG51bGwpOworCisgICAgICAgIC8vIC0tIFJlbmRlcgorICAgICAg
ICBnbC5jbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheSh2ZXJ0ZXhB
cnJheSk7CisKKyAgICAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5T
SUdORURfU0hPUlQsIDApOworCisgICAgICAgIC8vIC0tIERlbGV0ZSBXZWJHTCByZXNvdXJjZXMK
KyAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKHZlcnRleFBvc0J1ZmZlcik7CisgICAgICAgIGdsLmRl
bGV0ZUJ1ZmZlcih2ZXJ0ZXhFbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOwor
ICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdsL3dlYmdsMi1wcmltaXRpdmUtcmVzdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZWQ4
MjE0NzFmMDBmYjY3ZTE2NjM0ZmY0MDcwNTA2YTJhM2ZjODEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC93ZWJnbDItcHJpbWl0aXZlLXJlc3RhcnQuaHRtbApAQCAtMCwwICsx
LDEyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisKKzxoZWFkPgorICAg
IDx0aXRsZT5XZWJHTCAyIFNhbXBsZXMgLSBkcmF3X3ByaW1pdGl2ZV9yZXN0YXJ0PC90aXRsZT4K
KyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIyLjAuMC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IjIuMC4w
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8ZGl2IGlkPSJpbmZvIj5XZWJHTCAyIFNhbXBs
ZXMgLSBkcmF3X3ByaW1pdGl2ZV9yZXN0YXJ0PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKyAgICA8c2NyaXB0IGlkPSJ2cyIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPiN2
ZXJzaW9uIDMwMCBlcworICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHBy
ZWNpc2lvbiBoaWdocCBpbnQ7CisKKyAgICAgICAgbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVj
MiBwb3M7CisKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvcywgMC4wLCAxLjApOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+
CisKKyAgICA8c2NyaXB0IGlkPSJmcyIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+I3ZlcnNp
b24gMzAwIGVzCisgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKKyAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGludDsKKworICAgICAgICBvdXQgdmVjNCBjb2xvcjsKKworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBjb2xvciA9IHZlYzQoMS4wLCAwLjUsIDAu
MCwgMS4wKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICAo
ZnVuY3Rpb24gKCkgeworICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIHZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKKworICAgICAgICAvLyAtLSBJbml0IENhbnZhcworICAgICAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgICAgIGNhbnZh
cy53aWR0aCA9IDIwMDsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhcy53aWR0aDsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworCisgICAgICAgIC8vIC0t
IEluaXQgV2ViR0wgQ29udGV4dAorICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgn
d2ViZ2wyJywgeyBhbnRpYWxpYXM6IGZhbHNlIH0pOworICAgICAgICB2YXIgaXNXZWJHTDIgPSAh
IWdsOworICAgICAgICBpZiAoIWlzV2ViR0wyKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJX
ZWJHTCAyIGNvbnRleHQgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHRlc3RQYXNzZWQoIldlYkdMIDIgY29udGV4dCBleGlzdHMiKTsK
KworICAgICAgICAvLyAtLSBJbml0IFByb2dyYW0KKyAgICAgICAgdmFyIHByb2dyYW0gPSB3dHUu
c2V0dXBQcm9ncmFtKGdsLCBbInZzIiwgImZzIl0pOworICAgICAgICBnbC51c2VQcm9ncmFtKHBy
b2dyYW0pOworCisgICAgICAgIC8vIC0tIEluaXQgQnVmZmVyCisgICAgICAgIHZhciB2ZXJ0aWNl
cyA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgICAgLTEuMCwgLTEuMCwKKyAgICAgICAg
ICAgIC0xLjAsICAxLjAsCisgICAgICAgICAgICAgMS4wLCAtMS4wLAorICAgICAgICAgICAgIDEu
MCwgIDEuMAorICAgICAgICBdKTsKKworICAgICAgICB2YXIgdmVydGV4UG9zQnVmZmVyID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGljZXMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIG51bGwpOworICAgICAgICAKKyAgICAgICAgLy8gaHR0cHM6Ly93d3cua2hyb25v
cy5vcmcvcmVnaXN0cnkvd2ViZ2wvc3BlY3MvbGF0ZXN0LzIuMC8jNS4xOAorICAgICAgICAvLyBX
ZWJHTCAyLjAgYmVoYXZlcyBhcyB0aG91Z2ggUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgg
d2VyZSBhbHdheXMgZW5hYmxlZC4gCisgICAgICAgIHZhciBNQVhfVU5TSUdORURfU0hPUlQgPSA2
NTUzNTsKKyAgICAgICAgdmFyIG51bV92ZXJ0aWNlcyA9IDc7CisgICAgICAgIHZhciBpbmRpY2Vz
ID0gbmV3IFVpbnQxNkFycmF5KFsKKyAgICAgICAgICAgIDAsIDEsIDIsIE1BWF9VTlNJR05FRF9T
SE9SVCwgMiwgMywgMQorICAgICAgICBdKTsKKworICAgICAgICB2YXIgdmVydGV4RWxlbWVudEJ1
ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhFbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wuYnVmZmVy
RGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wuU1RBVElDX0RSQVcpOwor
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBudWxsKTsKKwor
ICAgICAgICAvLyAtLSBJbml0IFZlcnRleCBBcnJheQorICAgICAgICB2YXIgdmVydGV4QXJyYXkg
PSBnbC5jcmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmVy
dGV4QXJyYXkpOworCisgICAgICAgIHZhciB2ZXJ0ZXhQb3NMb2NhdGlvbiA9IDA7CisgICAgICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3NCdWZmZXIpOworICAgICAg
ICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhQb3NMb2NhdGlvbik7CisgICAgICAg
IGdsLnZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4UG9zTG9jYXRpb24sIDIsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBudWxs
KTsKKyAgICAgICAgCisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIHZlcnRleEVsZW1lbnRCdWZmZXIpOworCisgICAgICAgIGdsLmJpbmRWZXJ0ZXhBcnJheShu
dWxsKTsKKworICAgICAgICAvLyAtLSBSZW5kZXIKKyAgICAgICAgZ2wuY2xlYXJDb2xvcigwLjAs
IDAuMCwgMC4wLCAxLjApOworICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsK
KworICAgICAgICBnbC5iaW5kVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOworCisgICAgICAgIGds
LmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRV9TVFJJUCwgNywgZ2wuVU5TSUdORURfU0hPUlQsIDAp
OworCisgICAgICAgIC8vIC0tIERlbGV0ZSBXZWJHTCByZXNvdXJjZXMKKyAgICAgICAgZ2wuZGVs
ZXRlQnVmZmVyKHZlcnRleFBvc0J1ZmZlcik7CisgICAgICAgIGdsLmRlbGV0ZUJ1ZmZlcih2ZXJ0
ZXhFbGVtZW50QnVmZmVyKTsKKyAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgZ2wuZGVsZXRlVmVydGV4QXJyYXkodmVydGV4QXJyYXkpOworICAgIH0pKCk7CisgICAg
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>