<?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>218333</bug_id>
          
          <creation_ts>2020-10-29 05:33:14 -0700</creation_ts>
          <short_desc>Final refactor for WebGL implementation to use only GraphicsContextGL</short_desc>
          <delta_ts>2020-11-16 04:57:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217211</blocked>
    
    <blocked>218972</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702680</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-29 05:33:14 -0700</bug_when>
    <thetext>Final refactor for WebGL implementation to use only GraphicsContextGL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702690</commentid>
    <comment_count>1</comment_count>
      <attachid>412637</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-29 06:00:33 -0700</bug_when>
    <thetext>Created attachment 412637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702708</commentid>
    <comment_count>2</comment_count>
      <attachid>412643</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-29 07:18:35 -0700</bug_when>
    <thetext>Created attachment 412643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702878</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-29 14:48:21 -0700</bug_when>
    <thetext>Would be a bit easier to review if the unrelated whitespace changes were not part of the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704811</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-05 04:34:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/71074121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707162</commentid>
    <comment_count>5</comment_count>
      <attachid>414015</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-13 01:59:29 -0800</bug_when>
    <thetext>Created attachment 414015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707174</commentid>
    <comment_count>6</comment_count>
      <attachid>414021</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-13 02:35:24 -0800</bug_when>
    <thetext>Created attachment 414021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707184</commentid>
    <comment_count>7</comment_count>
      <attachid>414028</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-13 03:42:23 -0800</bug_when>
    <thetext>Created attachment 414028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707187</commentid>
    <comment_count>8</comment_count>
      <attachid>414030</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-13 04:05:49 -0800</bug_when>
    <thetext>Created attachment 414030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707303</commentid>
    <comment_count>9</comment_count>
      <attachid>414030</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-13 10:38:15 -0800</bug_when>
    <thetext>Comment on attachment 414030
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1790
&gt; +    static_cast&lt;GraphicsContextGLOpenGL*&gt;(m_context.get())-&gt;compressedTexImage2D(target, level, internalformat, width, height,

I think you should add SPECIALIZE_TYPE_TRAITS macros and use downcast&lt;&gt; for all these casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707713</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-16 01:16:57 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 414030 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707714</commentid>
    <comment_count>11</comment_count>
      <attachid>414201</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 01:22:22 -0800</bug_when>
    <thetext>Created attachment 414201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707720</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-16 01:34:13 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)

&gt; I think you should add SPECIALIZE_TYPE_TRAITS macros and use downcast&lt;&gt; for
&gt; all these casts.

I filed this as bug 218972, so it doesn&apos;t block landing this one. IIUC, this is landable given the r+?

I&apos;d rather first try to remove the code-paths altogether. They&apos;re a bit inconvenient to edit as in Apple env we don&apos;t compile these at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707768</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-16 04:57:37 -0800</bug_when>
    <thetext>Committed r269850: &lt;https://trac.webkit.org/changeset/269850&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414201.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412637</attachid>
            <date>2020-10-29 06:00:33 -0700</date>
            <delta_ts>2020-10-29 07:18:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201029150029.patch</filename>
            <type>text/plain</type>
            <size>218401</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRkNjZmZDI3MjZmYmQ3
MGU0YjhmNDU4Y2I5ZGJmYjRiMmNkZTkwZS4uZDVmYWIzY2QzOGRhMTdjZDVmMzMxYTI1OWM2OTk1
ZWYyNjBkMDQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMC0yOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTAtMjggIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFj
Zjg4YjQwNWQxMTgxNjA5Yjc2MWNmNDU2YTIzYWUzNDY0NmUzZjEuLjMzNGM0M2EwMGJlZWI1NGI5
NjJkMmMxOTE0NTA2NjY5OGMwMTRhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTAtMjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTEwLTI4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBD
TTogQWNjZXB0IGFkIGNsaWNrIGRhdGEgd2hlbiB0aGUgbGluayBvcGVucyBhIG5ldyB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDBlNzgxMDAzOTE3
ZTZmZDJhMjI2ODAzNzY1NjcxNDg3ODk5NTdkODUuLjgxMzMxY2U2ZjVkOTE3M2NkMTViYmY2Y2Rl
ZWFiY2VmZTZmODg2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCkBAIC05MSw3ICs5MSw3IEBAIFJlZjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJl
dHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IAorICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKQEAgLTE1NCw3ICsxNTQs
NyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh0cnVlKTsKICNlbmRpZgogICAgIGVsc2Ugewot
ICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7ICAg
IAorICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgICAgICBpZiAobmFtZSA9PSB3ZWJraXRhaXJwbGF5QXR0cikgewpAQCAtMTcx
LDcgKzE3MSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuCiB7CiAgICAgaWYgKCFwbGF5ZXIo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgaWYgKHZpZGVvRnVsbHNjcmVl
bk1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSkgewogICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJ
blBpY3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MCw3ICsxODAsNyBA
QCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbgogICAgIH0KIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpIAorICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
CkBAIC0zMDMsMTIgKzMwMywxMiBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIFJlZlB0
cjxNZWRpYVBsYXllcj4gcGxheWVyID0gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyKCk7CiAgICAg
aWYgKCFwbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHBsYXllci0+c2V0Vmlz
aWJsZUZvckNhbnZhcyh0cnVlKTsgLy8gTWFrZSBwbGF5ZXIgdmlzaWJsZSBvciBpdCB3b24ndCBk
cmF3LgogICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIGRlc3RSZWN0KTsK
IH0KIAotYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKIHsKICAgICBpZiAoIXBsYXllcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1Zp
ZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIApAQCAtMzM3
LDcgKzMzNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVu
dGVyRnVsbHNjcmVlbigpCiAgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgLy8gR2VuZXJhdGUgYW4gZXhjZXB0aW9uIGlmIHRoaXMgaXNuJ3QgY2FsbGVk
IGluIHJlc3BvbnNlIHRvIGEgdXNlciBnZXN0dXJlLCBvciBpZiB0aGUgCisgICAgLy8gR2VuZXJh
dGUgYW4gZXhjZXB0aW9uIGlmIHRoaXMgaXNuJ3QgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgdXNl
ciBnZXN0dXJlLCBvciBpZiB0aGUKICAgICAvLyBlbGVtZW50IGRvZXMgbm90IHN1cHBvcnQgZnVs
bHNjcmVlbi4KICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8
fCAhc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGE2NjM4
ODFhZmQyNmJkZmUwZTBkMGQ3ZjE5ZjBhNjdiMzVmMzhlOWYuLjI3ZTNkZDJkM2NiYjEwODQxMjJh
ODdhMGMzMmU0NzRkOGI1MDZiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25j
ZQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRv
IEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJsZS4KICAgICAvLyBTZWUgbW9yZSBkZXRh
aWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBk
ZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgu
Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKKyAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCiAgICAgYm9vbCBzaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3Rl
ciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDZlMGNmZjY4M2Y4N2YyODM2YzIwZDRiZDEzMTFmNWRkZjhmMmIzNzUuLjM5MThjYTFk
NmE5MTMxN2NmYzhhZTM2MzMwOWZmZWMwNDk5ZTcyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzCiAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRl
eHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNz
Q29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdU
Rk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAgICAvLyBUaGlzIGlzIHZpcnR1YWwgYW5k
IGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3RydWN0b3IuCkBAIC0xMDUsNyArMTA1LDcgQEAg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNl
JiBjYW52YXMsIEdyYXBoaWNzQ29udGUKIHsKIH0KIAotV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcykKK1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQo
Q2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTcwMyw3ICsxNzAzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0
ZXhBdHRyaWJJNHVpdiIsICJubyBhcnJheSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgaW50IHNpemUgPSBsaXN0Lmxlbmd0aCgpOwogICAgIGlmIChzaXplIDwgNCkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImFycmF5IHRvbyBzbWFsbCIpOwpAQCAtMjAwNyw3ICsy
MDA3LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2Jv
dW5kU2FtcGxlcnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJl
IHVuaXQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjExMSw3ICsyMTExLDcgQEAgR0NHTGVudW0g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBH
Q0dMYml0ZmllbGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9D
TElFTlRfV0FJVF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYm
IGZsYWdzICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgImNsaWVudFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzIsOSArMjE3Miw5IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tP
YmplY3QpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmpl
Y3QgIT0gbV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRi
YWNrT2JqZWN0LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
IiwgImF0dGVtcHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVN
b2RlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1v
ZGUocHJpbWl0aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxp
ZCB0cmFuc2Zvcm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFu
c2Zvcm1GZWVkYmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9y
bSBmZWVkYmFjayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5k
VHJhbnNmb3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjkyLDcgKzIyOTIsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
V2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRj
aCAoYnVmZmVyTW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FU
VFJJQlM6CiAgICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRi
YWNrU2VwYXJhdGVBdHRyaWJzKSB7CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mIHByb2dy
YW0sIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPEdDR0xpbnQ+
IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAorCiAgICAgc3dpdGNoIChw
bmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKICAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYmVjZDI5M2IxZDZkMDZlYjU4MmE1
ZTBhNDEzMDBmMmNkYWU5MjVkZS4uYmQwMTljYTRmYmU0NDRiNjgwMjQxNjNhMmU5Yzc3MWJjOWNj
ZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0IGZpbmFsIDogcHVibGljIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViR0wyUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNy
ZWF0ZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMpOwogCiAgICAgfldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKTsKIApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgbG9uZyBsb25nIG9mZnNldCwgY29uc3QgQXJyYXlCdWZmZXJWaWV3JiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBjb3B5QnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludDY0
IHJlYWRPZmZzZXQsIEdDR0xpbnQ2NCB3cml0ZU9mZnNldCwgR0NHTGludDY0IHNpemUpOwogICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzcmNCeXRl
T2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCA9IDAsIEdDR0x1aW50IGxlbmd0aCA9IDApOwotICAgIAorCiAgICAgLy8gRnJhbWVidWZm
ZXIgb2JqZWN0cwogICAgIFdlYkdMQW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKICAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJh
bWVidWZmZXIqKSBmaW5hbDsKQEAgLTY3LDEwICs2NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cywgR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAgICAg
dm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYyk7Ci0gICAgCisKICAgICAvLyBSZW5kZXJidWZm
ZXIgb2JqZWN0cwogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpOwotICAgIAorCiAgICAgLy8gVGV4dHVy
ZSBvYmplY3RzCiAgICAgV2ViR0xBbnkgZ2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CkBAIC0xODIsMTQgKzE4MiwxNCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIGluc3RhbmNlQ291bnQpOwogICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludDY0IG9mZnNldCwgR0NHTHNpemVpIGluc3RhbmNlQ291bnQpOwog
ICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQs
IEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50NjQg
b2Zmc2V0KTsKLSAgICAKKwogICAgIC8vIE11bHRpcGxlIHJlbmRlciB0YXJnZXRzCiAgICAgdm9p
ZCBkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKTsKICAgICB2b2lk
IGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMy
TGlzdCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICB2b2lkIGNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50MzJMaXN0JiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpOwogICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCk7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCk7Ci0g
ICAgCisKICAgICAvLyBRdWVyeSBvYmplY3RzCiAgICAgUmVmUHRyPFdlYkdMUXVlcnk+IGNyZWF0
ZVF1ZXJ5KCk7CiAgICAgdm9pZCBkZWxldGVRdWVyeShXZWJHTFF1ZXJ5Kik7CkBAIC0xOTgsNyAr
MTk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KTsKICAg
ICBSZWZQdHI8V2ViR0xRdWVyeT4gZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSk7CiAgICAgV2ViR0xBbnkgZ2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYsIEdDR0xl
bnVtIHBuYW1lKTsKLSAgICAKKwogICAgIC8vIFNhbXBsZXIgb2JqZWN0cwogICAgIFJlZlB0cjxX
ZWJHTFNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoKTsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoV2Vi
R0xTYW1wbGVyKik7CkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmkoV2ViR0xTYW1wbGVyJiwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
OwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoV2ViR0xTYW1wbGVyJiwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSk7CiAgICAgV2ViR0xBbnkgZ2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImLCBHQ0dMZW51bSBwbmFtZSk7Ci0gICAgCisKICAgICAvLyBTeW5jIG9iamVj
dHMKICAgICBSZWZQdHI8V2ViR0xTeW5jPiBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBH
Q0dMYml0ZmllbGQgZmxhZ3MpOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhXZWJHTFN5bmMqKTsK
QEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMo
V2ViR0xTeW5jJiwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpOwogICAg
IHZvaWQgd2FpdFN5bmMoV2ViR0xTeW5jJiwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQg
dGltZW91dCk7CiAgICAgV2ViR0xBbnkgZ2V0U3luY1BhcmFtZXRlcihXZWJHTFN5bmMmLCBHQ0dM
ZW51bSBwbmFtZSk7Ci0gICAgCisKICAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sKICAgICBSZWZQ
dHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKICAg
ICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGlk
KTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5m
bz4gZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50IGlu
ZGV4KTsKICAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICB2b2lkIHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgCisKICAgICAvLyBVbmlmb3JtIGJ1ZmZlciBvYmpl
Y3RzIGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVycwogICAgIHZvaWQgYmluZEJ1ZmZlckJh
c2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgV2ViR0xCdWZmZXIqKTsKICAgICB2
b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBXZWJH
TEJ1ZmZlciosIEdDR0xpbnQ2NCBvZmZzZXQsIEdDR0xpbnQ2NCBzaXplKTsKQEAgLTIzOCwxMyAr
MjM4LDEzIEBAIHB1YmxpYzoKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lKTsKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFdlYkdMUHJv
Z3JhbSYsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KTsKICAgICB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpOwotICAgIAorCiAgICAgLy8gVmVydGV4IGFycmF5IG9i
amVjdHMKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlVmVydGV4QXJy
YXkoKTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3Qq
IHZlcnRleEFycmF5KTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFdlYkdMVmVydGV4
QXJyYXlPYmplY3QqIHZlcnRleEFycmF5KTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7Ci0gICAgCisKICAgICBXZWJHTEV4dGVu
c2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7CiAgICAgV2ViR0xB
bnkgZ2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTI2NSw3ICsyNjUsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNC
YXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSAgICBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0KENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52
YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMpOwogCiAgICAgYm9vbCBpc1dlYkdMMigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAppbmRl
eCBhZTY5NTQyZWY3NmYwZGVlMjRiN2EzMjlkZmMyMWE0ZjlhOGU5NjliLi40YzU4NDY1N2I2Y2Vl
YmIyMTEzYjU1YWE4ZDBjNzA3OGExYTMzMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmNwcAppbmRleCAxZWNjM2NhNGZmY2YxZTdlYWYxZWU5ZWRkMzJlZGI5MjFlMmUz
MDNiLi5mMGNkZGE2NzIxZjk1MjhhOTk1OGE4OTRmOWQ1MjczN2QzOTM5MzM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViR0xCdWZmZXI6On5XZWJHTEJ1ZmZlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQog
Ci12b2lkIFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBv
YmplY3QpCit2b2lkIFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBv
YmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1YTgwZjkzYmZkMWQ0NDhk
NTJmMDhhNjYwZmY2NmJjOWFjN2Q2ZDIuLjE1MWVlMzBmM2FlMjA0YzY1YzBjYjM4MjgwZWRkZGYz
NmJmMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAt
MjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogCiAgICAgR0NHTGVudW0gbV90YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcAppbmRleCAzYTgyMGRlYjg1YjQ1
N2I0MDAyNDM2MGY3MDRhMGM0YTk5YzA0OTRmLi5kNmFiNTE2YWUyZmEyYTZmNzk2MjliNDJiNmY4
MWYwMGNmODZiYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbnRleHRHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b250ZXh0R3JvdXAuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2lu
Y2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBXZWJH
TENvbnRleHRHcm91cDo6aGFzQUNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAhbV9jb250ZXh0
cy5pc0VtcHR5KCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBXZWJHTENvbnRleHRH
cm91cDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkKK0dyYXBoaWNzQ29udGV4dEdMJiBXZWJHTENv
bnRleHRHcm91cDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkKIHsKICAgICBBU1NFUlQoIW1fY29u
dGV4dHMuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gKigqbV9jb250ZXh0cy5iZWdpbigpKS0+Z3Jh
cGhpY3NDb250ZXh0R0woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRHcm91cC5oCmluZGV4IDUyMTIzMGRlNWE4ZDhkMjUxYTU3MWQ2YjdhYzQzOTQ5YTVhNjRm
ZGUuLjg1NWNlNzIzOTg2ZmUwNzc1OThmMjQ2ODFhZTgwODZjODFlZGZhMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmKTsK
IAogICAgIGJvb2wgaGFzQUNvbnRleHQoKSBjb25zdDsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCYgZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wmIGdl
dEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIExvY2smIG9iamVjdEdyYXBoTG9ja0ZvckFDb250
ZXh0KCk7CiAKICAgICB2b2lkIGxvc2VDb250ZXh0R3JvdXAoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TG9zdENvbnRleHRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbnRleHRPYmplY3QuY3BwCmluZGV4IGE5Yjg0MzA1N2E5NjVmOTc5NzA1NDVhODdh
NzRmYTc3OWYyYWM5MjAuLjdjOTE5ZjJiNjY1NmI2N2IxNmNhNjM0MGIwYjJhNGI2NDVkMDQ2M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBXVEY6OkxvY2smIFdlYkdMQ29udGV4dE9iamVjdDo6b2Jq
ZWN0R3JhcGhMb2NrRm9yQ29udGV4dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0R3Jh
cGhMb2NrKCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBXZWJHTENvbnRleHRPYmpl
Y3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CitHcmFwaGljc0NvbnRleHRHTCogV2Vi
R0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAogewogICAgIHJl
dHVybiBtX2NvbnRleHQgPyBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
aAppbmRleCAzODM1ZDgwYWE3YTk3MWY2OTMxOGZjZGVjMTQwNzRlZTBlMjUzYzM1Li5kYmZkZDZi
ZmMwZWY0NGViODgyZWI5YzU5YjAwOGQyOTgxMTI2NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwog
CiAvLyBXZWJHTENvbnRleHRPYmplY3QgdGhlIGJhc2UgY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBh
cmUgb3duZWQgYnkgYSBzcGVjaWZpYwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQ7CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNz
Q29udGV4dEdMKiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYWYy
ZWQ5MDk2YzFiZWVmOGIwMTYyMDVmMjUwOWU1OWExMWM1NGNmZi4uYTY5MTUzMjNhODQ5NDRlNTli
YzE3MmQzZjViOTQzMzcyNjgxNDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQorYm9vbCBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewog
ICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ2V0RXh0ZW5zaW9ucygpOwog
ICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAppbmRleCA2
MTYxMDBhN2FiMDhiMThiMWJkOWE5YWM4MzZiY2U5NzMyZGI4MTI0Li5lZTIwYzJlYjk3YmJkMDZm
ZDA1ZjgyZGYyOTE5ZDZjOTc0M2I5ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJh
d0J1ZmZlcnMuY3BwCmluZGV4IGI1YzQxMTI2MWExZDFkMDU4N2UzN2MzNjYwODJjZWJjNGUwY2M5
YzkuLjljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUyNjcwOTcxNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05NSw3ICs5
NSw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0
b3I8R0NHTGVudW0+JiBidWZmZXJzKQogLy8gc3RhdGljCiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6
OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdl
YmdsQ29udGV4dCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IHdl
YmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlz
IGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBw
b3J0ZWQuCiAgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IGZlMWE4N2U1YmUyYjBk
MTkzOGJkZDQ2N2ExM2Y3YWZmMjRlNzQyOGUuLmYyN2Q3MDc2YTQyNjJhNDAwZTQyNzZkZWNlMmU0
NWY0YjhiZDVjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJh
bWVidWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIHsKICAgICAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgaXNJbml0aWFsaXpl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgYXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4
dEdMKikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwg
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CiAKICAgICAgICAgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50KCkgeyB9OwpAQCAtMTIwLDE4
ICsxMjAsMTggQEAgbmFtZXNwYWNlIHsKICAgICAgICAgICAgIG1fcmVuZGVyYnVmZmVyLT5zZXRJ
bml0aWFsaXplZCgpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2ht
ZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250ZXh0KQorICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2ht
ZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29u
dGV4dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgbV9yZW5kZXJidWZmZXItPm9uRGV0YWNo
ZWQobG9ja2VyLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVy
QXR0YWNobWVudDo6YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1
ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCBvYmplY3QgPSBvYmplY3RPclplcm8obV9yZW5kZXJidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVIsIG9iamVjdCk7CiAgICAgfQogCi0gICAg
dm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQp
CisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQp
CiAgICAgewogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKQEAgLTE2Myw5ICsxNjMs
OSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBvbkRldGFjaGVkKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIHVuYXR0
YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBh
dHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdM
KiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpT
Qzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBXZWJHTFRleHR1cmVBdHRhY2ht
ZW50KCkgeyB9OwpAQCAtMjMyLDEyICsyMzIsMTIgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgLy8g
VGV4dHVyZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQuCiAgICAgfQogCi0gICAgdm9p
ZCBXZWJHTFRleHR1cmVBdHRhY2htZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQorICAgIHZvaWQgV2Vi
R0xUZXh0dXJlQXR0YWNobWVudDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCkKICAgICB7CiAgICAgICAgIG1fdGV4dHVy
ZS0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xU
ZXh0dXJlQXR0YWNobWVudDo6YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFRl
eHR1cmVBdHRhY2htZW50OjphdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJvKG1fdGV4dHVyZS5nZXQoKSk7CiAgICAgICAg
IGlmIChtX3RhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8zRCB8fCBtX3Rhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRF9BUlJBWSkKQEAgLTI0Niw3ICsyNDYs
NyBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQodGFyZ2V0LCBhdHRhY2htZW50LCBtX3RhcmdldCwgb2JqZWN0LCBtX2xldmVsKTsKICAgICB9
CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50Ojp1bmF0dGFjaChHcmFwaGljc0Nv
bnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQog
ICAgIHsKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIC8vIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCBhdHRhY2htZW50IGlzIHZhbGlkIGluIEVTMy4KQEAgLTU0Nyw3ICs1NDcsNyBAQCBHQ0dM
ZW51bSBXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBjaGFyKiogcmVhc29uKSBj
b25zdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEU7
CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jvb2wgV2ViR0xGcmFtZWJ1
ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioq
IHJlYXNvbikKIHsKICAgICBpZiAoY2hlY2tTdGF0dXMocmVhc29uKSAhPSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU2
Myw3ICs1NjMsNyBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBj
b25zdAogICAgIHJldHVybiBhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQtPmlzVmFsaWQoKTsKIH0K
IAotdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGZvciAoYXV0byYgYXR0YWNo
bWVudCA6IG1fYXR0YWNobWVudHMudmFsdWVzKCkpCiAgICAgICAgIGF0dGFjaG1lbnQtPm9uRGV0
YWNoZWQobG9ja2VyLCBjb250ZXh0M2QpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgV2ViR0xG
cmFtZWJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
LCBHcmFwaGljc0NvCiB9CiAKICNpZiAhVVNFKEFOR0xFKQotYm9vbCBXZWJHTEZyYW1lYnVmZmVy
Ojppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGczZCwgY29u
c3QgY2hhcioqIHJlYXNvbikKK2Jvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFj
aG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqKiByZWFzb24pCiB7CiAg
ICAgaWYgKCFjb250ZXh0KCkpIHsKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBkZWxldGVk
IC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKaW5kZXggZjg4YjA2YTVlNGM2NDUyNWMyYjI2MmZkOWI4
ZTM5MmE5OTA1ZDcyMy4uYzk2ZTRmNTE4NDc5NTM3M2JmNDRhZWEwN2ZhYWIzNTRmNzBhZjY2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaApAQCAt
MjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTYy
LDkgKzYyLDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsaXplZCgpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0wqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3ND
b250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpT
bG90VmlzaXRvciYpID0gMDsKIAogICAgIHByb3RlY3RlZDoKQEAgLTk0LDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGUgZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0
ZTsgb3RoZXJ3aXNlIGluaXRpYWxpemUKICAgICAvLyB0aGUgYnVmZmVycyBpZiB0aGV5IGhhdmVu
J3QgYmVlbiBpbml0aWFsaXplZCBhbmQKICAgICAvLyBuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVu
dHMgaXMgdHJ1ZS4KLSAgICBib29sIG9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
Y29uc3QgY2hhcioqIHJlYXNvbik7CisgICAgYm9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRH
TCosIGNvbnN0IGNoYXIqKiByZWFzb24pOwogCiAgICAgLy8gU29mdHdhcmUgdmVyc2lvbiBvZiBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoKSwgZXhjZXB0IHRoYXQgd2hlbgogICAgIC8vIEZSQU1F
QlVGRkVSX0NPTVBMRVRFIGlzIHJldHVybmVkLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKQEAg
LTExOSwxMyArMTE5LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xGcmFtZWJ1ZmZl
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwogCiAgICAgV2ViR0xBdHRhY2htZW50KiBnZXRBdHRhY2htZW50KEdD
R0xlbnVtKSBjb25zdDsKIAogI2lmICFVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJuIGZhbHNlIGlm
IGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGUuCi0gICAgYm9vbCBpbml0aWFsaXplQXR0YWNobWVu
dHMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBi
b29sIGluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHRHTCosIGNvbnN0IGNoYXIq
KiByZWFzb24pOwogI2VuZGlmCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZnJhbWVidWZmZXIgaXMg
Y3VycmVudGx5IGJvdW5kIHRvIHRoZSBnaXZlbiB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKaW5kZXggYWI1YzE0ZjU2YjE5MjhiMTVlZWQ3ZjZmNTYx
MzA0ZDIwN2RhYTgzMC4uMjQ4OTA2ZWRiMjE4Y2ZmZWU2MDU1ODlmMmUxODg4NTgyY2FiYjEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1bkRlc3RydWN0b3IoKQogICAgIH0KIH0K
IAotdm9pZCBXZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QpCit2b2lkIFdlYkdMT2Jq
ZWN0OjpkZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3ND
b250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogICAgIGlmICgh
bV9vYmplY3QpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OmRldGFjaCgpCiAg
ICAgbV9hdHRhY2htZW50Q291bnQgPSAwOyAvLyBNYWtlIHN1cmUgT3BlbkdMIHJlc291cmNlIGlz
IGRlbGV0ZWQuCiB9CiAKLXZvaWQgV2ViR0xPYmplY3Q6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCkKK3Zv
aWQgV2ViR0xPYmplY3Q6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBpZiAobV9hdHRhY2htZW50Q291
bnQpCiAgICAgICAgIC0tbV9hdHRhY2htZW50Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuaAppbmRleCBmMGFhMjEzN2EzZWFlNWY5N2Y4YWQ5YmI5MWQ5MDMzZTAw
OWYxNmExLi45ZTM0YzU4OTVmZDNmNjFmOGMyZDM0OWI1YjRiNDdjYzg4NjEyM2RlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IExvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMQ29udGV4dEdyb3Vw
OwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIApAQCAtNTMsMTAgKzUzLDEwIEBA
IHB1YmxpYzoKICAgICAvLyBUaGUgQWJzdHJhY3RMb2NrZXIgYXJndW1lbnQgZW5mb3JjZXMgYXQg
Y29tcGlsZSB0aW1lIHRoYXQgdGhlIG9iamVjdEdyYXBoTG9jawogICAgIC8vIGlzIGhlbGQuIFRo
aXMgaXNuJ3QgbmVjZXNzYXJ5IGZvciBhbGwgb2JqZWN0IHR5cGVzLCBidXQgZW5vdWdoIG9mIHRo
ZW0gdGhhdAogICAgIC8vIGl0J3MgZG9uZSBmb3IgYWxsIG9mIHRoZW0uCi0gICAgdm9pZCBkZWxl
dGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKik7CisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICB2b2lkIG9uQXR0YWNoZWQoKSB7ICsrbV9hdHRh
Y2htZW50Q291bnQ7IH0KLSAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CisgICAgdm9pZCBvbkRldGFjaGVkKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOwogCiAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IHNpZGUgaXNzdWUgYSBkZWxldGUgY2Fs
bCBhbHJlYWR5LCBub3QKICAgICAvLyB3aGV0aGVyIHRoZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVs
ZXRlZC4KQEAgLTgyLDEzICs4MiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5EZXN0cnVj
dG9yKCk7CiAKICAgICAvLyBkZWxldGVPYmplY3RJbXBsIHNob3VsZCBiZSBvbmx5IGNhbGxlZCBv
bmNlIHRvIGRlbGV0ZSB0aGUgT3BlbkdMIHJlc291cmNlLgotICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXBPckNv
bnRleHQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKLSAgICB2
aXJ0dWFsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTCogZ2V0QUdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QgPSAwOwogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtR0xPYmplY3QgbV9v
YmplY3QgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNw
cAppbmRleCA1MDY2MGM3NWM1MGFmMTNjNTk0NTEyMTU4ZGQ1Y2JhMzEyMzdmZGQ0Li44MTM3OTUx
MDU1MGY2NTcyM2E0NDM1MzA2N2MzNWY3Y2YxZjkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMzksNiArMzksMTAgQEAKICNpbmNs
dWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNp
ZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIYXNoTWFwPFdlYkdMUHJvZ3JhbSosIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqPiYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMoY29uc3QgTG9j
a0hvbGRlciYpCkBAIC05NSw3ICs5OSw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjpjb250ZXh0RGVz
dHJveWVkKCkKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3ll
ZCgpOwogfQogCi12b2lkIFdlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQ
bGF0Zm9ybUdMT2JqZWN0IG9iaikKK3ZvaWQgV2ViR0xQcm9ncmFtOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0
M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUHJvZ3Jh
bShvYmopOwogICAgIGlmIChtX3ZlcnRleFNoYWRlcikgewpAQCAtMjA4LDcgKzIxMiw3IEBAIHZv
aWQgV2ViR0xQcm9ncmFtOjphZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEpTQzo6U2xvdFZpc2l0CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG1fZnJhZ21l
bnRTaGFkZXIuZ2V0KCkpOwogfQogCi12b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRy
aWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2Vi
R0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dDNkKQogewogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLmNsZWFyKCk7CiAKQEAg
LTIxNyw3ICsyMjEsMTEgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9j
YXRpb25zKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QKICAgICBtX2FjdGl2ZUF0
dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKLSAgICAgICAgY29udGV4dDNkLT5nZXRBY3Rp
dmVBdHRyaWJJbXBsKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNpZiBVU0UoQU5HTEUpCisgICAgICAg
IGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPihjb250ZXh0M0QpLT5n
ZXRBY3RpdmVBdHRyaWJJbXBsKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNlbmRpZgogICAgICAgICBt
X2FjdGl2ZUF0dHJpYkxvY2F0aW9uc1tpXSA9IGNvbnRleHQzZC0+Z2V0QXR0cmliTG9jYXRpb24o
b2JqZWN0KCksIGluZm8ubmFtZSk7CiAgICAgfQogfQpAQCAtMjMwLDcgKzIzOCw3IEBAIHZvaWQg
V2ViR0xQcm9ncmFtOjpjYWNoZUluZm9JZk5lZWRlZCgpCiAgICAgaWYgKCFvYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQgPSBn
ZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCA9
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDhmNzBkMGQyYjBlNDc1NWY1MmY0ZWE5YTNiYmRjNDlk
ODQzODgzMzcuLjEzMzk0MzQ4OThmNjllYjA2MzNkYmZiOWU1ZjE0ZjNlOTQ4NDc1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgV2ViR0xTaGFkZXIqIGdldEF0dGFjaGVkU2hhZGVyKEdDR0xlbnVtKTsKICAg
ICBib29sIGF0dGFjaFNoYWRlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xTaGFk
ZXIqKTsKICAgICBib29sIGRldGFjaFNoYWRlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
V2ViR0xTaGFkZXIqKTsKLSAgICAKKwogICAgIHZvaWQgc2V0UmVxdWlyZWRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckNvdW50KGludCBjb3VudCkKICAgICB7CiAgICAgICAgIG1fcmVxdWlyZWRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50QWZ0ZXJOZXh0TGluayA9IGNvdW50OwpAQCAtOTMsOSAr
OTMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCopOworICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3ND
b250ZXh0R0wqKTsKICAgICB2b2lkIGNhY2hlSW5mb0lmTmVlZGVkKCk7CiAKICAgICBWZWN0b3I8
R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDE2NjIwYmQ4ZDg1ODI0Yjk1ZTU3MzhkNTYwMjVmMTFh
OWNiZWY4NjAuLmU0ODViOTg2NDg1MzQ3Y2RhODVlZmIyOGVjNGEyOWEyYTdiYjQ3YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisK
IFJlZjxXZWJHTFF1ZXJ5PiBXZWJHTFF1ZXJ5OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMUXVlcnkoY3R4KSk7
CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+
Y3JlYXRlUXVlcnkoKSk7CiB9CiAKLXZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVRdWVyeShv
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDVh
NmMwMzYxYTU5ODNiNzJlNGI0NmY4ZTgyNDk4Y2VjNjE5ZGUxNjUuLmNiZDlkOTI2MTU0Nzg5MDk1
NmE5MmYyMDdmNDkwZTcxMGIyMTUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdt
YSBvbmNlCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBtX2lzUmVzdWx0QXZhaWxhYmxl
IHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAppbmRleCBkNDBkNGUwYjg1
NjFhZjU1YmVmYWU3ZTUxMmYwMDYxNDI1MTA5N2Y0Li5lZGQ5OWNhMmZiZDQ0YjQyYjUzMWNiMDYw
M2EwNWJmYzIzN2IzN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJidWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xSZW5kZXJidWZm
ZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAg
ICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUmVuZGVy
YnVmZmVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJidWZmZXIuaAppbmRleCA0YTdmYTZjOWEyMzYxMmU0MWQyMzVkZWRhNGRjYzEwYzQyY2Vj
MDcxLi4yYWMwOGI3MjhiN2FhNzE0ZjBjZWFmODlkYWY3YTUwY2NjYzgzNWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTIwLDcgKzIw
LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDM1NTY2ZWI4ZGE1N2U3ZTM2MmI4NDBmZTg2NGYzNTkxNzY2
ZDJiMDQuLmQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtODksNyArODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJgogICAgIHJldHVybiBy
ZW5kZXJpbmdDb250ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVm
PEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2Fu
dmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKSk7CiAgICAgLy8gVGhpcyBpcyB2aXJ0
dWFsIGFuZCBjYW4ndCBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgpAQCAtMTA1LDcgKzEw
NSw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZh
c0Jhc2UmIGNhbnZhcywgR3JhcGhpY3NDb250ZXh0CiB7CiB9CiAKLVdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NDVkNGJiMTA1MTNkMmRiNGY1YTQz
ZTk0OTE3YTY4MjFkYjI2MmI3Li5hNzEwYTBmMWU2Mjk4MmViMjBjMDc5NTg5ZmU2NTQyZmVlZWNm
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHQpOwogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFz
ZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVmPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzKTsKIAogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsK
LSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMzlmODdlNDI3MjllZWY0MTk5MzRhNmY1MjViMGJjZTBlN2M2
M2ZmMi4uMjJjZDg2M2ZiNDEzYTUwZWViMWFiMjA4NDk0ZTA2OTZkOWU0Mzg4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgog
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTEzNiw3ICsxMzcsNyBAQCBj
b25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlID0gMjU2Owogc3RhdGljIGNvbnN0
IFNlY29uZHMgY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVsYXkgeyAzX3MgfTsKIAogbmFtZXNw
YWNlIHsKLSAgICAKKwogICAgIEdDR0xpbnQgY2xhbXAoR0NHTGludCB2YWx1ZSwgR0NHTGludCBt
aW4sIEdDR0xpbnQgbWF4KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlIDwgbWluKQpAQCAtNjE3
LDcgKzYxOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFwcGx5IHsgZmFsc2UgfTsKIH07
CiAKLXN0YXRpYyBib29sIGlzSGlnaFBlcmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+JiBjb250ZXh0KQorc3RhdGljIGJvb2wgaXNIaWdoUGVyZm9y
bWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4mIGNvbnRleHQpCiB7
CiAgICAgcmV0dXJuIGNvbnRleHQtPnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpID09
IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9CkBAIC03NTMsNyArNzU0
LDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZShDYW52YXNCYXNlJiBjYW52YXMsIFdlYkdMQ28KICAgICAgICAgbV9jaGVja0ZvckNvbnRleHRM
b3NzSGFuZGxpbmdUaW1lci5zdGFydE9uZVNob3QoY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVs
YXkpOwogfQogCi1XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYm
IGNvbnRleHQsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYgY2Fu
dmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyBhdHRyaWJ1dGVzKQogICAgIDogR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNh
bnZhcykKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9yZXN0b3Jl
VGltZXIoY2FudmFzLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsICZXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KQpAQCAtODY0LDcgKzg2NSw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQog
ICAgIG1fc3RlbmNpbEZ1bmNNYXNrQmFjayA9IDB4RkZGRkZGRkY7CiAgICAgbV9sYXllckNsZWFy
ZWQgPSBmYWxzZTsKICAgICBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZCA9IG1heEdMRXJy
b3JzQWxsb3dlZFRvQ29uc29sZTsKLSAgICAKKwogICAgIG1fY2xlYXJDb2xvclswXSA9IG1fY2xl
YXJDb2xvclsxXSA9IG1fY2xlYXJDb2xvclsyXSA9IG1fY2xlYXJDb2xvclszXSA9IDA7CiAgICAg
bV9zY2lzc29yRW5hYmxlZCA9IGZhbHNlOwogICAgIG1fY2xlYXJEZXB0aCA9IDE7CkBAIC04Nzks
MTEgKzg4MCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVO
ZXdDb250ZXh0KCkKICAgICBmb3IgKEdDR0xpbnQgaSA9IDA7IGkgPCBudW1Db21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzOyArK2kpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRzLmFk
ZChpKTsKICNlbmRpZgotICAgIAorCiAgICAgR0NHTGludCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsK
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X0FUVFJJQlMsICZudW1WZXJ0ZXhBdHRyaWJzKTsKICAgICBtX21heFZlcnRleEF0dHJpYnMgPSBu
dW1WZXJ0ZXhBdHRyaWJzOwotICAgIAorCiAgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7CiAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0la
RSwgJm1fbWF4VGV4dHVyZVNpemUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1cmVTaXpl
KTsKQEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlu
aXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2JhY2tEcmF3QnVmZmVyID0gR3JhcGhpY3NDb250
ZXh0R0w6OkJBQ0s7CiAgICAgbV9kcmF3QnVmZmVyc1dlYkdMUmVxdWlyZW1lbnRzQ2hlY2tlZCA9
IGZhbHNlOwogICAgIG1fZHJhd0J1ZmZlcnNTdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICAKKwogICAg
IG1fdmVydGV4QXR0cmliVmFsdWUucmVzaXplKG1fbWF4VmVydGV4QXR0cmlicyk7CiAKICNpZiAh
VVNFKEFOR0xFKQpAQCAtMTc4Niw3ICsxNzg3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUK
ICAgICBpZiAoIXZhbGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3aWR0aCwgaGVpZ2h0LCBsZXZlbCwg
ImNvbXByZXNzZWRUZXhJbWFnZTJEIikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsCisgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQu
Z2V0KCkpLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0
YS5iYXNlQWRkcmVzcygpKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgY29tcHJlc3NlZFRleEltYWdlMkQgZnVu
Y3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9lc24ndCBoYXZlIHRoZSBk
YXRhIGZvciB0aGlzIGxldmVsLgpAQCAtMjIxMCw3ICsyMjExLDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwoR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2kKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVFbGVtZW50
QXJyYXlTaXplKEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpCiB7CiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2Jv
dW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwotICAgIAorCiAg
ICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjI1MSw3ICsyMjUyLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZUluZGV4QXJyYXlQcmVjaXNlKEdDR0xzaXplaSBjb3VudCwgR0NHTGUKIHsKICAgICBBU1NFUlQo
Y291bnQgPj0gMCAmJiBvZmZzZXQgPj0gMCk7CiAgICAgdW5zaWduZWQgbWF4SW5kZXggPSAwOwot
ICAgIAorCiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2Jv
dW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogCiAgICAgaWYg
KCFlbGVtZW50QXJyYXlCdWZmZXIpCkBAIC0yNDUxLDEwICsyNDUyLDEwIEBAIGJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVEcmF3TW9kZShmdW5jdGlvbk5hbWUsIG1vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCisKICAgICBpZiAoIXZhbGlkYXRlU3RlbmNpbFNldHRpbmdzKGZ1bmN0aW9uTmFtZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEU6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfU0hPUlQ6CkBAIC0yNDY4LDIyICsyNDY5LDIyIEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdHlwZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGNvdW50IDwgMCB8fCBv
ZmZzZXQgPCAwKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJjb3VudCBvciBvZmZzZXQgPCAwIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvdW50KSB7CiAg
ICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKHByaW1pdGl2ZUNvdW50IDwgMCkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAicHJpbWNvdW50IDwgMCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibm8gRUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91
bmQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ5NiwxNCArMjQ5NywxNCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgRwogICAgIH0KICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBj
aGVja2VkQ291bnQoY291bnQpOwogICAgIENoZWNrZWQ8R0NHTGludCwgUmVjb3JkT3ZlcmZsb3c+
IGNoZWNrZWRQcmltaXRpdmVDb3VudChwcmltaXRpdmVDb3VudCk7CiAgICAgaWYgKGNoZWNrZWRD
b3VudC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93
ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBi
b3VuZHMgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSh0eXBlLCBudW1FbGVtZW50cykg
fHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2
ZUNvdW50LnVuc2FmZUdldCgpKSkgewogICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVBy
ZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgpLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhu
dW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgewogICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFU
SU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5
cyIpOwpAQCAtMjUxNywxMyArMjUxOCwxMyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCi0gICAgCisKICAgICBjb25zdCBjaGFy
KiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7CiAgICAgaWYgKG1fZnJhbWVidWZm
ZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250
ZXh0R0woKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsIHJl
YXNvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KICNlbmRpZgpAQCAtNDI1Nyw3ICs0MjU4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgKICAgICB9CiAKICNkZWZpbmUgSU5URVJOQUxfRk9STUFUX0NIRUNLKHR5cGVNYWNybywg
cGl4ZWxUeXBlTWFjcm8pIFwKLSAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5cGVNYWNybykg
eyBcCisgICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0R0w6OnR5cGVNYWNybyB8fCBwaXhl
bHMuZ2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIs
ICJ0eXBlIGRvZXMgbm90IG1hdGNoIGludGVybmFsIGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVy
bjsgXAogICAgIH0gXApAQCAtNDI2OCw3ICs0MjY5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgKICAgICBDSEVDS19DT01QT05FTlRfQ09VTlQKIAogI2RlZmluZSBJTlRFUk5BTF9GT1JNQVRf
SU5URUdFUl9DSEVDSyh0eXBlTWFjcm8sIHBpeGVsVHlwZU1hY3JvKSBcCi0gICAgaWYgKHR5cGUg
IT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlwZSgp
ICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAorICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29u
dGV4dEdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1h
Y3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5hbCBm
b3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwKQEAgLTQyNzgsMTMgKzQyNzks
MTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB9IFwKICAgICBDSEVDS19DT01QT05F
TlRfQ09VTlQKIAotI2RlZmluZSBDQVNFX1BBQ0tFRF9JTlRFUk5BTF9GT1JNQVRfQ0hFQ0soaW50
ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwTWFjcm8sIHBpeGVsVHlwZTBNYWNy
bywgdHlwZTFNYWNybywgcGl4ZWxUeXBlMU1hY3JvKSBjYXNlIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCi0gICAgaWYgKCEodHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dHlwZTBNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4
ZWxUeXBlME1hY3JvKSBcCi0gICAgICAgICYmICEodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dHlwZTFNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4ZWxUeXBlMU1h
Y3JvKSkgeyBcCisjZGVmaW5lIENBU0VfUEFDS0VEX0lOVEVSTkFMX0ZPUk1BVF9DSEVDSyhpbnRl
cm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTBNYWNybywgcGl4ZWxUeXBlME1hY3Jv
LCB0eXBlMU1hY3JvLCBwaXhlbFR5cGUxTWFjcm8pIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Omlu
dGVybmFsRm9ybWF0TWFjcm86IFwKKyAgICBpZiAoISh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdM
Ojp0eXBlME1hY3JvICYmIHBpeGVscy5nZXRUeXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUwTWFjcm8p
IFwKKyAgICAgICAgJiYgISh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjp0eXBlMU1hY3JvICYm
IHBpeGVscy5nZXRUeXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUxTWFjcm8pKSB7IFwKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJlYWRQ
aXhlbHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5hbCBmb3JtYXQiKTsgXAogICAgICAg
ICByZXR1cm47IFwKICAgICB9IFwKLSAgICBpZiAoZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpmb3JtYXRNYWNybykgeyBcCisgICAgaWYgKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRl
eHRHTDo6Zm9ybWF0TWFjcm8pIHsgXAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIsICJJbnZhbGlkIGZvcm1hdCIp
OyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXApAQCAtNDY5OSw3ICs0NzAwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VTb3VyY2VI
ZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICAgICAgICAgICAgICAgICAvLyBUaGUgVU5TSUdORURfSU5U
XzEwRl8xMUZfMTFGX1JFViB0eXBlIHBhY2svdW5wYWNrIGlzbid0IGltcGxlbWVudGVkLgogICAg
ICAgICAgICAgICAgIHR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoIW1fY29udGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMu
Z2V0KCksIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpEYXRhRm9ybWF0OjpSR0JBOCwgYWRqdXN0
ZWRTb3VyY2VJbWFnZVJlY3QsIGRlcHRoLCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBl
LCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7CisgICAg
ICAgICAgICBpZiAoIW1fY29udGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMuZ2V0KCksIEdy
YXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JBOCwgYWRqdXN0ZWRTb3VyY2VJbWFnZVJl
Y3QsIGRlcHRoLCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0ZsaXBZ
LCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7CiAgICAgICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ0ZXhJbWFn
ZTJEIiwgImJhZCBpbWFnZSBkYXRhIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgIH0KQEAgLTUwMTMsNyArNTAxNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
CiAgICAgQVNTRVJUKHRleCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3
aWR0aCwgaGVpZ2h0LCBsZXZlbCwgInRleEltYWdlMkQiKSk7CiAgICAgaWYgKCFwaXhlbHMpIHsK
LSAgICAgICAgaWYgKCFtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBtX3VucGFja0FsaWdubWVudCkpCisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3Jt
YXQoInRleEltYWdlMkQiLCBpbnRlcm5hbEZvcm1hdCkpOwpAQCAtNTQ4NSw4ICs1NDg2LDggQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRU
eXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxGb3JtYXQp
OwogI2Vsc2UKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29tYmluYXRpb24gb2YgaW50ZXJuYWxm
b3JtYXQsIGZvcm1hdCwgYW5kIHR5cGUgaXMgc3VwcG9ydGVkLgotI2RlZmluZSBJTlRFUk5BTF9G
T1JNQVRfQ0FTRShpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTAsIHR5cGUx
LCB0eXBlMiwgdHlwZTMsIHR5cGU0KSBjYXNlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnRl
cm5hbEZvcm1hdE1hY3JvOiBcCi0gICAgaWYgKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Zm9ybWF0TWFjcm8pIHsgXAorI2RlZmluZSBJTlRFUk5BTF9GT1JNQVRfQ0FTRShpbnRl
cm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTAsIHR5cGUxLCB0eXBlMiwgdHlwZTMs
IHR5cGU0KSBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisg
ICAgaWYgKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6Zm9ybWF0TWFjcm8pIHsgXAogICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJ
T04sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0IGZvciBpbnRlcm5hbGZvcm1hdCIpOyBc
CiAgICAgICAgIHJldHVybiBmYWxzZTsgXAogICAgIH0gXApAQCAtNTYyNSw3ICs1NjI2LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICBHQ0dMaW50IGNsaXBwZWRYLCBjbGlwcGVkWTsK
ICAgICBHQ0dMc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0OwogICAgIGlmIChjbGlw
MkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRSZWFkRnJhbWVidWZmZXJXaWR0aCgpLCBn
ZXRCb3VuZFJlYWRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVkWSwgJmNs
aXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4SW1h
Z2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLAorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKICAgICAgICAgICAgIGlu
dGVybmFsRm9ybWF0LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgbV91bnBhY2tB
bGlnbm1lbnQpOwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0
ID4gMCkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCBjbGlwcGVkWCAtIHgsIGNsaXBwZWRZIC0geSwKQEAgLTY0MDYsOCArNjQwNyw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlRmFsbGJhY2tCbGFja1RleHR1
cmVzMXgxKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1RleEludGVybmFs
Rm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKEdDR0xlbnVtIHRleEludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBjb2xvckJ1ZmZlckZvcm1hdCkKIHsKLSAgICBhdXRvIG5lZWQgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCh0ZXhJbnRlcm5hbEZv
cm1hdCk7Ci0gICAgYXV0byBoYXZlID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldENoYW5u
ZWxCaXRzQnlGb3JtYXQoY29sb3JCdWZmZXJGb3JtYXQpOworICAgIGF1dG8gbmVlZCA9IEdyYXBo
aWNzQ29udGV4dEdMOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KHRleEludGVybmFsRm9ybWF0KTsK
KyAgICBhdXRvIGhhdmUgPSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1h
dChjb2xvckJ1ZmZlckZvcm1hdCk7CiAgICAgcmV0dXJuIChuZWVkICYgaGF2ZSkgPT0gbmVlZDsK
IH0KIApAQCAtNzI0Miw3ICs3MjQzLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0cKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBhdXRvIGRhdGEgPSBsaXN0LmRhdGEoKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0
aW9uTmFtZSwgIm5vIGFycmF5Iik7CkBAIC03Mjg4LDcgKzcyODksNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbChjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIEdDRwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0
cmliMCgpCiB7CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OlZlcnRleEF0dHJpYlN0
YXRlJiBzdGF0ZSA9IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0VmVydGV4QXR0cmliU3Rh
dGUoMCk7Ci0gICAgCisKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXIgPSBjcmVhdGVCdWZmZXIo
KTsKICAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JV
RkZFUiwgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyLT5vYmplY3QoKSk7CiAgICAgbV9jb250ZXh0LT5i
dWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIDAsIEdyYXBoaWNzQ29u
dGV4dEdMOjpEWU5BTUlDX0RSQVcpOwpAQCAtNzQ4MSw3ICs3NDgyLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICBpZiAoIWhvc3RX
aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKG1fYXR0cmlidXRl
cywgaG9zdFdpbmRvdykpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY29udGV4dChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKG1fYXR0cmlidXRlcywgaG9zdFdpbmRvdykp
OwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAobV9jb250ZXh0TG9zdE1vZGUgPT0g
UmVhbExvc3RDb250ZXh0KQogICAgICAgICAgICAgbV9yZXN0b3JlVGltZXIuc3RhcnRPbmVTaG90
KHNlY29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVtcHRzKTsKQEAgLTc3NTcsNyArNzc1OCw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjCiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wy
KQogICAgIGlmIChpc1dlYkdMMigpKQotICAgICAgICBtX2NvbnRleHQtPnByaW1pdGl2ZVJlc3Rh
cnRJbmRleChnZXRSZXN0YXJ0SW5kZXgodHlwZSkpOworICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPnByaW1pdGl2ZVJlc3RhcnRJ
bmRleChnZXRSZXN0YXJ0SW5kZXgodHlwZSkpOwogI2VuZGlmCiAKICAgICBtX2NvbnRleHQtPmRy
YXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBlMmEwN2E1YmM1NmRh
MDI0ZGFlMDIxMTdjZjczYmZiNDQ5N2Y5Nzg3Li4yN2QxNTViOWU1MDM1MDNjNWQ4Mjk4NzkyZDBh
Nzk3ZDY0Mzg2NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xMjQsNyArMTI0LDcgQEAgdXNpbmcgV2ViR0xDYW52YXMg
PSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwgUmVmUHRyPE9mZnNjcmVl
bkNhbnYKIHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFz
RWxlbWVudD4+OwogI2VuZGlmCiAKLWNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkNsaWVudCwgcHVibGljIEdQVUJhc2VkQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIg
eworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRl
eHRHTDo6Q2xpZW50LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwcml2
YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IGNyZWF0ZShDYW52YXNCYXNl
JiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYsIGNvbnN0IFN0cmluZyYpOwpAQCAtMzc3LDcgKzM3
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc2VDb250ZXh0SW1wbChMb3N0Q29udGV4dE1vZGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNz
Q29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xD
b250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3Vw
LmdldCgpOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlOwogCkBAIC0zODksNyArMzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVTaGFy
ZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHRPYmpl
Y3QoV2ViR0xDb250ZXh0T2JqZWN0Jik7Ci0gICAgCisKICAgICB1bnNpZ25lZCBnZXRNYXhWZXJ0
ZXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhWZXJ0ZXhBdHRyaWJzOyB9CiAKICAgICBi
b29sIGlzQ29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3Q7CkBAIC00MjcsNyArNDI3LDcg
QEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShD
YW52YXNCYXNlJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmLCBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENh
bnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMpOwogCiAgICAgZnJpZW5kIGNsYXNzIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkdMRHJhd0J1ZmZlcnM7CkBAIC01MjcsNyArNTI3LDcgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgbmVlZHNQcmVwYXJhdGlvbkZvckRpc3BsYXkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogCi0g
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkdMQ29udGV4dEdy
b3VwPiBtX2NvbnRleHRHcm91cDsKICAgICBMb2NrIG1fb2JqZWN0R3JhcGhMb2NrOwogCkBAIC01
NDUsMTQgKzU0NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlPiBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3Q7CiAKICAgICB2b2lkIHNldEJvdW5k
VmVydGV4QXJyYXlPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMVmVydGV4
QXJyYXlPYmplY3RCYXNlKik7Ci0gICAgCisKICAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJWYWx1ZSB7
CiAgICAgcHVibGljOgogICAgICAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGluaXRWYWx1ZSgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZv
aWQgaW5pdFZhbHVlKCkKICAgICAgICAgewogICAgICAgICAgICAgdHlwZSA9IEdyYXBoaWNzQ29u
dGV4dEdMOjpGTE9BVDsKQEAgLTU2MSw3ICs1NjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICBmVmFsdWVbMl0gPSAwLjBmOwogICAgICAgICAgICAgZlZhbHVlWzNdID0gMS4wZjsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBHQ0dMZW51bSB0eXBlOwogICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICBHQ0dMZmxvYXQgZlZhbHVlWzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5jcHAKaW5kZXggYjcyMDQyNTgyM2UzNjM1NmVhMmY3MDQ1NzA4
Y2U1MTQxNWFjYjA3NS4uYjBiN2RkZDljNDNjZjIwMDU5NTQ4ZjA0OGQzOWMwMzE0NDg4MDNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIFdlYkdMU2FtcGxlcjo6V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKICAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0
ZVNhbXBsZXIoKSk7CiB9CiAKLXZvaWQgV2ViR0xTYW1wbGVyOjpkZWxldGVPYmplY3RJbXBsKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU2FtcGxlcjo6ZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlU2FtcGxl
cihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaApp
bmRleCA5YjExODNlNWQ3M2RlMjYwNWU3MWQ0OTg3MGE2ODQwOTBjMjExNWUwLi4xOTgzYTUzOWI5
MTdhMmU3ZTcxN2YxYTdmZWMzZTc3NDNkYmQ1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNhbXBsZXIuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCiAjcHJhZ21hIG9uY2UKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYkdMU2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0g
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAppbmRleCBj
NzBkMGE0NmQ2YzliOGU0ZmZkODIwNTVhMzEyMmRiMGJkMTYxMTQ0Li4xNzJhNjJhNzg3Y2ViYTU3
N2U4ODk0Y2VlZDVkOTg4MGM0NDcyMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTU4LDcgKzU4LDcgQEAgV2ViR0xTaGFkZXI6On5XZWJH
TFNoYWRlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdMU2hhZGVyOjpk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU2hh
ZGVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4
dDNkLT5kZWxldGVTaGFkZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5oCmluZGV4IDdiNDczM2FiY2U3ZWM0YWVjNDdhNGZkNTAyOWYxNDIwNmM4ZmY4
NzkuLmNiM2RjNDg5OWQ0Yjk2ZmI5ODE4NGZlZGUxM2QwNDU3ODM0NDM1ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0NH
TGVudW0pOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAogICAgIEdDR0xl
bnVtIG1fdHlwZTsKICAgICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaAppbmRleCA3YWI0
MjIwYWUxMGQxNzdkNTE4ZTI4MTFhOGYxYWQzMDc4N2RiZTM5Li41OTdkM2YwMGI0YzNmNjM5NDJl
MWQzNmNmYTBlNGQxMWJlMjIxNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKaW5kZXggNzE4MjZhNGY1MzA3NmFmYjgxZDFk
ZmY3ZDZmYjM5MGQwZWFiMDNiMy4uOTM2Yzk4MWM5OTI5MGQ4ZTdjZWY5OGIxM2I1NjkzY2JlYjIz
Nzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2Jq
ZWN0LmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIFdlYkdMU2hhcmVkT2JqZWN0OjpoYXNHcm91
cE9yQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dEdyb3VwICYmIG1fY29udGV4
dEdyb3VwLT5oYXNBQ29udGV4dCgpOwogfQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTCogV2Vi
R0xTaGFyZWRPYmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CitHcmFwaGljc0Nv
bnRleHRHTCogV2ViR0xTaGFyZWRPYmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY29udGV4dEdyb3VwID8gJm1fY29udGV4dEdyb3VwLT5nZXRBR3Jh
cGhpY3NDb250ZXh0R0woKSA6IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAppbmRleCBiZGNlYzZlMDJlNGFmNmYyMjc4M2EzZTYx
MTM5YzIwNDQxNjBhMmY1Li41ZDEzYWZhMzg0NmFhMjE1MzBjMGFiZDUzOTBhYTFlNzk4ZTllMWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTG9jazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwog
Y2xhc3MgV2ViR0xDb250ZXh0R3JvdXA7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OwogCkBAIC02Niw3ICs2Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzR3JvdXBPckNv
bnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBn
ZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKKyAgICBHcmFwaGljc0NvbnRl
eHRHTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIG1fY29udGV4dEdyb3VwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5kZXggMTc5ZDQ4NmFiMjIyMGY0ZTk1MmI0MTdkZDc0
ZDY3NTIwZjUwZTViOS4uNGE0MjBiZjBhMTE2Y2NjYWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIFdlYkdMU3luYzo6V2ViR0xTeW5jKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkK
ICAgICBzZXRPYmplY3QoLTEpOwogfQogCi12b2lkIFdlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFN5bmM6OmRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNk
LCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsK
ICAgICBjb250ZXh0M2QtPmRlbGV0ZVN5bmMobV9zeW5jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTeW5jLmgKaW5kZXggYzNkMzI2NGI4NjBkZTlmN2RlNzM0MzUwYjMxMDhlZjlkM2E3
YzAyZi4uNTdhZTM4YTAzMDkxNDA1MTUzMWUxNDdiZmY5ODQxNDc4ZGQwZGNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAg
ICAgR0NHTGludCBtX3N5bmNTdGF0dXMgPSB7IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVE
IH07CiAgICAgR0NHTHN5bmMgbV9zeW5jOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBX
VEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCmluZGV4IGEzOTg2ZGE1MDJiOWU0ZTBjYjZl
NjA4NDg4ZTI2MDllYmZmMzFlZDguLjZhNjllYzNkYWNhOGQzZGNmY2ViMDYwNDE5YzU0NTQxZTZm
YTM2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcApA
QCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2ViR0xUZXh0dXJlOjpzZXRUYXJnZXQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IG1heExldmVsKQogI2VuZGlmIC8vIFVTRShBTkdMRSkKIH0KIAot
dm9pZCBXZWJHTFRleHR1cmU6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9i
amVjdCkKK3ZvaWQgV2ViR0xUZXh0dXJlOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBv
YmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVUZXh0dXJlKG9iamVjdCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCmluZGV4IGRlMjlmOGI4NzU3ZTc5
MWNkYTk5ZThlMDE5ZWI3ZGI4YTU5ZTJiMTguLmU3ZGI3MTgxMTk4ZWNkYTZiNjY0YmVhZDc5YjUz
MjRiOTZmZmNjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5o
CkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpA
QCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMVGV4dHVyZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29u
c3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdU
Rjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5kZXggMDI2ZWJiN2EyYzEzMjJiYzljYmEwNWM4OTE0ODg5
Y2UzYTgzNjhmZS4uYTQ1NDliZDk1ODhjM2QzOWVmZTEzYmUxNDk0ZWIyNmQ3YjBlOThjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xU
cmFuc2Zvcm1GZWVkYmFjayhXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBjdHgpCiAgICAgbV9ib3Vu
ZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMucmVzaXplKGN0eC5tYXhUcmFuc2Zvcm1G
ZWVkYmFja1NlcGFyYXRlQXR0cmlicygpKTsKIH0KIAotdm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVj
dCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRi
YWNrLmgKaW5kZXggN2I5OTRiMzA2ZGU0NDZhYWZlMWZjZDcwZGZiYjA3YmViNWRmNTI5Yi4uNDk2
MDdiNjJiNGY4YmY1M2RjMGZjZGM2ODA2MWY1NTlkNWI1MzE3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaApAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTQ1LDI5ICs0
NSwyOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwog
CiAgICAgc3RhdGljIFJlZjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBjcmVhdGUoV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dCYpOwotICAgIAorCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlOyB9CiAgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1
c2VkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2FjdGl2
ZSA9IGFjdGl2ZTsgfQogICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wgcGF1c2VkKSB7IG1fcGF1c2Vk
ID0gcGF1c2VkOyB9Ci0gICAgCisKICAgICAvLyBUaGVzZSBhcmUgdGhlIGluZGV4ZWQgYmluZCBw
b2ludHMgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXJzLgogICAgIC8vIFJldHVybnMgZmFs
c2UgaWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlIGFuZCB0aGUgY2FsbGVyIHNob3VsZAogICAgIC8v
IHN5bnRoZXNpemUgYSBHTCBlcnJvci4KICAgICB2b2lkIHNldEJvdW5kSW5kZXhlZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCBpbmRl
eCwgV2ViR0xCdWZmZXIqKTsKICAgICBib29sIGdldEJvdW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyKEdDR0x1aW50IGluZGV4LCBXZWJHTEJ1ZmZlcioqIG91dEJ1ZmZlcik7Ci0gICAg
CisKICAgICBib29sIHZhbGlkYXRlUHJvZ3JhbUZvclJlc3VtZShXZWJHTFByb2dyYW0qKSBjb25z
dDsKIAogICAgIGJvb2wgaGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgp
ICYmIG1faGFzRXZlckJlZW5Cb3VuZDsgfQogICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgp
IHsgbV9oYXNFdmVyQmVlbkJvdW5kID0gdHJ1ZTsgfQotICAgIAorCiAgICAgV2ViR0xQcm9ncmFt
KiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRQcm9ncmFtKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTFByb2dyYW0mKTsKLSAg
ICAKKwogICAgIHZvaWQgdW5iaW5kQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xC
dWZmZXImKTsKLSAgICAKKwogICAgIGJvb2wgaGFzRW5vdWdoQnVmZmVycyhHQ0dMdWludCBudW1S
ZXF1aXJlZCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXRvciYpOwpAQCAtNzUsOCArNzUsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0wyUmVuZGVy
aW5nQ29udGV4dCYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOwotICAgIAorICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKwogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wYXVzZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNFdmVyQmVlbkJvdW5kIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5j
cHAKaW5kZXggNGViZGViY2FhNzNhZTU4Mjg0ZTdmYTFkNTc0YzQxYTUyYzZiNzA1OC4uZjE4NGFk
NGFiNGM2YWRkZjBlNDE4OTliOTMzOTVkNGFhYWEyZWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKKwogUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0LCBUeXBlIHR5cGUp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChjb250
ZXh0LCB0eXBlKSk7CkBAIC01OCw3ICs1OCw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6Oldl
YkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4CiAg
ICAgc2V0T2JqZWN0KHRoaXMtPmNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRl
VmVydGV4QXJyYXkoKSk7CiB9CiAKLXZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9i
amVjdCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoK
QEAgLTY3LDEwICs2NywxMCBAQCB2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcAogICAgICAgICBjb250
ZXh0M2QtPmRlbGV0ZVZlcnRleEFycmF5KG9iamVjdCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICBtX2Jv
dW5kRWxlbWVudEFycmF5QnVmZmVyLT5vbkRldGFjaGVkKGxvY2tlciwgY29udGV4dDNkKTsKLSAg
ICAKKwogICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX3ZlcnRleEF0dHJpYlN0YXRlKSB7CiAgICAg
ICAgIGlmIChzdGF0ZS5idWZmZXJCaW5kaW5nKQogICAgICAgICAgICAgc3RhdGUuYnVmZmVyQmlu
ZGluZy0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQzZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKaW5kZXggNDc0ZmJkNDM1
NGE4YmM5MTA0NDE0ZDMzYjY2Y2Q2ZTM0ZmUxNWY2MC4uZjljY2VkMThjNmQ1NWMzNjUxYzM3OTli
MTBmM2FhZGUwYjA5Y2Y5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3QoKTsKIHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZS5oCmluZGV4IDFjNmI2NzJhMDdmYTJmNDE1YTc2YzkzODNiNDQwZjE3MmEyYjE4
MzQuLjVhOTM2YjI4NGZjMWZkZGY2YWZlZGU3NWVmZGM4NjE1ZTc3MmRmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5o
IgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0T2JqZWN0
LmgiCiAKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2UoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwot
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKIAogICAgIFR5
cGUgbV90eXBlOwogICAgIGJvb2wgbV9oYXNFdmVyQmVlbkJvdW5kIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5jcHAKaW5kZXggNWZlODFkYmZmODhiYTRmYzZhYmI4OGUyM2E5NzgzZWU4YzFhYzFkMy4u
NThlNTc0N2YwYTIyZTJiNWZlZjRhYjk2NWEyNWQwOTgzMjQ2MzU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgpAQCAtNTksNyArNTksNyBAQCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjp+V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lk
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNk
LCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdy
YXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
CmluZGV4IDBjMTU5ZWFjZTkyNmIwOTVkYjVlYTYzMmRlM2FhNjE0MjVjMDc2ZWYuLjJkMGNiNzhm
MjAxMTZlY2ZiYTk4MjkzODYyNTVlYjBiOTA0NjcwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCk7
CiBwcml2YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggNjkzNzc4ZGY2ZTAyMGNiMDE4
MDFlNzVjOGUzOTk1M2Q5ZjE3MjYyYy4uN2EwNDIwZDdmZmFmZDY0OGU0YjZkNTcxNDhjZDAyNDdi
Mzg0ZWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNo
YWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJX
ZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAj
aW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1
MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwLi5lMGFjODhiZTE2NDA1Nzc4NGQ5MTIxYTg3ZjgwMTFi
MzllMjU5YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yNDIsNyArMjQyLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29sIGNvcHlUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYgY29udGV4
dCwgR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlw
WSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5jb3B5VG9Q
bGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBkZXN0aW5hdGlvblRleHR1cmUsIGludGVy
bmFsZm9ybWF0LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDBmNWRiYmFiZmIxNDhkZjBh
ZDIzMjdlMDRlZDMxMGZkNzE4ZTFlYzkuLjhhMmZlNmVmZGY3OTZjMWU5YTJkNGNmZjA1Zjg3YzJl
N2E1ZjYyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
c2lvbnNHTC5oCkBAIC0yNjYsNiArMjY2LDggQEAgcHVibGljOgogICAgICAgICBDT0xPUl9BVFRB
Q0hNRU5UMTVfRVhUID0gMHg4Q0VGCiAgICAgfTsKIAorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBp
biBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KKwogICAgIC8vIEdMX0FS
Ql9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJz
IGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUg
Zm9sbG93aW5nIHdheToKQEAgLTI5MCwxMSArMjkyLDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBF
WFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgotICAgIHZpcnR1
YWwgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZs
b2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFt
cykgPSAwOwotCiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CkBAIC0zMDgsNiArMzA1LDg0
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKKyAgICAv
LyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIHZvaWQqKiBwb2ludGVyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCB2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4
b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2
b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJv
cmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRR
dWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgdm9pZCoqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBpbnQqIGRhdGEpID0g
MDsgLy8gTk9MSU5UCisgICAgdmlydHVhbCB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRl
Z2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9
IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGZsb2F0KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9p
ZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogdmFs
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBn
ZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgdm9pZCoqIHBhcmFtcykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5z
LCBHQ0dMc2l6ZWkqIHJvd3MsIHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJP
YmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x1aW50KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50NjQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgPSAwOworCisgICAgLy8g
T3RoZXIgZnVuY3Rpb25zLgorI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRVhUIFJvYnVzdG5lc3Mg
LSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5Q
aXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQq
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCogcGFyYW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwg
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50KiBwYXJhbXMpID0gMDsKKyNlbmRp
ZgorCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c0FNRCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKQEAgLTMxOSw3NSAr
Mzk0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9t
ZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5H
TEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxz
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZh
bCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1u
cywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCmluZGV4IDEwYjU5OTcwMjM2ODc3NzFjNmVmNDE3
MDk0NTMzNjBmNWMzMTliMGEuLmRjYmM4YmI0MDg1ZWJiY2Q2Y2MzYzUzOTM3ZGU0Mzc3NDcyYjg1
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmNwcApAQCAtMTcxOSw3ICsxNzE5LDcgQEAgQUxXQVlTX0lOTElORV9FWENFUFRf
TVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydCgpCiAgICAgfQogCiAgICAgLy8gT25s
eSB0ZXh0dXJlcyB1cGxvYWRlZCBmcm9tIERPTSBlbGVtZW50cyBvciBJbWFnZURhdGEgY2FuIGFs
bG93IERzdEZvcm1hdCAhPSBTcmNGb3JtYXQuCi0gICAgY29uc3QgYm9vbCBzcmNGb3JtYXRDb21l
c0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3Jj
Rm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zvcm1hdCk7CisgICAgY29u
c3QgYm9vbCBzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFwaGlj
c0NvbnRleHRHTDo6c3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zv
cm1hdCk7CiAgICAgaWYgKCFzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEg
JiYgU3JjRm9ybWF0ICE9IERzdEZvcm1hdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTczMyw3ICsxNzMzLDcgQEAgQUxXQVlTX0lOTElORV9F
WENFUFRfTVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydCgpCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICgoIUdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpoYXNBbHBoYShTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aGFzQ29sb3IoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Omhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhhT3AgIT0gR3JhcGhpY3NDb250ZXh0R0w6
OkFscGhhT3A6OkRvTm90aGluZykgeworICAgIGlmICgoIUdyYXBoaWNzQ29udGV4dEdMOjpoYXNB
bHBoYShTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRleHRHTDo6aGFzQ29sb3IoU3JjRm9ybWF0
KSB8fCAhR3JhcGhpY3NDb250ZXh0R0w6Omhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhhT3Ag
IT0gR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRvTm90aGluZykgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKaW5kZXggZjRjZGQ2
ZTdmZTg3NzZjODhiNmY5NjZiY2I0MDRkZDY0MDgzOTA4MC4uYzZmNTEyNmVkZTVjYmQ2Yzc1MzI5
MzhiY2NlODZjOTM3NjU0MzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2Eu
LmY1ZTc0M2VmMzMxMjI2MDgwYzFlMTk1MWQ4MjUwZjM2YzgzYWUxMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05NCw3
ICs5NCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE1lZGlh
UGxheWVyOwogY2xhc3MgUm91bmRlZFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUGF0aDsKIGNsYXNzIFRleHRSdW47
CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUgewogCiAgICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFk
aWVudDsKICAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsKLSAgICAKKwogICAgIFJl
ZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OwogICAgIFJlZlB0cjxQYXR0ZXJuPiBmaWxsUGF0
dGVybjsKIApAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB7CiAKICAgICB2b2lkIGFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKLSAgICAKKwogICAgIHZvaWQgZHVtcChXVEY6OlRl
eHRTdHJlYW0mKSBjb25zdDsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7CkBA
IC0yNTksMTMgKzI1OSwxMyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dCopOwotICAgIAorCiAgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rv
cnkgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRJbXBsPihH
cmFwaGljc0NvbnRleHQmKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNv
bnN0IEdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5Jik7CiAKICAgICBHcmFwaGljc0NvbnRleHQo
KSA9IGRlZmF1bHQ7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dCgpOwotICAg
IAorCiAgICAgZW51bSBjbGFzcyBQYWludEludmFsaWRhdGlvblJlYXNvbnMgOiB1aW50OF90IHsK
ICAgICAgICAgTm9uZSwKICAgICAgICAgSW52YWxpZGF0aW5nQ29udHJvbFRpbnRzLApAQCAtMzQ5
LDcgKzM0OSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZSgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZSgpOwotICAgIAorCiAgICAgdW5zaWduZWQg
c3RhY2tTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7IH0KIAogICAgIC8vIFRo
ZXNlIGRyYXcgbWV0aG9kcyB3aWxsIGRvIGJvdGggc3Ryb2tpbmcgYW5kIGZpbGxpbmcuCkBAIC00
MTEsNyArNDExLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9
OwogICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJik7Ci0gICAgCisKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdz
KTsKQEAgLTY4MCwxMyArNjgwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2F2ZUFuZFJl
c3RvcmUpCiAgICAgICAgICAgICBtX2NvbnRleHQuc2F2ZSgpOwogICAgIH0KLSAgICAKKwogICAg
IH5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NhdmVB
bmRSZXN0b3JlKQogICAgICAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsKICAgICB9Ci0gICAg
CisKICAgICB2b2lkIHNhdmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRSZXN0
b3JlKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29udGV4dC5yZXN0
b3JlKCk7CiAgICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSBmYWxzZTsKICAgICB9Ci0gICAgCisK
ICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0
OyB9CiAKIHByaXZhdGU6CkBAIC03MTUsNyArNzE1LDcgQEAgcHVibGljOgogICAgICAgICA6IG1f
Y29udGV4dChjb250ZXh0KQogICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXpl
KCkpCiAgICAgeyB9Ci0gICAgCisKICAgICB+R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNr
ZXIoKQogICAgIHsKICAgICAgICAgaWYgKG1fY29udGV4dC5zdGFja1NpemUoKSAhPSBtX3N0YWNr
U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmNwcAppbmRleCBhMTZmNThkYjNhNDBhNGFlNTdmZjlhN2FjMTE1OGQ3ODcx
YTNlZmYzLi5kZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuY3BwCkBAIC03MzQsODcgKzczNCw2IEBAIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMOjpj
b21wdXRlSW1hZ2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KIAotI2lmICFVU0UoQU5HTEUp
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMOjpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5h
bEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NHTGVu
dW0mIHR5cGUpCi17Ci0jZGVmaW5lIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoaW50ZXJuYWxG
b3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGVNYWNybykgY2FzZSBpbnRlcm5hbEZvcm1hdE1h
Y3JvOiBcCi0gICAgICAgIGZvcm1hdCA9IGZvcm1hdE1hY3JvOyBcCi0gICAgICAgIHR5cGUgPSB0
eXBlTWFjcm87IFwKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0
KSB7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCLCBSR0IsIFVOU0lHTkVE
X0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEsIFJHQkEsIFVO
U0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKExVTUlOQU5D
RV9BTFBIQSwgTFVNSU5BTkNFX0FMUEhBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0UsIExVTUlOQU5DRSwgVU5TSUdORURfQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoQUxQSEEsIEFMUEhBLCBVTlNJR05F
RF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOCwgUkVELCBVTlNJ
R05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOF9TTk9STSwg
UkVELCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZGLCBSRUQs
IEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMkYsIFJF
RCwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4VUksIFJFRF9J
TlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSOEksIFJFRF9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSMTZVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSMTZJLCBSRURfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMlVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfSU5U
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJJLCBSRURfSU5URUdFUiwg
SU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzgsIFJHLCBVTlNJR05F
RF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhfU05PUk0sIFJH
LCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2RiwgUkcsIEhB
TEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJGLCBSRywg
RkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOFVJLCBSR19JTlRF
R0VSLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
RzhJLCBSR19JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSRzE2VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSRzE2SSwgUkdfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJVSSwgUkdfSU5URUdFUiwgVU5TSUdORURfSU5UKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMySSwgUkdfSU5URUdFUiwgSU5U
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4LCBSR0IsIFVOU0lHTkVE
X0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNSR0I4LCBSR0IsIFVO
U0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjU2NSwg
UkdCLCBVTlNJR05FRF9TSE9SVF81XzZfNSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCOF9TTk9STSwgUkdCLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSMTFGX0cxMUZfQjEwRiwgUkdCLCBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVW
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I5X0U1LCBSR0IsIFVOU0lH
TkVEX0lOVF81XzlfOV85X1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkdCMTZGLCBSR0IsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQjMyRiwgUkdCLCBGTE9BVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCOFVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCOEksIFJHQl9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfU0hP
UlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2SSwgUkdCX0lOVEVH
RVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMlVJLCBS
R0JfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0IzMkksIFJHQl9JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQkE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShTUkdCOF9BTFBIQTgsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOwotICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4X1NOT1JNLCBSR0JBLCBCWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1X0ExLCBSR0JBLCBVTlNJR05F
RF9TSE9SVF81XzVfNV8xKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JB
NCwgUkdCQSwgVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkdCMTBfQTIsIFJHQkEsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2RiwgUkdCQSwgSEFMRl9G
TE9BVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMyRiwgUkdCQSwg
RkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4VUksIFJHQkFf
SU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCQThJLCBSR0JBX0lOVEVHRVIsIEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQjEwX0EyVUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZVSSwgUkdC
QV9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCQTE2SSwgUkdCQV9JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkdCQTMySSwgUkdCQV9JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lO
VCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMTYs
IERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVCwgREVQVEhfQ09NUE9ORU5ULCBVTlNJR05FRF9T
SE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5U
MjQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQzMkYsIERFUFRIX0NPTVBPTkVOVCwgRkxPQVQp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX1NURU5DSUwsIERFUFRI
X1NURU5DSUwsIFVOU0lHTkVEX0lOVF8yNF84KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShERVBUSDI0X1NURU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRf
OCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgzMkZfU1RFTkNJTDgs
IERFUFRIX1NURU5DSUwsIEZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpT
UkdCX0FMUEhBX0VYVCwgVU5TSUdORURfQllURSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSN1bmRlZiBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFCi0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZiAvLyAhVVNFKEFOR0xFKQotCiBib29sIEdyYXBoaWNz
Q29udGV4dEdMOjpwYWNrSW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogcGl4ZWxz
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEFscGhhT3AgYWxw
aGFPcCwgRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIHVuc2lnbmVkIHNvdXJjZUltYWdlV2lkdGgs
IHVuc2lnbmVkIHNvdXJjZUltYWdlSGVpZ2h0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VJbWFnZVN1
YlJlY3RhbmdsZSwgaW50IGRlcHRoLCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGlu
dCB1bnBhY2tJbWFnZUhlaWdodCwgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmICgh
aW1hZ2UgfHwgIXBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDAwN2M5M2MxMGQxN2Y2ODJjMmE1ODZiZjcx
MDExOWFhZWNjMTRlNDUuLmEyY2NmOTYyY2QxMjZjMzM1OTg2NzMxZGFhM2ZlZjM2ZDIwYzIzMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaApAQCAtOTE5LDcgKzkxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVu
dChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCBy
ZW1vdmVDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsg
fQogCi0gICAgLy8gPT09PT09PT09PSBXZWJHTCAxIGVudHJ5IHBvaW50cy4KKyAgICAvLyBXZWJH
TCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyKSA9IDA7CkBAIC0xMTAzLDkgKzExMDMsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLQogICAgIHZpcnR1YWwg
dm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0
YSkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsKQEAgLTExMTUsMzYgKzExMTIsMTUgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJzOyB9Ci0gICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQotICAgIC8v
IENvbmNlc3Npb24gdG8gQ2FudmFzIGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFt
aWNhbGx5IHNldAotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVy
IHRvIGF2b2lkIGltcGxpY2l0IGNsZWFycy4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJh
bGx5IGRvIG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgotICAgIHZp
cnR1YWwgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLQogICAgIC8vIFZlcnRl
eEFycmF5T2plY3QgY2FsbHMKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVy
dGV4QXJyYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBsYXRm
b3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzVmVydGV4QXJyYXko
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJyYXko
UGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0jaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdM
MikKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSA9IDA7
Ci0jZW5kaWYKLQotICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24t
bnVsbCBvYmplY3QsIHRob3VnaCBub3QKLSAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBt
YXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQotICAgIC8vIGN1cnJlbnQgaGFyZHdh
cmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KLSAgICAvLyBkZXRlcm1p
bmUgdGhpcy4KLSAgICB2aXJ0dWFsIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0gMDsK
LQogICAgIC8vID09PT09PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKLSAgICB2aXJ0dWFs
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xl
bnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBk
c3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IGxlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkKiBtYXBCdWZmZXJS
YW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVu
Z3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiB1
bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpID0gMDsKIApAQCAtMTI0MywxOSArMTIxOSw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0g
MDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRp
bmcpID0gMDsKIAotICAgIC8vIHRleFN1YkltYWdlMkQgd2l0aCBwaXhlbCBwYWNrIGJ1ZmZlciwg
YW5kIHNyY0RhdGErb2Zmc2V0LCBhcmUKLSAgICAvLyBzdXBwb3J0ZWQgb25seSB2aWEgQU5HTEVf
cm9idXN0X2NsaWVudF9tZW1vcnkuCi0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50
cHRyIG9mZnNldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGhPdmVycmlkZSkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CkBAIC0xMjcwLDEwICsxMjM2LDI0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVh
ZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERh
dGEsIEdDR0x1aW50IGRzdE9mZnNldCkgPSAwOworICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KIAot
ICAgIC8vID09PT09PT09PT0gTm9uLVdlYkdMIGJhc2VkIGVudHJ5IHBvaW50cy4KKyAgICBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJzOyB9CisgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQorCisgICAg
Ly8gRklYTUU6IFRoZSBjYWxsaW5nIHNpdGUgc2hvdWxkIGJlIGZpeGVkLCB0aGlzIGJyZWFrcyB0
aGUgV2ViR0wgc3BlYworICAgIC8vIHdydCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2Ug
YmVoYXZpb3IuCisgICAgLy8gQ29uY2Vzc2lvbiB0byBDYW52YXMgY2FwdHVyZVN0cmVhbSwgd2hp
Y2ggbmVlZHMgdG8gZHluYW1pY2FsbHkgc2V0CisgICAgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVy
IHRvIHRydWUgaW4gb3JkZXIgdG8gYXZvaWQgaW1wbGljaXQgY2xlYXJzLgorICAgIC8vIEltcGxl
bWVudGF0aW9ucyBnZW5lcmFsbHkgZG8gbm90IHN1cHBvcnQgdG9nZ2xpbmcgdGhpcyBiaXQgYXJi
aXRyYXJpbHkuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigp
OworCisgICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9i
amVjdCwgdGhvdWdoIG5vdAorICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNl
c3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVz
dCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bworICAgIC8vIGRldGVybWluZSB0aGlz
LgorICAgIHZpcnR1YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKIApAQCAtMTI5MSwyMSAr
MTI3MSw0MyBAQCBwdWJsaWM6CiAgICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2Vy
ZSBhZGRlZC4KICAgICB2aXJ0dWFsIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJy
b3IpID0gMDsKIAorICAgIC8vIFJlYWQgcmVhbCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVt
IHRvIHRoZSBzeW50aGV0aWMKKyAgICAvLyBlcnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBs
ZWFzdCBvbmUgZXJyb3IgaXMgbW92ZWQuCisgICAgdmlydHVhbCBib29sIG1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGYWlsTmV4dEdQ
VVN0YXR1c0NoZWNrKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
KCkgPSAwOwogCisgICAgLy8gRklYTUU6IHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgc2hvdWxk
IGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBzdGF0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgbWFya0NvbnRl
eHRDaGFuZ2VkKCkgPSAwOworCisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVk
LCBjYWxsZXIgaXMgaW50ZXJlc3RlZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAorICAgIC8v
IHNob3VsZCB0cmFjayB0aGF0IGluIGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBD
YWxsZXIgc2hvdWxkIHJlY2VpdmUKKyAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5k
IGRpZENvbXBvc2l0ZSgpLgorICAgIHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdCA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhlc2Ugc2hvdWxkIGJlIHJlbW92ZWQsIHRo
ZXkncmUgcGFydCBvZiBkcmF3aW5nIGJ1ZmZlciBhbmQKKyAgICAvLyBkaXNwbGF5IGJ1ZmZlciBh
YnN0cmFjdGlvbnMgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBob2xkIHNlcGFyYXRlIHRvCisgICAg
Ly8gdGhlIGNvbnRleHQuCisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKworICAg
IC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1h
cmtlZCBjb21wb3NpdGVkIGJ5CisgICAgLy8gcHJlcGFyaW5nIGZvciBkaXNwbGF5LCBzbyB0aGF0
IGNhbnZhcyBpbWFnZSBidWZmZXIgYW5kIHRoZSBsYXllciBhZ3JlZQorICAgIC8vIG9uIHRoZSBj
b250ZW50LgorICAgIHZpcnR1YWwgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSA9IDA7CisKICNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgLy8gUmV0dXJucyBpbnRlcmZhY2Ug
Zm9yIENWIGludGVyYWN0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCiAgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgPSAwOwogI2VuZGlmCiAKLSNpZiAh
VVNFKEFOR0xFKQotICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2Fz
ZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgotICAgIC8vIFJldHVybiB0cnVlIGlmIG5v
IEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgotICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBp
cyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1h
Z2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25t
ZW50ID0gNCkgPSAgMDsKLSNlbmRpZgogCiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVu
dEhlaWdodCk7IH0KIApAQCAtMTMzNSwxMCArMTMzNyw2IEBAIHB1YmxpYzoKICAgICAvLyAgIElO
VkFMSURfRU5VTSBpZiBmb3JtYXQvdHlwZSBpcyBpbGxlZ2FsLgogICAgIHN0YXRpYyBHQ0dMZW51
bSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBjb25z
dCBQaXhlbFN0b3JlUGFyYW1zJiwgdW5zaWduZWQqIGltYWdlU2l6ZUluQnl0ZXMsIHVuc2lnbmVk
KiBwYWRkaW5nSW5CeXRlcywgdW5zaWduZWQqIHNraXBTaXplSW5CeXRlcyk7CiAKLSNpZiAhVVNF
KEFOR0xFKQotICAgIHN0YXRpYyBib29sIHBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFs
Rm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSYgZm9ybWF0LCBHQ0dMZW51
bSYgdHlwZSk7Ci0jZW5kaWYgLy8gIVVTRShBTkdMRSkKLQogICAgIC8vIEV4dHJhY3RzIHRoZSBj
b250ZW50cyBvZiB0aGUgZ2l2ZW4gSW1hZ2VEYXRhIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCiAg
ICAgLy8gcGFja2luZyB0aGUgcGl4ZWwgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1h
dCBhbmQgdHlwZSwKICAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5
QWxwaGEgZmxhZ3MuIFJldHVybnMgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAppbmRleCBmMzUxY2ZiOGQ4ZmUxNmI3NjhmMjNh
NGRhNmJkYTc0NTA1ZGQ2MWY5Li40OWI3OWQ4NDllOTJmMzkyN2Y4ZGUzY2NiMWEwM2I4MzE4YTFk
Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzR0wuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJh
Z21hIG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCmluZGV4IGU3MzZhZjgyMGE1Y2VkNjNhZTc1MTc2YTI5OTQyMzJiZGFkZjJhNDcuLmM2ZjU0
MmFkYzg5MzA3OTBiYTBkY2I3M2FhZmIxNjMwYjViYmY4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjIsNyArMjIsNyBAQAogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBGSVhNRTogY3VycmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRo
b2QgaGF2ZSB0aGUgcmVzdHJpY3Rpb24gdGhhdCB0aGV5IG9ubHkgd29yawogICAgIC8vIHdpdGgg
dGV4dHVyZXMgdGhhdCBhcmUgUkdCIG9yIFJHQkEgZm9ybWF0LCBhbmQgVU5TSUdORURfQllURSB0
eXBlLgotICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVt
LCBib29sLCBib29sKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgPSAwOwogICAgIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBj
YjU4NzI1NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi42MDk4YzUyYTcwNDE5NTI1
OTc2ZGMyYzQyNmE4MzQ4YzhjNjgxZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzksNyArMzksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgSG9z
dFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1hZ2VEYXRhOwpAQCAtOTgsOCArOTgsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRl
c3RGb3JtYXQpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIAorICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNP
cmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3YWFhMWVmYjNhNWUzNTM2MTZiMjI5YmI1
YTNmMjcwYWQ1Y2ExMGNmLi44NjEzMTlmMzc0NGRhNGU4MDdhMTMyYjk0ZDM2ZDkzMWU5ZjU2NjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKQEAgLTMzNiw3ICszMzYsNyBAQCBzdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRpYQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMgLSBJbiB0
aGUgYWJzZW5jZSBvZiBhIHNwZWNpZmljYXRpb24gdG8gdGhlIGNvbnRyYXJ5LCB0aGUgTUlNRSB0
eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCi0gICAgLy8gd2hlbiB1c2VkIHdpdGggcGFy
YW1ldGVycywgZS5nLiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2NvZGVjcz10aGVvcmEiLCBp
cyBhIHR5cGUgdGhhdCB0aGUgdXNlciBhZ2VudCBrbm93cyAKKyAgICAvLyB3aGVuIHVzZWQgd2l0
aCBwYXJhbWV0ZXJzLCBlLmcuICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07Y29kZWNzPXRoZW9y
YSIsIGlzIGEgdHlwZSB0aGF0IHRoZSB1c2VyIGFnZW50IGtub3dzCiAgICAgLy8gaXQgY2Fubm90
IHJlbmRlci4KICAgICBpZiAocGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSA9PSBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnR5cGUuY29k
ZWNzKCkuaXNFbXB0eSgpKQpAQCAtMzcyLDcgKzM3Miw3IEBAIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogTWVkaWFQbGF5ZXI6Om5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rv
cnkqCiAgICAgaWYgKGVuZ2luZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGlmICghY3VycmVudCkgCisgICAgaWYgKCFjdXJyZW50KQogICAgICAgICByZXR1cm4g
ZW5naW5lcy5maXJzdCgpLmdldCgpOwogCiAgICAgYXV0byBjdXJyZW50SW5kZXggPSBlbmdpbmVz
LmZpbmRNYXRjaGluZyhbY3VycmVudF0gKGF1dG8mIGVuZ2luZSkgewpAQCAtNTI2LDcgKzUyNiw3
IEBAIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFF
bmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRo
TmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKSAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2RlZmlu
ZSBNRURJQVNPVVJDRSBtX21lZGlhU291cmNlCiAjZWxzZQogI2RlZmluZSBNRURJQVNPVVJDRSAw
CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6cHJlcGFyZUZvclJlbmRlcmlu
ZygpCiB2b2lkIE1lZGlhUGxheWVyOjpjYW5jZWxMb2FkKCkKIHsKICAgICBtX3ByaXZhdGUtPmNh
bmNlbExvYWQoKTsKLX0gICAgCit9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnByZXBhcmVUb1BsYXko
KQogewpAQCAtNjUyLDcgKzY1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmtleUFkZGVkKCkKIH0K
IAogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiB2b2lkIE1l
ZGlhUGxheWVyOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKQEAg
LTc2NCw3ICs3NjQsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllcjo6cGxhdGZvcm1MYXll
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGxhdGZvcm1MYXllcigpOwogfQot
ICAgIAorCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCiBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkK
QEAgLTk0OCw3ICs5NDgsNyBAQCBib29sIE1lZGlhUGxheWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mo
KQogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17
IAorewogICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgbV9wcml2YXRlLT5zZXRTaXplKHNpemUpOwog
fQpAQCAtOTgwLDcgKzk4MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgcCwgY29uc3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7
CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0
dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpA
QCAtOTkyLDcgKzk5Miw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXll
cjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgLy8gNC44LjEwLjMgTUlNRSB0eXBlcyAtIFRoZSBjYW5QbGF5VHlwZSh0
eXBlKSBtZXRob2QgbXVzdCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBpZiB0eXBlIGlzIGEgdHlw
ZSB0aGF0IHRoZSAKKyAgICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBl
KHR5cGUpIG1ldGhvZCBtdXN0IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0
eXBlIHRoYXQgdGhlCiAgICAgLy8gdXNlciBhZ2VudCBrbm93cyBpdCBjYW5ub3QgcmVuZGVyIG9y
IGlzIHRoZSB0eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCiAgICAgQXRvbVN0cmluZyBj
b250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAo
Y29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpCkBAIC0xMDEyLDcgKzEw
MTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdAogICAgICAgICBlbmdpbmUtPmdldFN1cHBv
cnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlwZXMuYWRkKGVuZ2luZVR5cGVzLmJl
Z2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9Ci19IAorfQogCiBib29sIE1lZGlhUGxh
eWVyOjppc0F2YWlsYWJsZSgpCiB7CkBAIC0xMTczLDcgKzExNzMsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiAgICAg
ZWxzZQogICAgICAgICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgp
KTsKIH0KLSAgICAKKwogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXll
cjo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwpAQCAtMTQ4MSw3ICsxNDgxLDcgQEAg
U3RyaW5nIE1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdAog
ewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAg
ICAKKwogICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygp
OwogfQogCkBAIC0xNDk3LDcgKzE0OTcsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5
ZXI6OmZpbGVTaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCisKICAgICByZXR1cm4gbV9wcml2YXRlLT5maWxlU2l6ZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAz
M2MxZGNhODgyNDEwMjBmNGZkMWRmNjJmNTZmMGFjZTc2MDhmOGE4Li41OWE5ZWUyN2MyM2QxZTJh
MmY2MmViNmZkYTliMWZjYmM3NTFiMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7Citj
bGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIElu
YmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBMZWdhY3lDRE07CkBAIC0xNzksNyArMTc5LDcg
QEAgcHVibGljOgogCiAgICAgLy8gQSBjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgbWVkaWEgZmlsZSwg
ZWcuIHZpZGVvLCBhdWRpbywgY2xvc2VkIGNhcHRpb25zLCBldGMsIGhhcyBjaGFuZ2VkLgogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpIHsgfQotICAg
IAorCiAgICAgLy8gd2hldGhlciB0aGUgcmVuZGVyaW5nIHN5c3RlbSBjYW4gYWNjZWxlcmF0ZSB0
aGUgZGlzcGxheSBvZiB0aGlzIE1lZGlhUGxheWVyLgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0y
MDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYsIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5n
ZWQoKSB7IH0KICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1dpcmVsZXNzQ2hhbmdlZChib29sKSB7IH07CiAjZW5kaWYKQEAgLTQyOCw3ICs0MjgsNyBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgbWF5IG5lZWQgdG8gYmUgcmVz
aXplZCB0byB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc291cmNlIHRleHR1cmUgb3IgcmUtZGVm
aW5lZCB0byB0aGUgcmVxdWlyZWQgaW50ZXJuYWxGb3JtYXQuCiAgICAgLy8gVGhlIGN1cnJlbnQg
cmVzdHJpY3Rpb25zIHJlcXVpcmUgdGhhdCBmb3JtYXQgc2hvdWQgYmUgUkdCIG9yIFJHQkEsIHR5
cGUgc2hvdWxkIGJlIFVOU0lHTkVEX0JZVEUgYW5kIGxldmVsIHNob3VsZCBiZSAwLiBJdCBtYXkg
YmUgbGlmdGVkIGluIHRoZSBmdXR1cmUuCiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKaW5kZXggYzM2YzJmNTU1NThhNmY3M2M2ZTc1NDM3OWEzNDMxMTQwMzhiMGI5
MS4uYWFmZjQxOTdkMWU2Y2FhZmQyNzU1YzAzMjRkNWI3ZDc2NTY3MjE5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHByZXBhcmUpCiAgICAgICAgICAg
ICBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1BsYXkoKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpID0gMDsgICAgCisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkg
eyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2Vk
Q2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgeyB9CiAKICAgICB2aXJ0dWFsIGRv
dWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCk7IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQotICAg
IHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6OlByZWxvYWQpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDEzZmFmNWRiNjRm
ZmIyODZiZTZhZDk1Nzk1MDk1ZmNjOTNmMzMzOTQuLjFjOGJjNDI1NTBmMWMxZDk1YzMwODJmNjcz
NzZhNTY5NTA2YmZhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTE0OCwyMSArMTQ4
LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lv
bnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNFWFQoaW50LCBpbnQsIEdDR0xzaXpl
aSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgdm9pZCAqKQotewot
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBp
bnQsIEdDR0xzaXplaSwgZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIGludCAqKQotewotICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQot
CiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9u
ZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwg
bG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25n
IGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQ
UExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgpAQCAtNDYyLDYgKzQ0Nyw4IEBAIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBpbnQgbGV2CiAgICAgICAgIHJldHVybjsKIAogICAgIGdsOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgbV9jb250ZXh0
LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+bV9zdGF0ZS5jdXJyZW50
Qm91bmRUZXh0dXJlKCkpOworCiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGlu
dCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQpAQCAtNDcwLDYgKzQ1Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dM
QU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOworICAgIG1fY29udGV4dC0+bV9z
dGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IDQ2YWFjOWYyMWVl
MjdjYzc1YTA4Y2Y3YzFiNzVhMTBhZTQ1NzI4MjAuLjc1NjJlOTg2YzM4MzA3ZDE4NTRkNDgyMzg5
ODI3NmFiYTc2NWFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNjMsMTEgKzYzLDYgQEAg
cHVibGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEVYVCBSb2J1
c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lkIHJlYWRu
UGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lk
ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAg
IGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9CiAgICAgYm9v
bCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KICAgICBib29sIGlzSW50ZWwo
KSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKaW5kZXggMjY3NDdiYzAyYTkyMWMzMDMwYjUwMmRhZWMzYTEzNWVlNmVmMzBjNS4u
OTUxNWE0YzRlYTAyNmE2OGMxOGRlZjAxYTFiMDYyZDI0ZjVlN2YyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTIwNDksMjQgKzIwNDksNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTAogICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJy
ZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQotewot
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpDb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1ha2VDb250
ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5h
ZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotfQotCiBQbGF0Zm9ybUdMT2JqZWN0
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yMjg2LDE2ICsyMjY4LDYgQEAgR0NHTHVpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwKICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVu
aWZvcm1CbG9ja05hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBw
YXJhbXMpCi17Ci0gICAgUkVMRUFTRV9MT0coV2ViR0wsICJVc2UgZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRSBpbnN0ZWFkLiIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFyYW1zKTsK
LX0KLQogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwpAQCAtMjQ1OCwzNCArMjQzMCw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIFBsCiAgICAgZ2w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgs
IGJ1ZmZlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlckRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTSh0
YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3RCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGxlbmd0aCk7Ci19Ci0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29u
c3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0J5dGVPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTI5MjAs
NTggKzI4NjQsNiBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHBybwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh0
YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVy
bmFsZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTSho
ZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShib3JkZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbWFn
ZVNpemUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQotewotICAgIFVOVVNFRF9Q
QVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGludGVybmFsZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9Q
QVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShib3JkZXIpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oeG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHlvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhl
aWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdl
U2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNE
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKQotewot
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNF
RF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoT3ZlcnJpZGUpOwot
fQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9j
YXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTMwNjAs
MjkgKzI5NTIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYQogICAgIGdsOjpVbmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKLXsKLSAgICBVTlVTRURf
UEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQot
ewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFS
QU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDM4ZmM5
ZjA5Y2FlYWJkNjRkNTZkNDUxNmU0YmQ5Yzk5MmUyMmU3ZWIuLmEyMjdlOTAxYTBlNjZhYjJiZDYz
YjMyYmU2NzZlMmQ0YzgwYTQ1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI1NCw3ICsy
NTQsNyBAQCBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxD
aGFuZ2UoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFs
OworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZjA1NzYwZTFjOTZkOGZmOWRkY2IxYmVkMTExYWRjNzM2
MTFiZGFmMS4uM2JlNzE0MDA4ODhiZDhkNDQ4ODdlM2U1NjNmM2QyYzBmNjNlOWM5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtNDIsOCArNDIsOCBAQAogI2ltcG9ydCAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCIKICNpbXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIKICNpbXBvcnQgIkluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRk9iakMuaCIKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdh
bAogICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0Q2FjaGVGb3JQYXRoKHBhdGgp
OwogICAgIGlmICghYXNzZXRDYWNoZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgZm9y
IChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAgICAgIGlmICh0
b1N5c3RlbUNsb2NrVGltZShbYXNzZXRDYWNoZSBsYXN0TW9kaWZpZWREYXRlT2ZFbnRyeUZvcktl
eTprZXldKSA+IG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1vdmVF
bnRyeUZvcktleTprZXldOwpAQCAtMzgzLDI4ICszODMsMjggQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBXYWwKICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXNlVVJMIGVycm9y
Om5pbF07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBOU0FycmF5ICpwcm9w
ZXJ0eUtleXMgPSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtl
eSwgTlNVUkxJc1JlZ3VsYXJGaWxlS2V5XTsKICAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVu
dW1lcmF0b3IgPSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5n
UHJvcGVydGllc0ZvcktleXM6CiAgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0
b3J5RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCiAgICAgICAgIGVycm9y
SGFuZGxlcjpuaWxdOwotICAgIAorCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB1cmxz
VG9EZWxldGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBm
b3IgKE5TVVJMICpmaWxlVVJMIDogZW51bWVyYXRvcikgewogICAgICAgICBOU0RpY3Rpb25hcnkg
KmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNGb3JLZXlzOnByb3BlcnR5
S2V5cyBlcnJvcjpuaWxdOwotICAgIAorCiAgICAgICAgIGlmICghW2ZpbGVBdHRyaWJ1dGVzW05T
VVJMTmFtZUtleV0gaGFzUHJlZml4OkAiQ2FjaGVkTWVkaWEtIl0pCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFbZmlsZUF0dHJpYnV0ZXNbTlNVUkxJc1Jl
Z3VsYXJGaWxlS2V5XSBib29sVmFsdWVdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRlc1tOU1VSTENv
bnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICBbdXJsc1RvRGVsZXRlIGFkZE9iamVjdDpm
aWxlVVJMXTsKICAgICB9Ci0gICAgCisKICAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIHVybHNU
b0RlbGV0ZS5nZXQoKSkKICAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpmaWxl
VVJMIGVycm9yOm5pbF07CiB9CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKCkKICAgICBpZiAobV9hdlBsYXllckl0
ZW0pIHsKICAgICAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBpdGVtS1ZPUHJvcGVydGll
cygpKQogICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJlbW92ZU9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZV07Ci0gICAgICAgIAorCiAgICAg
ICAgIG1fYXZQbGF5ZXJJdGVtID0gbmlsOwogICAgIH0KICAgICBpZiAobV9hdlBsYXllcikgewpA
QCAtNjkxLDI5ICs2OTEsMjkgQEAgc3RhdGljIGNvbnN0IE5TQXJyYXkgKm1lZGlhRGVzY3JpcHRp
b25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRyYWNrRGF0YTo6VHJhY2tLaW5kIGsKIAogICAgIHJldHVy
biBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHkgXTsKIH0KLSAgICAKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKIHsKICAgICB0cmFja01vZGVDaGFuZ2Vk
KCk7CiB9Ci0gICAgCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpCiB7CiAgICAgY29uc3QgYXV0byYgb3V0T2ZCYW5k
VHJhY2tTb3VyY2VzID0gcGxheWVyKCktPm91dE9mQmFuZFRyYWNrU291cmNlcygpOwotICAgIAor
CiAgICAgZm9yIChhdXRvJiB0ZXh0VHJhY2sgOiBtX3RleHRUcmFja3MpIHsKICAgICAgICAgaWYg
KHRleHRUcmFjay0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSAhPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpPdXRPZkJhbmQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAg
ICAgUmVmUHRyPE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkY+IHRyYWNrUHJpdmF0ZSA9IHN0
YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYqPih0ZXh0VHJhY2suZ2V0KCkp
OwogICAgICAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gY3VycmVudE9wdGlv
biA9IHRyYWNrUHJpdmF0ZS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKLSAgICAgICAgCisKICAg
ICAgICAgZm9yIChhdXRvJiB0cmFjayA6IG91dE9mQmFuZFRyYWNrU291cmNlcykgewogICAgICAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1bmlxdWVJRCA9IFN0cmluZzo6bnVtYmVyKHRy
YWNrLT51bmlxdWVJZCgpKS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGlmICghW1tjdXJyZW50T3B0aW9uLmdldCgpIG91dE9mQmFuZElkZW50aWZpZXJdIGlz
RXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopdW5pcXVlSUQuZ2V0KCldKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6Ok1vZGUgbW9kZSA9IEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGU6OkhpZGRl
bjsKICAgICAgICAgICAgIHN3aXRjaCAodHJhY2stPm1vZGUoKSkgewogICAgICAgICAgICAgY2Fz
ZSBQbGF0Zm9ybVRleHRUcmFja0RhdGE6OlRyYWNrTW9kZTo6SGlkZGVuOgpAQCAtNzI2LDcgKzcy
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25p
emVUZXh0VHJhY2tTdGF0ZSgpCiAgICAgICAgICAgICAgICAgbW9kZSA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6Ok1vZGU6OlNob3dpbmc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgdGV4dFRyYWNrLT5zZXRNb2RlKG1v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc2OSw3ICs3NjksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JV
UkwoY29uc3QgVVJMJiB1cmwpCiAgICAgcGxheWVyKCktPmdldFJhd0Nvb2tpZXModXJsLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9u
cyksIHVybF0gKGF1dG8gY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChjb29raWVzLnNp
emUoKSkgewogICAgICAgICAgICAgYXV0byBuc0Nvb2tpZXMgPSBjcmVhdGVOU0FycmF5KGNvb2tp
ZXMsIFtdIChhdXRvJiBjb29raWUpIC0+IE5TSFRUUENvb2tpZSAqIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gY29va2llOwpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwg
UmV0CiAKICAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9IHBsYXllcigpLT5zaG91bGRVc2VQ
ZXJzaXN0ZW50Q2FjaGUoKTsKICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6QCghdXNlUGVyc2lzdGVu
dENhY2hlKSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleV07Ci0gICAg
CisKICAgICBpZiAodXNlUGVyc2lzdGVudENhY2hlKSB7CiAgICAgICAgIGlmIChhdXRvKiBhc3Nl
dENhY2hlID0gZW5zdXJlQXNzZXRDYWNoZUV4aXN0c0ZvclBhdGgocGxheWVyKCktPm1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSkpCiAgICAgICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6YXNzZXRDYWNo
ZSBmb3JLZXk6QVZVUkxBc3NldENhY2hlS2V5XTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkK
IAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCi0gICAgLy8gQ3JlYXRlIHRoZSBwbGF5
ZXIgaXRlbSBzbyB3ZSBjYW4gbG9hZCBtZWRpYSBkYXRhLiAKKyAgICAvLyBDcmVhdGUgdGhlIHBs
YXllciBpdGVtIHNvIHdlIGNhbiBsb2FkIG1lZGlhIGRhdGEuCiAgICAgbV9hdlBsYXllckl0ZW0g
PSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtSW5zdGFuY2UoKSBpbml0V2l0aEFzc2V0
Om1fYXZBc3NldC5nZXQoKV0pOwogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0
b3IoZGlkRW5kOikgbmFtZTpBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9u
IG9iamVjdDptX2F2UGxheWVySXRlbS5nZXQoKV07CkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OgogICAgICAgICB2aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIAorCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgdmlkZW9HcmF2aXR5XSA9PSB2
aWRlb0dyYXZpdHkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKE1lZGlhUGxheWVyOjpWaWQKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjZW5kaWYKIH0K
LSAgICAKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpCkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBTdHJpbmcgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YWNjZXNzTG9nKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAKKwog
ICAgIEFWUGxheWVySXRlbUFjY2Vzc0xvZyAqbG9nID0gW21fYXZQbGF5ZXJJdGVtLmdldCgpIGFj
Y2Vzc0xvZ107CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBsb2dTdHJpbmcgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbbG9nIGV4dGVuZGVkTG9nRGF0YV0gZW5jb2Rp
bmc6W2xvZyBleHRlbmRlZExvZ0RhdGFTdHJpbmdFbmNvZGluZ11dKTsKIApAQCAtMTIzMywxMiAr
MTIzMywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZEVu
ZCgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0
VmlzaWJsZShib29sIGlzVmlzaWJsZSkKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0g
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsgICAgCisgICAgW0NBVHJh
bnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICBpZiAobV92aWRlb0xheWVyKQog
ICAgICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldEhpZGRlbjohaXNWaXNpYmxlXTsKICAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQotICAgIAorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGxheSgpCiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2
YWlsYWJsZSgpKQpAQCAtMTI3Miw5ICsxMjcyLDkgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtRHVyYXRpb24oKSBjb25zdAogICAgIC8vIGFu
c3dlciBzeW5jaHJvbm91c2x5LgogICAgIGlmICghbV9hdkFzc2V0IHx8IGFzc2V0U3RhdHVzKCkg
PCBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNMb2FkZWQpCiAgICAgICAgIHJldHVybiBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCk7Ci0gICAgCisKICAgICBDTVRpbWUgY21EdXJhdGlvbjsKLSAgICAK
KwogICAgIC8vIENoZWNrIHRoZSBBVkl0ZW0gaWYgd2UgaGF2ZSBvbmUgYW5kIGl0IGhhcyBsb2Fk
ZWQgZHVyYXRpb24sIHNvbWUgYXNzZXRzIG5ldmVyIHJlcG9ydCBkdXJhdGlvbi4KICAgICBpZiAo
bV9hdlBsYXllckl0ZW0gJiYgcGxheWVySXRlbVN0YXR1cygpID49IE1lZGlhUGxheWVyQVZQbGF5
ZXJJdGVtU3RhdHVzUmVhZHlUb1BsYXkpCiAgICAgICAgIGNtRHVyYXRpb24gPSBbbV9hdlBsYXll
ckl0ZW0uZ2V0KCkgZHVyYXRpb25dOwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYg
dGltZSwgY29uc3QKICAgICAvLyBbQVZQbGF5ZXJJdGVtIHNlZWtUb1RpbWVdIHdpbGwgdGhyb3cg
YW4gZXhjZXB0aW9uIGlmIHRvbGVyYW5jZUJlZm9yZSBpcyBuZWdhdGl2ZS4KICAgICBpZiAoQ01U
aW1lQ29tcGFyZShjbUJlZm9yZSwga0NNVGltZVplcm8pIDwgMCkKICAgICAgICAgY21CZWZvcmUg
PSBrQ01UaW1lWmVybzsKLSAgICAKKwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyk7CiAKICAgICBzZXRTaG91bGRPYnNlcnZlVGltZUNvbnRyb2xTdGF0dXMoZmFsc2UpOwpA
QCAtMTQ3NCw3ICsxNDc0LDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTWF4VGltZVNlZWthYmxlKCkgY29uc3QKICAgICAgICAgQ01UaW1l
UmFuZ2UgdGltZVJhbmdlID0gW3RoaXNSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdOwogICAg
ICAgICBpZiAoIUNNVElNRVJBTkdFX0lTX1ZBTElEKHRpbWVSYW5nZSkgfHwgQ01USU1FUkFOR0Vf
SVNfRU1QVFkodGltZVJhbmdlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwog
ICAgICAgICBNZWRpYVRpbWUgZW5kT2ZSYW5nZSA9IFBBTDo6dG9NZWRpYVRpbWUoQ01UaW1lUmFu
Z2VHZXRFbmQodGltZVJhbmdlKSk7CiAgICAgICAgIGlmIChtYXhUaW1lU2Vla2FibGUgPCBlbmRP
ZlJhbmdlKQogICAgICAgICAgICAgbWF4VGltZVNlZWthYmxlID0gZW5kT2ZSYW5nZTsKQEAgLTE0
OTIsMTMgKzE0OTIsMTMgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnBsYXRmb3JtTWF4VGltZUxvYWRlZCgpIGNvbnN0CiAgICAgICAgIENNVGltZVJhbmdl
IHRpbWVSYW5nZSA9IFt0aGlzUmFuZ2VWYWx1ZSBDTVRpbWVSYW5nZVZhbHVlXTsKICAgICAgICAg
aWYgKCFDTVRJTUVSQU5HRV9JU19WQUxJRCh0aW1lUmFuZ2UpIHx8IENNVElNRVJBTkdFX0lTX0VN
UFRZKHRpbWVSYW5nZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAg
ICAgTWVkaWFUaW1lIGVuZE9mUmFuZ2UgPSBQQUw6OnRvTWVkaWFUaW1lKENNVGltZVJhbmdlR2V0
RW5kKHRpbWVSYW5nZSkpOwogICAgICAgICBpZiAobWF4VGltZUxvYWRlZCA8IGVuZE9mUmFuZ2Up
CiAgICAgICAgICAgICBtYXhUaW1lTG9hZGVkID0gZW5kT2ZSYW5nZTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gbWF4VGltZUxvYWRlZDsgICAKKyAgICByZXR1cm4gbWF4VGltZUxvYWRlZDsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRv
dGFsQnl0ZXMoKSBjb25zdApAQCAtMTUzNCw3ICsxNTM0LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjoKIAogICAgICAgICBpZiAoa2V5U3RhdHVzIDwgQVZLZXlWYWx1ZVN0YXR1c0xvYWRlZCkK
ICAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNMb2FkaW5nOy8vIEF0
IGxlYXN0IG9uZSBrZXkgaXMgbm90IGxvYWRlZCB5ZXQuCi0gICAgICAgIAorCiAgICAgICAgIGlm
IChrZXlTdGF0dXMgPT0gQVZLZXlWYWx1ZVN0YXR1c0ZhaWxlZCkKICAgICAgICAgICAgIHJldHVy
biBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNGYWlsZWQ7IC8vIEF0IGxlYXN0IG9uZSBrZXkgY291
bGQgbm90IGJlIGxvYWRlZC4KIApAQCAtMTg1MCw3ICsxODUwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpCiAjZW5k
aWYKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOyAgICAKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOwogICAgIE5TU3RyaW5nKiBncmF2aXR5ID0gc2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbygpID8gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCA6IEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemU7CiAgICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6Z3Jh
dml0eV07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKQEAgLTIwODIsNyArMjA4Miw3IEBA
IHZvaWQgZGV0ZXJtaW5lQ2hhbmdlZFRyYWNrc0Zyb21OZXdUcmFja3NBbmRPbGRJdGVtcyhNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQyoKIAogICAgIHJlcGxhY2VtZW50SXRlbXMuYXBwZW5kVmVj
dG9yKGFkZGVkSXRlbXMpOwogICAgIG9sZEl0ZW1zLnN3YXAocmVwbGFjZW1lbnRJdGVtcyk7Ci0g
ICAgCisKICAgICBmb3IgKGF1dG8mIHJlbW92ZWRJdGVtIDogcmVtb3ZlZEl0ZW1zKQogICAgICAg
ICAocGxheWVyLT4qcmVtb3ZlZEZ1bmN0aW9uKSgqcmVtb3ZlZEl0ZW0pOwogCkBAIC0yMzI0LDcg
KzIzMjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiB9CiAKLWJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91
dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVu
dW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgZmxpcFkpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogCkBAIC0yNTM3LDcgKzI1MzcsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NNZWRpYVNl
bGVjdGlvbk9wdGlvbnMoKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRy
YWNrcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKICAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRy
YWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6TGVnYWN5Q2xvc2VkQ2FwdGlvbikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICBSZXRhaW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlv
bj4gY3VycmVudE9wdGlvbjsKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogICAgICAgICAgICAg
aWYgKHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS0+dGV4dFRyYWNrQ2F0ZWdvcnkoKSA9PSBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpPdXRPZkJhbmQpIHsKQEAgLTI1NDksNyArMjU0OSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpCiAgICAgICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDKj4ocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBjdXJyZW50T3B0aW9uID0gdHJhY2stPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKFtjdXJyZW50T3B0aW9uLmdl
dCgpIGlzRXF1YWw6b3B0aW9uXSkgewogICAgICAgICAgICAgICAgIHJlbW92ZWRUZXh0VHJhY2tz
LnJlbW92ZShpIC0gMSk7CiAgICAgICAgICAgICAgICAgbmV3VHJhY2sgPSBmYWxzZTsKQEAgLTI1
OTksNyArMjU5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Zmx1c2hDdWVzKCkKIAogICAgIGlmICghbV9jdXJyZW50VGV4dFRyYWNrKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICBtX2N1cnJlbnRUZXh0VHJhY2stPnJlc2V0Q3VlVmFsdWVzKCk7CiB9
CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0VHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlCiAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZTo6VGFyZ2V0VHlwZUFp
clBsYXk7CiAjZW5kaWYKIH0KLSAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllciAq
cGxheWVyKQogewpAQCAtMzAwOCw3ICszMDA4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9idWZmZXJpbmdQb2xpY3kgPSBwb2xpY3k7Ci0gICAg
CisKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAppbmRleCA3MmZhMGZkYjJiODg4ZGNhMTJhNjhlYmZhOGIzNGRjM2MxZDM3ODE5
Li4xMmZiMjAzN2M0NzUzZWIwNTMwZWNiNjNmMzRjNTQ4ODEwNjkzNTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVp
cmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzeW5jVGV4dFRyYWNrQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgCisKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lP
TikKICAgICBib29sIGhhc1N0cmVhbVNlc3Npb24oKSB7IHJldHVybiBtX3N0cmVhbVNlc3Npb247
IH0KQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdEltYWdl
KCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIGJvb2wgY29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHJlbmRlcmluZyBzeXN0
ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0IG9mIGFjY2VsZXJhdGVkIHJlbmRlcmluZyBtb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGU3YjQ1NThhOTgzMWZjZTEwYjk5MWI1NmFm
ZjRhZjgyNDZmZDlhM2MuLjAyODQ3Yzc2MGFjMzI2MmE2NDhkMGE0NzBlNTEwNDhjMTFiMTc1ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMzLDggKzMzLDggQEAKICNpbXBvcnQg
IkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKICNpbXBvcnQgIkNETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDVi5oIgot
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudC5oIgpAQCAtODEsNyArODEsNyBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpTZWVr
U3RhdAogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwg
V1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQotICAgIAorCiAjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQwogCkBAIC0y
MDAsNyArMjAwLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
PihwbGF5ZXIpOwogICAgIH0KIAogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbApAQCAt
NjMxLDcgKzYzMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdM
T2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIC8vIFdlIGhhdmUg
YmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQgYXMg
YSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2ZW4g
aWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVkCkBA
IC0xMjMwLDEyICsxMjMwLDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uCiB7CiAgICAgcmV0
dXJuIG1fdmlkZW9MYXllck1hbmFnZXItPnZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiB9Ci0gICAg
CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzeW5jVGV4dFRy
YWNrQm91bmRzKCkKIHsKICAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zeW5jVGV4dFRyYWNrQm91
bmRzKCk7CiB9Ci0gICAgCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiog
cmVwcmVzZW50YXRpb24pCiB7CiAgICAgYXV0byogcmVwcmVzZW50YXRpb25MYXllciA9IHJlcHJl
c2VudGF0aW9uID8gcmVwcmVzZW50YXRpb24tPnBsYXRmb3JtTGF5ZXIoKSA6IG5pbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpp
bmRleCA5MWIxNDFhNTAzYmIyN2JkNDI3YWYzZjcyYTRkMjEzYWJiMzhmZGMzLi4xNjdkMGU5NGY0
MzE5OTg4YTUzNzhlNGYzMGE1ZjU3ZDQ5NmU5NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIK
LSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTC5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlUG9v
bC5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMg
TlNEaWN0aW9uYXJ5ICpvcHRpb25zRm9yQmlwbGFuYXJTdXJmYWNlKEludFNpemUgc2l6ZSwgdW5z
aWduZWQgcGl4ZWxGb3JtYQogCiAgICAgc2l6ZV90IHNlY29uZFBsYW5lQnl0ZXNQZXJSb3cgPSBJ
T1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VCeXRlc1BlclJvdywgd2lkdGggKiBzZWNv
bmRQbGFuZUJ5dGVzUGVyUGl4ZWwpOwogICAgIHNpemVfdCBzZWNvbmRQbGFuZVRvdGFsQnl0ZXMg
PSBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIGhlaWdodCAqIHNl
Y29uZFBsYW5lQnl0ZXNQZXJSb3cpOwotICAgIAorCiAgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBm
aXJzdFBsYW5lVG90YWxCeXRlcyArIHNlY29uZFBsYW5lVG90YWxCeXRlczsKICAgICBBU1NFUlQo
dG90YWxCeXRlcyk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNl
OjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIAog
ICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gODsKICAgICBzaXplX3QgYml0c1BlclBpeGVs
ID0gMzI7Ci0gICAgCisKICAgICBzd2l0Y2ggKGZvcm1hdCgpKSB7CiAgICAgY2FzZSBGb3JtYXQ6
OlJHQkE6CiAgICAgICAgIGJyZWFrOwpAQCAtMjk1LDcgKzI5NSw3IEBAIENHQ29udGV4dFJlZiBJ
T1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dChjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIAorCiAgICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENy
ZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6
ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2Uu
Z2V0KCksIGJpdG1hcEluZm8pKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgSU9T
dXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBpblN1
cmZhY2UsIEZvcm1hdCBmCiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uQ2FsbGJhY2sgPSBbXSh2
b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAqIGNvbXBsZXRpb25SZWZDb24y
KSB7CiAgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKICAg
ICAgICAgYXV0byBkZXN0aW5hdGlvblN1cmZhY2UgPSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PihzdGF0aWNfY2FzdDxJT1N1cmZhY2UqPihjb21wbGV0aW9uUmVmQ29uMikpOwotICAgICAgICAK
KwogICAgICAgICAoKmNhbGxiYWNrKShXVEZNb3ZlKGRlc3RpbmF0aW9uU3VyZmFjZSkpOwogICAg
ICAgICBkZWxldGUgY2FsbGJhY2s7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggM2E3YTA3MjYwN2Jh
YjVmNjA5ODcyNzFhYThlNjNhNmJlZTE0Y2QzYi4uNDRmZjkyZWExNGZlZWY1MzM5ZTUyNjI5ODM0
MjczYmIzMDY2YmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2lmIFVTRShF
R0wpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtRGlzcGxheS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5ZDhiYjliMjJlMTEwZDJiNzNmNWU2NzkyMTgu
LmRjMTc4YzEwODhhZmZmZjFiNmFjMjRjNzdmOTZhZmMzNGEzNDNkYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zMTgyLDcgKzMxODIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
LWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xP
YmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xl
bnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZKQogewogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDE4ZTZkNjg4NjY3ZDdjMzJj
MTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjJkODQyZDhlMjgzZDI3NWIzN2RkYjQ2NzJiODNmNWJi
NWE0ZTA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKQEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwVGV4
dHVyZUdMOwogY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNz
IEludFNpemU7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlZWsoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSYXRlKGZsb2F0KSBvdmVycmlkZTsKICAg
ICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCkgZmluYWw7IAorICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSBmaW5hbDsKICAgICBGbG9h
dFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFZvbHVtZShmbG9h
dCkgZmluYWw7CkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0Uo
R1NUUkVBTUVSX0dMKQotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdD
R0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRl
OworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwogICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCA1YmU1YTlkNjczYjZkYTA5ZGYy
M2Q4YjUyNGZkODIzY2I2Yzg5M2RkLi5mMTViN2YyOTVhOTUxYjJkODk0ZWMwZmE5MTk1NGU5NmY0
N2E0YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTk3LDYg
Kzk3LDg4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJj
ZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxlCiAjZW5kaWYKIAogCisjaWYgIVVTRShB
TkdMRSkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxlRm9ybWF0QW5kVHlw
ZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSYgZm9y
bWF0LCBHQ0dMZW51bSYgdHlwZSkKK3sKKyNkZWZpbmUgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZU1hY3JvKSBjYXNlIGludGVy
bmFsRm9ybWF0TWFjcm86IFwKKyAgICAgICAgZm9ybWF0ID0gZm9ybWF0TWFjcm87IFwKKyAgICAg
ICAgdHlwZSA9IHR5cGVNYWNybzsgXAorICAgICAgICBicmVhazsKKworICAgIHN3aXRjaCAoaW50
ZXJuYWxGb3JtYXQpIHsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IsIFJH
QiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QSwgUkdCQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoTFVNSU5BTkNFX0FMUEhBLCBMVU1JTkFOQ0VfQUxQSEEsIFVOU0lHTkVEX0JZVEUpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKExVTUlOQU5DRSwgTFVNSU5BTkNFLCBVTlNJ
R05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShBTFBIQSwgQUxQ
SEEsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4
LCBSRUQsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFI4X1NOT1JNLCBSRUQsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFIxNkYsIFJFRCwgSEFMRl9GTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUjMyRiwgUkVELCBGTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjhVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFI4SSwgUkVEX0lOVEVHRVIsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFIxNlVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIxNkksIFJFRF9JTlRFR0VSLCBTSE9SVCk7
CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMyVUksIFJFRF9JTlRFR0VSLCBV
TlNJR05FRF9JTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMkksIFJF
RF9JTlRFR0VSLCBJTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOCwg
UkcsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
OF9TTk9STSwgUkcsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
MTZGLCBSRywgSEFMRl9GTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkczMkYsIFJHLCBGTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4
VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHOEksIFJHX0lOVEVHRVIsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHMTZVSSwgUkdfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMTZJLCBSR19JTlRFR0VSLCBTSE9SVCk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMlVJLCBSR19JTlRFR0VSLCBVTlNJ
R05FRF9JTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJJLCBSR19J
TlRFR0VSLCBJTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjgsIFJH
QiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoU1JH
QjgsIFJHQiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCNTY1LCBSR0IsIFVOU0lHTkVEX1NIT1JUXzVfNl81KTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0I4X1NOT1JNLCBSR0IsIEJZVEUpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFIxMUZfRzExRl9CMTBGLCBSR0IsIFVOU0lHTkVEX0lOVF8xMEZf
MTFGXzExRl9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjlfRTUs
IFJHQiwgVU5TSUdORURfSU5UXzVfOV85XzlfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0IxNkYsIFJHQiwgSEFMRl9GTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkdCMzJGLCBSR0IsIEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0I4VUksIFJHQl9JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4SSwgUkdCX0lOVEVHRVIsIEJZVEUpOwor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2VUksIFJHQl9JTlRFR0VSLCBV
TlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZJ
LCBSR0JfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQjMyVUksIFJHQl9JTlRFR0VSLCBVTlNJR05FRF9JTlQpOworICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQjMySSwgUkdCX0lOVEVHRVIsIElOVCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTgsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNSR0I4X0FMUEhBOCwgUkdCQSwgVU5TSUdORURf
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThfU05PUk0sIFJH
QkEsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjVfQTEsIFJH
QkEsIFVOU0lHTkVEX1NIT1JUXzVfNV81XzEpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQkE0LCBSR0JBLCBVTlNJR05FRF9TSE9SVF80XzRfNF80KTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxMF9BMiwgUkdCQSwgVU5TSUdORURfSU5UXzJfMTBf
MTBfMTBfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZGLCBS
R0JBLCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JB
MzJGLCBSR0JBLCBGTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QThVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0JBOEksIFJHQkFfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBfQTJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9J
TlRfMl8xMF8xMF8xMF9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QkExNlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0JBMTZJLCBSR0JBX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMzJJLCBSR0JBX0lOVEVHRVIsIElOVCk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMyVUksIFJHQkFfSU5URUdFUiwg
VU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9D
T01QT05FTlQxNiwgREVQVEhfQ09NUE9ORU5ULCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5ULCBERVBUSF9DT01QT05FTlQs
IFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBU
SF9DT01QT05FTlQyNCwgREVQVEhfQ09NUE9ORU5ULCBVTlNJR05FRF9JTlQpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDMyRiwgREVQVEhfQ09NUE9O
RU5ULCBGTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfU1RF
TkNJTCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURfSU5UXzI0XzgpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMjRfU1RFTkNJTDgsIERFUFRIX1NURU5DSUwsIFVOU0lH
TkVEX0lOVF8yNF84KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSDMy
Rl9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVW
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0Jf
RVhULCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhULCBFeHRl
bnNpb25zR0w6OlNSR0JfQUxQSEFfRVhULCBVTlNJR05FRF9CWVRFKTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI3VuZGVmIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmIC8vICFVU0UoQU5HTEUpCisKKwog
I2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENv
bnRleHRWaXNpYmlsaXR5KGJvb2wpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CmluZGV4IDI0NDI4OWQ1YmVkMjBiOTBjMGU2NmMzYzM3NTQzNTEyZjI0OTA5YWIuLmYxZjQyMzUx
ZmExMDVlMTI2ZTJkYWNjZDZjYzM5ZDkxZjllZjkzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCkBAIC0xMjksNyArMTI5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVTaGFkZXJEaXJlY3QoUGxhdGZvcm1HTE9iamVjdCk7CiAKICNpZiAhVVNFKEFOR0xFKQotICAg
IGJvb2wgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnQgYWxpZ25tZW50ID0gNCkgZmluYWw7CisgICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQg
d2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCisgICAgLy8g
UmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCisgICAgLy8gQnkgZGVm
YXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgorICAgIGJv
b2wgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnQgYWxpZ25tZW50ID0gNCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgp
IGNvbnN0IGZpbmFsOwpAQCAtMTYzLDggKzE2NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xv
ck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1
ZSwgR0NHTGJvb2xlYW4gYWxwaGEpIGZpbmFsOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
ZmluYWw7CisjaWYgIVVTRShBTkdMRSkKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworI2Vu
ZGlmCiAgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikgZmluYWw7CiAgICAg
dm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIGN1bGxGYWNl
KEdDR0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjkzLDcgKzI5OCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkgZmluYWw7CiAKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KTsKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBmaW5hbDsK
IAogICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIGZpbmFsOwogICAgIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIGZp
bmFsOwpAQCAtMzA3LDExICszMTIsMTMgQEAgcHVibGljOgogCiAgICAgLy8gPT09PT09PT09PSBX
ZWJHTDIgZW50cnkgcG9pbnRzLgogCi0gICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKLQorI2lmICFVU0UoQU5H
TEUpCisgICAgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0
YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsK
KyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5
dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgbGVuZ3RoKTsKKyAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKKyNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRw
dHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUp
IGZpbmFsOwotICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpIGZpbmFsOworCiAgICAgdm9pZCogbWFwQnVmZmVyUmFuZ2Uo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwg
R0NHTGJpdGZpZWxkIGFjY2VzcykgZmluYWw7CiAgICAgR0NHTGJvb2xlYW4gdW5tYXBCdWZmZXIo
R0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKIApAQCAtNDA3LDE1ICs0MTQsMTYgQEAgcHVibGljOgog
CiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8vIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CiAgICAgU3RyaW5nIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIGZpbmFsOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgZmluYWw7Ci0gICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSBmaW5hbDsKKyNpZiAhVVNFKEFOR0xFKQorICAg
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSk7CiAKLSAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29u
c3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkgZmluYWw7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOworI2VuZGlmCiAKICAgICB2b2lkIHVuaWZv
cm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwpAQCAtNDMxLDE2ICs0MzksMTggQEAgcHVi
bGljOgogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogCi0g
ICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkg
ZmluYWw7CisjaWYgIVVTRShBTkdMRSkKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCByZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0KTsKKyNlbmRpZgogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAK
ICAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMs
IGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3Jh
cGhpY3NDb250ZXh0Jik7CiAKLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwotICAgIHZv
aWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwotICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29u
c3Q7CisgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtM
YXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKKyAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwogICAgIHZvaWQgcmVjeWNsZUNv
bnRleHQoKTsKIApAQCAtNDQ4LDE5ICs0NTgsMTkgQEAgcHVibGljOgogICAgIC8vIHJlc2V0IG1l
dGhvZCBpcyBwcmVzZW50IHRvIGtlZXAgY2FsbGluZyBjb2RlIHNpbXBsZXIsIHNvIGl0CiAgICAg
Ly8gZG9lc24ndCBoYXZlIHRvIGtub3cgd2hpY2ggYnVmZmVycyB3ZXJlIGFsbG9jYXRlZC4KICAg
ICB2b2lkIHJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7Ci0gICAgdm9pZCBzZXRCdWZmZXJzVG9B
dXRvQ2xlYXIoR0NHTGJpdGZpZWxkKTsKLSAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0
b0NsZWFyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZp
ZWxkKSBmaW5hbDsKKyAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBmaW5hbDsK
IAogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwotICAgIHZv
aWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOworICAgIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hh
bmdlZCgpIGZpbmFsOwogCi0gICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJ
bWFnZUJ1ZmZlciopOwotICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCk7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKTsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKikgZmluYWw7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEoKSBmaW5hbDsKKyAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5B
QkxFKFdFQkdMMikKLSAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCkgZmlu
YWw7CisgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgUExBVEZPUk0oTUFDKQpAQCAtNDg3LDEwICs0OTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OwogCiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7Ci0K
LSAgICAvLyBSZWFkIHJlYWwgT3BlbkdMIGVycm9ycywgYW5kIG1vdmUgdGhlbSB0byB0aGUgc3lu
dGhldGljCi0gICAgLy8gZXJyb3IgbGlzdC4gUmV0dXJuIHRydWUgaWYgYXQgbGVhc3Qgb25lIGVy
cm9yIGlzIG1vdmVkLgotICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7
CisgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKIAogICAg
IC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRo
b3VnaCBub3QKICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkg
YmUgc3VwcG9ydGVkIG9uIHRoZQpAQCAtNTEzLDYgKzUyMCwxMCBAQCBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsOwogI2VuZGlmCiAKKyNpZiAhVVNFKEFOR0xF
KQorICAgIHN0YXRpYyBib29sIHBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0
KEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSYgZm9ybWF0LCBHQ0dMZW51bSYgdHlw
ZSk7CisjZW5kaWYgLy8gIVVTRShBTkdMRSkKKwogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBEZXN0
aW5hdGlvbiA9IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBzaGFyZWRDb250ZXh0ID0gbnVsbHB0cik7CiAKQEAgLTUyNiw3ICs1MzcsNyBAQCBwcml2YXRl
OgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlk
YXRlQXR0cmlidXRlcygpOwotICAgIAorCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3
aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAg
dm9pZCBjaGVja0dQVVN0YXR1cygpOwogCkBAIC01NzgsNyArNTg5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICwgaXNWYWxpZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIFNoYWRlclN5bWJvbE1hcCYgc3ltYm9sTWFwKGVudW0gQU5HTEVTaGFkZXJT
eW1ib2xUeXBlIHN5bWJvbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzeW1i
b2xUeXBlID09IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUgfHwgc3ltYm9sVHlwZSA9PSBT
SEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSB8fCBzeW1ib2xUeXBlID09IFNIQURFUl9TWU1CT0xf
VFlQRV9WQVJZSU5HKTsKQEAgLTY3MSw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHVz
aW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAgICAgICBzdGQ6
OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dM
ZW51bT4sIAorICAgICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAgICAg
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAogICAgICAgICAg
ICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+
CiAgICAgICAgID47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9u
LmNwcAppbmRleCA5ODRmNjJkMGI1NGRkOGE4YWVhMzk3YjA4MTc3ZWI4YjQ2YzlmZjcxLi5iMjgx
MjhiYjA1NDczZjI3NTExZGFiYmUzOWU4Y2U0MjEyNTMyMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkK
IAogICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkU2Npc3NvcihHTF9TQ0lTU09SX1RF
U1QsIEdMX0ZBTFNFKTsKICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZERpdGhlcihH
TF9ESVRIRVIsIEdMX0ZBTFNFKTsKLSAgICAKKwogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBy
ZXNoYXBlRkJPcyhJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKIAogICAgIC8vIEluaXRpYWxpemUg
cmVuZGVyYnVmZmVycyB0byAwLgpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9y
KQogICAgICAgICByZXR1cm47CiAKICAgICA6OmdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
OwotfSAgICAgICAKK30KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxlbmRGdW5j
U2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0Fs
cGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkKIHsKQEAgLTY0MywxMSArNjQzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpCiAgICAgTE9HKFdlYkdMLCAiLS0tIGJlZ2luIHRyYW5zbGF0ZWQgc2hhZGVyIHNvdXJjZSAt
LS1cbiVzXG4tLS0gZW5kIHRyYW5zbGF0ZWQgc2hhZGVyIHNvdXJjZSAtLS0iLCB0cmFuc2xhdGVk
U2hhZGVyUHRyKTsKIAogICAgIDo6Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmdHJhbnNsYXRl
ZFNoYWRlclB0ciwgJnRyYW5zbGF0ZWRTaGFkZXJMZW5ndGgpOwotICAgIAorCiAgICAgOjpnbENv
bXBpbGVTaGFkZXIoc2hhZGVyKTsKLSAgICAKKwogICAgIGludCBjb21waWxlU3RhdHVzOwotICAg
IAorCiAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgQ09NUElMRV9TVEFUVVMsICZjb21waWxl
U3RhdHVzKTsKIAogICAgIFNoYWRlclNvdXJjZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV9zaGFk
ZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwpAQCAtODk0LDkgKzg5NCw5IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMCiAgICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4
QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5kYXRhKCkpOwog
ICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAg
U3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJf
U1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsK
LSAgICAKKwogI2lmbmRlZiBOREVCVUcKICAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5kYXRh
KCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQgaXMgbWFwcGluZyBh
Y3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVu
aWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCkuZGF0YSgpKTsKQEAg
LTkxNiw3ICs5MTYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVB
dHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludAogICAgICAgICBnZXROb25C
dWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElW
RV9BVFRSSUJVVEVTLCAmc3ltYm9sQ291bnQpOwogICAgICAgICByZXN1bHQgPSBtX3NoYWRlclBy
b2dyYW1TeW1ib2xDb3VudE1hcC5maW5kKHByb2dyYW0pOwogICAgIH0KLSAgICAKKwogICAgIEFj
dGl2ZVNoYWRlclN5bWJvbENvdW50cyYgc3ltYm9sQ291bnRzID0gcmVzdWx0LT52YWx1ZTsKICAg
ICBHQ0dMdWludCByYXdJbmRleCA9IChpbmRleCA8IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0
dWFsQXR0cmlidXRlSW5kZXhNYXAuc2l6ZSgpKSA/IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0
dWFsQXR0cmlidXRlSW5kZXhNYXBbaW5kZXhdIDogLTE7CiAKQEAgLTk0MywxNCArOTQzLDE0IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHCiAgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1l
LmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCisKICAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dy
YW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJpbmcobmFtZS5kYXRhKCksIG5hbWVM
ZW5ndGgpKTsKLSAgICAKKwogI2lmbmRlZiBOREVCVUcKICAgICBTdHJpbmcgdW5pZm9ybU5hbWUo
bmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQgaXMg
bWFwcGluZyBhY3RpdmUgdW5pZm9ybSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGlu
ZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEo
KSk7CiAjZW5kaWYKLSAgICAKKwogICAgIGluZm8ubmFtZSA9IG9yaWdpbmFsTmFtZTsKICAgICBp
bmZvLnR5cGUgPSB0eXBlOwogICAgIGluZm8uc2l6ZSA9IHNpemU7CkBAIC05NjUsMTAgKzk2NSwx
MCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbgogICAgICAgICBnZXROb25CdWlsdEluQWN0aXZl
U3ltYm9sQ291bnQocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywg
JnN5bWJvbENvdW50KTsKICAgICAgICAgcmVzdWx0ID0gbV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291
bnRNYXAuZmluZChwcm9ncmFtKTsKICAgICB9Ci0gICAgCisKICAgICBBY3RpdmVTaGFkZXJTeW1i
b2xDb3VudHMmIHN5bWJvbENvdW50cyA9IHJlc3VsdC0+dmFsdWU7CiAgICAgR0NHTHVpbnQgcmF3
SW5kZXggPSAoaW5kZXggPCBzeW1ib2xDb3VudHMuZmlsdGVyZWRUb0FjdHVhbFVuaWZvcm1JbmRl
eE1hcC5zaXplKCkpID8gc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxVbmlmb3JtSW5kZXhN
YXBbaW5kZXhdIDogLTE7Ci0gICAgCisKICAgICByZXR1cm4gZ2V0QWN0aXZlVW5pZm9ybUltcGwo
cHJvZ3JhbSwgcmF3SW5kZXgsIGluZm8pOwogfQogCkBAIC0xMDY5LDcgKzEwNjksNyBAQCBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdpbmFsU3ltYm9sTmFtZShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEFORwogICAgIEdDR0xzaXplaSBjb3VudDsKICAgICBQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlcnNbMl07CiAgICAgZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZj
b3VudCwgc2hhZGVycyk7Ci0gICAgCisKICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKICAgICAgICAgYXV0byBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbElu
U2hhZGVyU291cmNlTWFwKHNoYWRlcnNbaV0sIHN5bWJvbFR5cGUsIG5hbWUpOwogICAgICAgICBp
ZiAob3JpZ2luYWxOYW1lKQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1sy
XSwgc2kKICAgICAgICAgICAgIFNoYWRlclNvdXJjZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV9z
aGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXJzW2ldKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgY29uc3QgU2hhZGVyU3ltYm9sTWFwJiBzeW1ib2xN
YXAgPSByZXN1bHQtPnZhbHVlLnN5bWJvbE1hcChzdGF0aWNfY2FzdDxlbnVtIEFOR0xFU2hhZGVy
U3ltYm9sVHlwZT4oc3ltYm9sVHlwZSkpOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
eW1ib2xFbnRyeSA6IHN5bWJvbE1hcCkgewogICAgICAgICAgICAgICAgIGlmIChuYW1lID09IHN5
bWJvbEVudHJ5LnZhbHVlLm1hcHBlZE5hbWUuY19zdHIoKSkKQEAgLTE2ODIsNyArMTY4Miw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3Jt
R0xPYmplY3QgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNjk1LDcgKzE2OTUsNyBAQCBHQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogewogICAgIGlmICghYXJyYXkp
CiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKLSAgICAKKwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIApAQCAtMTgyNCw3ICsxODI0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJv
bENvdW50KFBsYXRmb3JtR0xPYmplY3QgcHIKIAogICAgICAgICBzeW1ib2xDb3VudHMuZmlsdGVy
ZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLmFwcGVuZChpKTsKICAgICB9Ci0gICAgCisKICAg
ICAvLyBEbyB0aGUgc2FtZSBmb3IgdW5pZm9ybXMuCiAgICAgR0NHTGludCB1bmlmb3JtQ291bnQg
PSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgQUNUSVZFX1VOSUZPUk1TLCAmdW5p
Zm9ybUNvdW50KTsKQEAgLTE4MzMsMTAgKzE4MzMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KFBsYXRmb3JtR0xPYmplY3Qg
cHIKICAgICAgICAgZ2V0QWN0aXZlVW5pZm9ybUltcGwocHJvZ3JhbSwgaSwgaW5mbyk7CiAgICAg
ICAgIGlmIChpbmZvLm5hbWUuc3RhcnRzV2l0aCgiZ2xfIikpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCisKICAgICAgICAgc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxVbmlm
b3JtSW5kZXhNYXAuYXBwZW5kKGkpOwogICAgIH0KLSAgICAKKwogICAgICp2YWx1ZSA9IHN5bWJv
bENvdW50cy5jb3VudEZvclR5cGUocG5hbWUpOwogfQogCkBAIC0xODQ3LDcgKzE4NDcsNyBAQCBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCBzaGFkZXJzWzJdLAogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24g
cmVnRXhwKCJ3ZWJnbF9bMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIik7CiAKICAgICBTdHJpbmdC
dWlsZGVyIHByb2Nlc3NlZExvZzsKLSAgICAKKwogICAgIC8vIEFOR0xFIGluc2VydHMgYSAiI2V4
dGVuc2lvbiIgbGluZSBpbnRvIHRoZSBzaGFkZXIgc291cmNlIHRoYXQKICAgICAvLyBjYXVzZXMg
YSB3YXJuaW5nIGluIHNvbWUgY29tcGlsZXJzLiBUaGVyZSBpcyBubyBwb2ludCBzaG93aW5nCiAg
ICAgLy8gdGhpcyB3YXJuaW5nIHRvIHRoZSB1c2VyIHNpbmNlIHRoZXkgZGlkbid0IHdyaXRlIHRo
ZSBjb2RlIHRoYXQKQEAgLTE4ODYsNyArMTg4Niw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtKQogICAg
IEdMaW50IGxlbmd0aCA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9JTkZP
X0xPR19MRU5HVEgsICZsZW5ndGgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7IAorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVpIHNpemUg
PSAwOwogICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5MTYsNyArMTkxNiw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyLCBHQ0dMZW51bSBwbmFtCiAKIAogICAgIGNvbnN0IGF1dG8mIHJlc3VsdCA9
IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKLSAgICAKKwogICAgIHN3aXRjaCAocG5h
bWUpIHsKICAgICBjYXNlIERFTEVURV9TVEFUVVM6CiAgICAgY2FzZSBTSEFERVJfVFlQRToKQEAg
LTE5NTMsNyArMTk1Myw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIAogICAgIGNvbnN0IGF1dG8mIHJl
c3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09
IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBTaGFkZXJTb3VyY2VFbnRyeSYgZW50
cnkgPSByZXN1bHQtPnZhbHVlOwogICAgIGlmICghZW50cnkuaXNWYWxpZCkKQEAgLTE5NjIsNyAr
MTk2Miw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xv
ZyhQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgVmVjdG9yPEdMY2hhcj4gaW5m
byhsZW5ndGgpOwpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAKICAgICBj
b25zdCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAgICAg
aWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIHJlc3VsdC0+
dmFsdWUuc291cmNlOwogfQpAQCAtMjk0MywxNCArMjk0Myw2IEBAIEdDR0x1aW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJhbXMpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxv
Y2tJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0ocGFy
YW1zKTsKLX0KLQogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwpAQCAtMjk3NSwxMCArMjk2
Nyw2IEBAIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJ
bmRleChQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTGludCopCi17Ci19Ci0KIFN0cmluZyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMdWludCkKIHsKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBjYTAyNTJhNDZlMmMwNzFmZmQ1MzRiODMzZGJi
NDU1NTg2N2VkNTgzLi5mOTQ1Y2NkYzhhMTU4MDM3MTY1MWZkZjMxODIyZGU0Njc1MzE1MWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTgwNSw3ICs4MDUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwg
R0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGlu
dCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CmluZGV4IDVmODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjEzYmJkZjFi
ZDQ4MWYxNWEzMDQ1N2RkYjVlZGZjOGIzZTJhNjRhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9u
Y2UKQEAgLTI2Miw3ICsyNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAg
ICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwotICAgIGJvb2wgY29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0s
IGJvb2wsIGJvb2wpIGZpbmFsOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412643</attachid>
            <date>2020-10-29 07:18:35 -0700</date>
            <delta_ts>2020-11-13 01:59:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201029161833.patch</filename>
            <type>text/plain</type>
            <size>219950</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRkNjZmZDI3MjZmYmQ3
MGU0YjhmNDU4Y2I5ZGJmYjRiMmNkZTkwZS4uZDVmYWIzY2QzOGRhMTdjZDVmMzMxYTI1OWM2OTk1
ZWYyNjBkMDQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMC0yOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTAtMjggIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFj
Zjg4YjQwNWQxMTgxNjA5Yjc2MWNmNDU2YTIzYWUzNDY0NmUzZjEuLjMzNGM0M2EwMGJlZWI1NGI5
NjJkMmMxOTE0NTA2NjY5OGMwMTRhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTAtMjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTEwLTI4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBD
TTogQWNjZXB0IGFkIGNsaWNrIGRhdGEgd2hlbiB0aGUgbGluayBvcGVucyBhIG5ldyB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDBlNzgxMDAzOTE3
ZTZmZDJhMjI2ODAzNzY1NjcxNDg3ODk5NTdkODUuLjgxMzMxY2U2ZjVkOTE3M2NkMTViYmY2Y2Rl
ZWFiY2VmZTZmODg2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCkBAIC05MSw3ICs5MSw3IEBAIFJlZjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJl
dHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IAorICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKQEAgLTE1NCw3ICsxNTQs
NyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh0cnVlKTsKICNlbmRpZgogICAgIGVsc2Ugewot
ICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7ICAg
IAorICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgICAgICBpZiAobmFtZSA9PSB3ZWJraXRhaXJwbGF5QXR0cikgewpAQCAtMTcx
LDcgKzE3MSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuCiB7CiAgICAgaWYgKCFwbGF5ZXIo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgaWYgKHZpZGVvRnVsbHNjcmVl
bk1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSkgewogICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJ
blBpY3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MCw3ICsxODAsNyBA
QCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbgogICAgIH0KIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpIAorICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
CkBAIC0zMDMsMTIgKzMwMywxMiBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIFJlZlB0
cjxNZWRpYVBsYXllcj4gcGxheWVyID0gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyKCk7CiAgICAg
aWYgKCFwbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHBsYXllci0+c2V0Vmlz
aWJsZUZvckNhbnZhcyh0cnVlKTsgLy8gTWFrZSBwbGF5ZXIgdmlzaWJsZSBvciBpdCB3b24ndCBk
cmF3LgogICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIGRlc3RSZWN0KTsK
IH0KIAotYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKIHsKICAgICBpZiAoIXBsYXllcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1Zp
ZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIApAQCAtMzM3
LDcgKzMzNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVu
dGVyRnVsbHNjcmVlbigpCiAgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgLy8gR2VuZXJhdGUgYW4gZXhjZXB0aW9uIGlmIHRoaXMgaXNuJ3QgY2FsbGVk
IGluIHJlc3BvbnNlIHRvIGEgdXNlciBnZXN0dXJlLCBvciBpZiB0aGUgCisgICAgLy8gR2VuZXJh
dGUgYW4gZXhjZXB0aW9uIGlmIHRoaXMgaXNuJ3QgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgdXNl
ciBnZXN0dXJlLCBvciBpZiB0aGUKICAgICAvLyBlbGVtZW50IGRvZXMgbm90IHN1cHBvcnQgZnVs
bHNjcmVlbi4KICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8
fCAhc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGE2NjM4
ODFhZmQyNmJkZmUwZTBkMGQ3ZjE5ZjBhNjdiMzVmMzhlOWYuLjI3ZTNkZDJkM2NiYjEwODQxMjJh
ODdhMGMzMmU0NzRkOGI1MDZiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25j
ZQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRv
IEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJsZS4KICAgICAvLyBTZWUgbW9yZSBkZXRh
aWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBk
ZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgu
Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKKyAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCiAgICAgYm9vbCBzaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3Rl
ciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDZlMGNmZjY4M2Y4N2YyODM2YzIwZDRiZDEzMTFmNWRkZjhmMmIzNzUuLjM5MThjYTFk
NmE5MTMxN2NmYzhhZTM2MzMwOWZmZWMwNDk5ZTcyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzCiAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRl
eHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNz
Q29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdU
Rk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAgICAvLyBUaGlzIGlzIHZpcnR1YWwgYW5k
IGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3RydWN0b3IuCkBAIC0xMDUsNyArMTA1LDcgQEAg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNl
JiBjYW52YXMsIEdyYXBoaWNzQ29udGUKIHsKIH0KIAotV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcykKK1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQo
Q2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBzcmNCeXRlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0QnVmZmVyU3ViRGF0YSIsICJQYXJhbWV0ZXJzIHdvdWxkIHJlYWQg
b3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzb3VyY2UgYnVmZmVyIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvcHlMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTcwMyw3ICsxNzAzLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWJJNHVpdihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJ2ZXJ0
ZXhBdHRyaWJJNHVpdiIsICJubyBhcnJheSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgaW50IHNpemUgPSBsaXN0Lmxlbmd0aCgpOwogICAgIGlmIChzaXplIDwgNCkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgInZlcnRleEF0dHJpYkk0dWl2IiwgImFycmF5IHRvbyBzbWFsbCIpOwpAQCAtMjAwNyw3ICsy
MDA3LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAodW5pdCA+PSBtX2Jv
dW5kU2FtcGxlcnMuc2l6ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiYmluZFNhbXBsZXIiLCAiaW52YWxpZCB0ZXh0dXJl
IHVuaXQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjExMSw3ICsyMTExLDcgQEAgR0NHTGVudW0g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMoV2ViR0xTeW5jJiBzeW5jLCBH
Q0dMYml0ZmllbGQgZmwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiY2xpZW50V2FpdFN5bmMiLCAidGltZW91dCA+IE1BWF9D
TElFTlRfV0FJVF9USU1FT1VUX1dFQkdMIik7CiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6V0FJVF9GQUlMRURfV0VCR0w7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGZsYWdzICYm
IGZsYWdzICE9IEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCkgewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgImNsaWVudFdhaXRTeW5jIiwgImludmFsaWQgZmxhZ3MiKTsKICAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpXQUlUX0ZBSUxFRF9XRUJHTDsKQEAgLTIxNzIsOSArMjE3Miw5IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayogZmVlCiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICFmZWVkYmFja09iamVjdCB8fCBmZWVkYmFja09iamVjdC0+aXNEZWxldGVkKCkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrIiwgZmVlZGJhY2tP
YmplY3QpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQoZmVlZGJhY2tPYmpl
Y3QgIT0gbV9kZWZhdWx0VHJhbnNmb3JtRmVlZGJhY2spOwotICAgIAorCiAgICAgaWYgKGZlZWRi
YWNrT2JqZWN0LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
IiwgImF0dGVtcHQgdG8gZGVsZXRlIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVN
b2RlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIGlmICghVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZU1v
ZGUocHJpbWl0aXZlTW9kZSkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRU5VTSwgImJlZ2luVHJhbnNmb3JtRmVlZGJhY2siLCAiaW52YWxp
ZCB0cmFuc2Zvcm0gZmVlZGJhY2sgcHJpbWl0aXZlIG1vZGUiKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFu
c2Zvcm1GZWVkYmFjaygpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImVuZFRyYW5zZm9ybUZlZWRiYWNrIiwgInRyYW5zZm9y
bSBmZWVkYmFjayBpcyBub3QgYWN0aXZlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBtX2NvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKICAgICBtX2JvdW5k
VHJhbnNmb3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7CkBAIC0yMjkyLDcgKzIyOTIsNyBA
QCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
V2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjbwogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoInRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHN3aXRj
aCAoYnVmZmVyTW9kZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNFUEFSQVRFX0FU
VFJJQlM6CiAgICAgICAgIGlmICh2YXJ5aW5ncy5zaXplKCkgPiBtX21heFRyYW5zZm9ybUZlZWRi
YWNrU2VwYXJhdGVBdHRyaWJzKSB7CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBXZWJHTEFueSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mIHByb2dy
YW0sIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPEdDR0xpbnQ+
IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAorCiAgICAgc3dpdGNoIChw
bmFtZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRToKICAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYmVjZDI5M2IxZDZkMDZlYjU4MmE1
ZTBhNDEzMDBmMmNkYWU5MjVkZS4uYmQwMTljYTRmYmU0NDRiNjgwMjQxNjNhMmU5Yzc3MWJjOWNj
ZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0IGZpbmFsIDogcHVibGljIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViR0wyUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNy
ZWF0ZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMpOwogCiAgICAgfldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKTsKIApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgbG9uZyBsb25nIG9mZnNldCwgY29uc3QgQXJyYXlCdWZmZXJWaWV3JiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBjb3B5QnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludDY0
IHJlYWRPZmZzZXQsIEdDR0xpbnQ2NCB3cml0ZU9mZnNldCwgR0NHTGludDY0IHNpemUpOwogICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzcmNCeXRl
T2Zmc2V0LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCA9IDAsIEdDR0x1aW50IGxlbmd0aCA9IDApOwotICAgIAorCiAgICAgLy8gRnJhbWVidWZm
ZXIgb2JqZWN0cwogICAgIFdlYkdMQW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKSBm
aW5hbDsKICAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJh
bWVidWZmZXIqKSBmaW5hbDsKQEAgLTY3LDEwICs2NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cywgR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CiAgICAg
dm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYyk7Ci0gICAgCisKICAgICAvLyBSZW5kZXJidWZm
ZXIgb2JqZWN0cwogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpOwotICAgIAorCiAgICAgLy8gVGV4dHVy
ZSBvYmplY3RzCiAgICAgV2ViR0xBbnkgZ2V0VGV4UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpIGZpbmFsOwogICAgIHZvaWQgdGV4U3RvcmFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCk7CkBAIC0xODIsMTQgKzE4MiwxNCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIGluc3RhbmNlQ291bnQpOwogICAgIHZvaWQg
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludDY0IG9mZnNldCwgR0NHTHNpemVpIGluc3RhbmNlQ291bnQpOwog
ICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQs
IEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50NjQg
b2Zmc2V0KTsKLSAgICAKKwogICAgIC8vIE11bHRpcGxlIHJlbmRlciB0YXJnZXRzCiAgICAgdm9p
ZCBkcmF3QnVmZmVycyhjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKTsKICAgICB2b2lk
IGNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEludDMy
TGlzdCYmIHZhbHVlcywgR0NHTHVpbnQgc3JjT2Zmc2V0KTsKICAgICB2b2lkIGNsZWFyQnVmZmVy
dWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBVaW50MzJMaXN0JiYgdmFs
dWVzLCBHQ0dMdWludCBzcmNPZmZzZXQpOwogICAgIHZvaWQgY2xlYXJCdWZmZXJmdihHQ0dMZW51
bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgRmxvYXQzMkxpc3QmJiB2YWx1ZXMsIEdDR0x1
aW50IHNyY09mZnNldCk7CiAgICAgdm9pZCBjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCk7Ci0g
ICAgCisKICAgICAvLyBRdWVyeSBvYmplY3RzCiAgICAgUmVmUHRyPFdlYkdMUXVlcnk+IGNyZWF0
ZVF1ZXJ5KCk7CiAgICAgdm9pZCBkZWxldGVRdWVyeShXZWJHTFF1ZXJ5Kik7CkBAIC0xOTgsNyAr
MTk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KTsKICAg
ICBSZWZQdHI8V2ViR0xRdWVyeT4gZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSk7CiAgICAgV2ViR0xBbnkgZ2V0UXVlcnlQYXJhbWV0ZXIoV2ViR0xRdWVyeSYsIEdDR0xl
bnVtIHBuYW1lKTsKLSAgICAKKwogICAgIC8vIFNhbXBsZXIgb2JqZWN0cwogICAgIFJlZlB0cjxX
ZWJHTFNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoKTsKICAgICB2b2lkIGRlbGV0ZVNhbXBsZXIoV2Vi
R0xTYW1wbGVyKik7CkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmkoV2ViR0xTYW1wbGVyJiwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
OwogICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoV2ViR0xTYW1wbGVyJiwgR0NHTGVudW0gcG5h
bWUsIEdDR0xmbG9hdCBwYXJhbSk7CiAgICAgV2ViR0xBbnkgZ2V0U2FtcGxlclBhcmFtZXRlcihX
ZWJHTFNhbXBsZXImLCBHQ0dMZW51bSBwbmFtZSk7Ci0gICAgCisKICAgICAvLyBTeW5jIG9iamVj
dHMKICAgICBSZWZQdHI8V2ViR0xTeW5jPiBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBH
Q0dMYml0ZmllbGQgZmxhZ3MpOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhXZWJHTFN5bmMqKTsK
QEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgR0NHTGVudW0gY2xpZW50V2FpdFN5bmMo
V2ViR0xTeW5jJiwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpOwogICAg
IHZvaWQgd2FpdFN5bmMoV2ViR0xTeW5jJiwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQg
dGltZW91dCk7CiAgICAgV2ViR0xBbnkgZ2V0U3luY1BhcmFtZXRlcihXZWJHTFN5bmMmLCBHQ0dM
ZW51bSBwbmFtZSk7Ci0gICAgCisKICAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sKICAgICBSZWZQ
dHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKTsKICAg
ICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGlk
KTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdMQWN0aXZlSW5m
bz4gZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFdlYkdMUHJvZ3JhbSYsIEdDR0x1aW50IGlu
ZGV4KTsKICAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICB2b2lkIHJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgCisKICAgICAvLyBVbmlmb3JtIGJ1ZmZlciBvYmpl
Y3RzIGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVycwogICAgIHZvaWQgYmluZEJ1ZmZlckJh
c2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgV2ViR0xCdWZmZXIqKTsKICAgICB2
b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBXZWJH
TEJ1ZmZlciosIEdDR0xpbnQ2NCBvZmZzZXQsIEdDR0xpbnQ2NCBzaXplKTsKQEAgLTIzOCwxMyAr
MjM4LDEzIEBAIHB1YmxpYzoKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJh
bWV0ZXIoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lKTsKICAgICBXZWJHTEFueSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFdlYkdMUHJv
Z3JhbSYsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KTsKICAgICB2b2lkIHVuaWZvcm1CbG9j
a0JpbmRpbmcoV2ViR0xQcm9ncmFtJiwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpOwotICAgIAorCiAgICAgLy8gVmVydGV4IGFycmF5IG9i
amVjdHMKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlVmVydGV4QXJy
YXkoKTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3Qq
IHZlcnRleEFycmF5KTsKICAgICBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFdlYkdMVmVydGV4
QXJyYXlPYmplY3QqIHZlcnRleEFycmF5KTsKICAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7Ci0gICAgCisKICAgICBXZWJHTEV4dGVu
c2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgZmluYWw7CiAgICAgV2ViR0xB
bnkgZ2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTI2NSw3ICsyNjUsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNC
YXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSAgICBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0KENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52
YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMpOwogCiAgICAgYm9vbCBpc1dlYkdMMigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAppbmRl
eCBhZTY5NTQyZWY3NmYwZGVlMjRiN2EzMjlkZmMyMWE0ZjlhOGU5NjliLi40YzU4NDY1N2I2Y2Vl
YmIyMTEzYjU1YWE4ZDBjNzA3OGExYTMzMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmNwcAppbmRleCAxZWNjM2NhNGZmY2YxZTdlYWYxZWU5ZWRkMzJlZGI5MjFlMmUz
MDNiLi5mMGNkZGE2NzIxZjk1MjhhOTk1OGE4OTRmOWQ1MjczN2QzOTM5MzM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViR0xCdWZmZXI6On5XZWJHTEJ1ZmZlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQog
Ci12b2lkIFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBv
YmplY3QpCit2b2lkIFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBv
YmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1YTgwZjkzYmZkMWQ0NDhk
NTJmMDhhNjYwZmY2NmJjOWFjN2Q2ZDIuLjE1MWVlMzBmM2FlMjA0YzY1YzBjYjM4MjgwZWRkZGYz
NmJmMWNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAt
MjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTY3
LDcgKzY3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogCiAgICAgR0NHTGVudW0gbV90YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcAppbmRleCAzYTgyMGRlYjg1YjQ1
N2I0MDAyNDM2MGY3MDRhMGM0YTk5YzA0OTRmLi5kNmFiNTE2YWUyZmEyYTZmNzk2MjliNDJiNmY4
MWYwMGNmODZiYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbnRleHRHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b250ZXh0R3JvdXAuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2lu
Y2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBXZWJH
TENvbnRleHRHcm91cDo6aGFzQUNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAhbV9jb250ZXh0
cy5pc0VtcHR5KCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBXZWJHTENvbnRleHRH
cm91cDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkKK0dyYXBoaWNzQ29udGV4dEdMJiBXZWJHTENv
bnRleHRHcm91cDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkKIHsKICAgICBBU1NFUlQoIW1fY29u
dGV4dHMuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gKigqbV9jb250ZXh0cy5iZWdpbigpKS0+Z3Jh
cGhpY3NDb250ZXh0R0woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRHcm91cC5oCmluZGV4IDUyMTIzMGRlNWE4ZDhkMjUxYTU3MWQ2YjdhYzQzOTQ5YTVhNjRm
ZGUuLjg1NWNlNzIzOTg2ZmUwNzc1OThmMjQ2ODFhZTgwODZjODFlZGZhMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmKTsK
IAogICAgIGJvb2wgaGFzQUNvbnRleHQoKSBjb25zdDsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCYgZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wmIGdl
dEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIExvY2smIG9iamVjdEdyYXBoTG9ja0ZvckFDb250
ZXh0KCk7CiAKICAgICB2b2lkIGxvc2VDb250ZXh0R3JvdXAoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TG9zdENvbnRleHRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbnRleHRPYmplY3QuY3BwCmluZGV4IGE5Yjg0MzA1N2E5NjVmOTc5NzA1NDVhODdh
NzRmYTc3OWYyYWM5MjAuLjdjOTE5ZjJiNjY1NmI2N2IxNmNhNjM0MGIwYjJhNGI2NDVkMDQ2M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBXVEY6OkxvY2smIFdlYkdMQ29udGV4dE9iamVjdDo6b2Jq
ZWN0R3JhcGhMb2NrRm9yQ29udGV4dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0R3Jh
cGhMb2NrKCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBXZWJHTENvbnRleHRPYmpl
Y3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CitHcmFwaGljc0NvbnRleHRHTCogV2Vi
R0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAogewogICAgIHJl
dHVybiBtX2NvbnRleHQgPyBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
aAppbmRleCAzODM1ZDgwYWE3YTk3MWY2OTMxOGZjZGVjMTQwNzRlZTBlMjUzYzM1Li5kYmZkZDZi
ZmMwZWY0NGViODgyZWI5YzU5YjAwOGQyOTgxMTI2NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwog
CiAvLyBXZWJHTENvbnRleHRPYmplY3QgdGhlIGJhc2UgY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBh
cmUgb3duZWQgYnkgYSBzcGVjaWZpYwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQ7CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNz
Q29udGV4dEdMKiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYWYy
ZWQ5MDk2YzFiZWVmOGIwMTYyMDVmMjUwOWU1OWExMWM1NGNmZi4uYTY5MTUzMjNhODQ5NDRlNTli
YzE3MmQzZjViOTQzMzcyNjgxNDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQorYm9vbCBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewog
ICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ2V0RXh0ZW5zaW9ucygpOwog
ICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAppbmRleCA2
MTYxMDBhN2FiMDhiMThiMWJkOWE5YWM4MzZiY2U5NzMyZGI4MTI0Li5lZTIwYzJlYjk3YmJkMDZm
ZDA1ZjgyZGYyOTE5ZDZjOTc0M2I5ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJh
d0J1ZmZlcnMuY3BwCmluZGV4IGI1YzQxMTI2MWExZDFkMDU4N2UzN2MzNjYwODJjZWJjNGUwY2M5
YzkuLjljYjBmODU2YjU4ZTEwZTZmNDczMDllNmZlM2MxMGUyNjcwOTcxNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05NSw3ICs5
NSw3IEBAIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0
b3I8R0NHTGVudW0+JiBidWZmZXJzKQogLy8gc3RhdGljCiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6
OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdl
YmdsQ29udGV4dCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IHdl
YmdsQ29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlz
IGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBw
b3J0ZWQuCiAgICAgR0NHTGludCBtYXhEcmF3QnVmZmVycyA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IGZlMWE4N2U1YmUyYjBk
MTkzOGJkZDQ2N2ExM2Y3YWZmMjRlNzQyOGUuLmYyN2Q3MDc2YTQyNjJhNDAwZTQyNzZkZWNlMmU0
NWY0YjhiZDVjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJh
bWVidWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIHsKICAgICAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgaXNJbml0aWFsaXpl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgYXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4
dEdMKikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwg
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CiAKICAgICAgICAgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50KCkgeyB9OwpAQCAtMTIwLDE4
ICsxMjAsMTggQEAgbmFtZXNwYWNlIHsKICAgICAgICAgICAgIG1fcmVuZGVyYnVmZmVyLT5zZXRJ
bml0aWFsaXplZCgpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2ht
ZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250ZXh0KQorICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2ht
ZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29u
dGV4dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgbV9yZW5kZXJidWZmZXItPm9uRGV0YWNo
ZWQobG9ja2VyLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVy
QXR0YWNobWVudDo6YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1
ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1H
TE9iamVjdCBvYmplY3QgPSBvYmplY3RPclplcm8obV9yZW5kZXJidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVIsIG9iamVjdCk7CiAgICAgfQogCi0gICAg
dm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQp
CisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNz
Q29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQp
CiAgICAgewogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKQEAgLTE2Myw5ICsxNjMs
OSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBvbkRldGFjaGVkKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIHVuYXR0
YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBh
dHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFj
aG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdM
KiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpT
Qzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBXZWJHTFRleHR1cmVBdHRhY2ht
ZW50KCkgeyB9OwpAQCAtMjMyLDEyICsyMzIsMTIgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgLy8g
VGV4dHVyZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW5pdGlhbGl6ZWQuCiAgICAgfQogCi0gICAgdm9p
ZCBXZWJHTFRleHR1cmVBdHRhY2htZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQorICAgIHZvaWQgV2Vi
R0xUZXh0dXJlQXR0YWNobWVudDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCkKICAgICB7CiAgICAgICAgIG1fdGV4dHVy
ZS0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xU
ZXh0dXJlQXR0YWNobWVudDo6YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFRl
eHR1cmVBdHRhY2htZW50OjphdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAgICAgICAgIFBsYXRmb3Jt
R0xPYmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJvKG1fdGV4dHVyZS5nZXQoKSk7CiAgICAgICAg
IGlmIChtX3RhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8zRCB8fCBtX3Rhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRF9BUlJBWSkKQEAgLTI0Niw3ICsyNDYs
NyBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQodGFyZ2V0LCBhdHRhY2htZW50LCBtX3RhcmdldCwgb2JqZWN0LCBtX2xldmVsKTsKICAgICB9
CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50Ojp1bmF0dGFjaChHcmFwaGljc0Nv
bnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQog
ICAgIHsKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIC8vIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCBhdHRhY2htZW50IGlzIHZhbGlkIGluIEVTMy4KQEAgLTU0Nyw3ICs1NDcsNyBAQCBHQ0dM
ZW51bSBXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBjaGFyKiogcmVhc29uKSBj
b25zdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEU7
CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jvb2wgV2ViR0xGcmFtZWJ1
ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioq
IHJlYXNvbikKIHsKICAgICBpZiAoY2hlY2tTdGF0dXMocmVhc29uKSAhPSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU2
Myw3ICs1NjMsNyBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBj
b25zdAogICAgIHJldHVybiBhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQtPmlzVmFsaWQoKTsKIH0K
IAotdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGZvciAoYXV0byYgYXR0YWNo
bWVudCA6IG1fYXR0YWNobWVudHMudmFsdWVzKCkpCiAgICAgICAgIGF0dGFjaG1lbnQtPm9uRGV0
YWNoZWQobG9ja2VyLCBjb250ZXh0M2QpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgV2ViR0xG
cmFtZWJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
LCBHcmFwaGljc0NvCiB9CiAKICNpZiAhVVNFKEFOR0xFKQotYm9vbCBXZWJHTEZyYW1lYnVmZmVy
Ojppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGczZCwgY29u
c3QgY2hhcioqIHJlYXNvbikKK2Jvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFj
aG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqKiByZWFzb24pCiB7CiAg
ICAgaWYgKCFjb250ZXh0KCkpIHsKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBkZWxldGVk
IC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKaW5kZXggZjg4YjA2YTVlNGM2NDUyNWMyYjI2MmZkOWI4
ZTM5MmE5OTA1ZDcyMy4uYzk2ZTRmNTE4NDc5NTM3M2JmNDRhZWEwN2ZhYWIzNTRmNzBhZjY2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaApAQCAt
MjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTYy
LDkgKzYyLDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsaXplZCgpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0wqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3ND
b250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpT
bG90VmlzaXRvciYpID0gMDsKIAogICAgIHByb3RlY3RlZDoKQEAgLTk0LDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGUgZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0
ZTsgb3RoZXJ3aXNlIGluaXRpYWxpemUKICAgICAvLyB0aGUgYnVmZmVycyBpZiB0aGV5IGhhdmVu
J3QgYmVlbiBpbml0aWFsaXplZCBhbmQKICAgICAvLyBuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVu
dHMgaXMgdHJ1ZS4KLSAgICBib29sIG9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
Y29uc3QgY2hhcioqIHJlYXNvbik7CisgICAgYm9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRH
TCosIGNvbnN0IGNoYXIqKiByZWFzb24pOwogCiAgICAgLy8gU29mdHdhcmUgdmVyc2lvbiBvZiBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoKSwgZXhjZXB0IHRoYXQgd2hlbgogICAgIC8vIEZSQU1F
QlVGRkVSX0NPTVBMRVRFIGlzIHJldHVybmVkLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKQEAg
LTExOSwxMyArMTE5LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xGcmFtZWJ1ZmZl
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwogCiAgICAgV2ViR0xBdHRhY2htZW50KiBnZXRBdHRhY2htZW50KEdD
R0xlbnVtKSBjb25zdDsKIAogI2lmICFVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJuIGZhbHNlIGlm
IGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGUuCi0gICAgYm9vbCBpbml0aWFsaXplQXR0YWNobWVu
dHMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBi
b29sIGluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHRHTCosIGNvbnN0IGNoYXIq
KiByZWFzb24pOwogI2VuZGlmCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZnJhbWVidWZmZXIgaXMg
Y3VycmVudGx5IGJvdW5kIHRvIHRoZSBnaXZlbiB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKaW5kZXggYWI1YzE0ZjU2YjE5MjhiMTVlZWQ3ZjZmNTYx
MzA0ZDIwN2RhYTgzMC4uMjQ4OTA2ZWRiMjE4Y2ZmZWU2MDU1ODlmMmUxODg4NTgyY2FiYjEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1bkRlc3RydWN0b3IoKQogICAgIH0KIH0K
IAotdm9pZCBXZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QpCit2b2lkIFdlYkdMT2Jq
ZWN0OjpkZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3ND
b250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogICAgIGlmICgh
bV9vYmplY3QpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OmRldGFjaCgpCiAg
ICAgbV9hdHRhY2htZW50Q291bnQgPSAwOyAvLyBNYWtlIHN1cmUgT3BlbkdMIHJlc291cmNlIGlz
IGRlbGV0ZWQuCiB9CiAKLXZvaWQgV2ViR0xPYmplY3Q6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCkKK3Zv
aWQgV2ViR0xPYmplY3Q6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBpZiAobV9hdHRhY2htZW50Q291
bnQpCiAgICAgICAgIC0tbV9hdHRhY2htZW50Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuaAppbmRleCBmMGFhMjEzN2EzZWFlNWY5N2Y4YWQ5YmI5MWQ5MDMzZTAw
OWYxNmExLi45ZTM0YzU4OTVmZDNmNjFmOGMyZDM0OWI1YjRiNDdjYzg4NjEyM2RlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IExvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMQ29udGV4dEdyb3Vw
OwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIApAQCAtNTMsMTAgKzUzLDEwIEBA
IHB1YmxpYzoKICAgICAvLyBUaGUgQWJzdHJhY3RMb2NrZXIgYXJndW1lbnQgZW5mb3JjZXMgYXQg
Y29tcGlsZSB0aW1lIHRoYXQgdGhlIG9iamVjdEdyYXBoTG9jawogICAgIC8vIGlzIGhlbGQuIFRo
aXMgaXNuJ3QgbmVjZXNzYXJ5IGZvciBhbGwgb2JqZWN0IHR5cGVzLCBidXQgZW5vdWdoIG9mIHRo
ZW0gdGhhdAogICAgIC8vIGl0J3MgZG9uZSBmb3IgYWxsIG9mIHRoZW0uCi0gICAgdm9pZCBkZWxl
dGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKik7CisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICB2b2lkIG9uQXR0YWNoZWQoKSB7ICsrbV9hdHRh
Y2htZW50Q291bnQ7IH0KLSAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CisgICAgdm9pZCBvbkRldGFjaGVkKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOwogCiAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IHNpZGUgaXNzdWUgYSBkZWxldGUgY2Fs
bCBhbHJlYWR5LCBub3QKICAgICAvLyB3aGV0aGVyIHRoZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVs
ZXRlZC4KQEAgLTgyLDEzICs4MiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5EZXN0cnVj
dG9yKCk7CiAKICAgICAvLyBkZWxldGVPYmplY3RJbXBsIHNob3VsZCBiZSBvbmx5IGNhbGxlZCBv
bmNlIHRvIGRlbGV0ZSB0aGUgT3BlbkdMIHJlc291cmNlLgotICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXBPckNv
bnRleHQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKLSAgICB2
aXJ0dWFsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTCogZ2V0QUdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QgPSAwOwogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtR0xPYmplY3QgbV9v
YmplY3QgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNw
cAppbmRleCA1MDY2MGM3NWM1MGFmMTNjNTk0NTEyMTU4ZGQ1Y2JhMzEyMzdmZGQ0Li44MTM3OTUx
MDU1MGY2NTcyM2E0NDM1MzA2N2MzNWY3Y2YxZjkyZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMzksNiArMzksMTAgQEAKICNpbmNs
dWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNp
ZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIYXNoTWFwPFdlYkdMUHJvZ3JhbSosIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqPiYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMoY29uc3QgTG9j
a0hvbGRlciYpCkBAIC05NSw3ICs5OSw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjpjb250ZXh0RGVz
dHJveWVkKCkKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3ll
ZCgpOwogfQogCi12b2lkIFdlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQ
bGF0Zm9ybUdMT2JqZWN0IG9iaikKK3ZvaWQgV2ViR0xQcm9ncmFtOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0
M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUHJvZ3Jh
bShvYmopOwogICAgIGlmIChtX3ZlcnRleFNoYWRlcikgewpAQCAtMjA4LDcgKzIxMiw3IEBAIHZv
aWQgV2ViR0xQcm9ncmFtOjphZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEpTQzo6U2xvdFZpc2l0CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG1fZnJhZ21l
bnRTaGFkZXIuZ2V0KCkpOwogfQogCi12b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRy
aWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2Vi
R0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dDNkKQogewogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLmNsZWFyKCk7CiAKQEAg
LTIxNyw3ICsyMjEsMTEgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9j
YXRpb25zKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QKICAgICBtX2FjdGl2ZUF0
dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1BdHRyaWJzKSk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJzOyArK2kpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKLSAgICAgICAgY29udGV4dDNkLT5nZXRBY3Rp
dmVBdHRyaWJJbXBsKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNpZiBVU0UoQU5HTEUpCisgICAgICAg
IGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNlbHNlCisg
ICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPihjb250ZXh0M0QpLT5n
ZXRBY3RpdmVBdHRyaWJJbXBsKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNlbmRpZgogICAgICAgICBt
X2FjdGl2ZUF0dHJpYkxvY2F0aW9uc1tpXSA9IGNvbnRleHQzZC0+Z2V0QXR0cmliTG9jYXRpb24o
b2JqZWN0KCksIGluZm8ubmFtZSk7CiAgICAgfQogfQpAQCAtMjMwLDcgKzIzOCw3IEBAIHZvaWQg
V2ViR0xQcm9ncmFtOjpjYWNoZUluZm9JZk5lZWRlZCgpCiAgICAgaWYgKCFvYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQgPSBn
ZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCA9
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogICAgIEdDR0xpbnQgbGlua1N0YXR1cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDhmNzBkMGQyYjBlNDc1NWY1MmY0ZWE5YTNiYmRjNDlk
ODQzODgzMzcuLjEzMzk0MzQ4OThmNjllYjA2MzNkYmZiOWU1ZjE0ZjNlOTQ4NDc1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgV2ViR0xTaGFkZXIqIGdldEF0dGFjaGVkU2hhZGVyKEdDR0xlbnVtKTsKICAg
ICBib29sIGF0dGFjaFNoYWRlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xTaGFk
ZXIqKTsKICAgICBib29sIGRldGFjaFNoYWRlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
V2ViR0xTaGFkZXIqKTsKLSAgICAKKwogICAgIHZvaWQgc2V0UmVxdWlyZWRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckNvdW50KGludCBjb3VudCkKICAgICB7CiAgICAgICAgIG1fcmVxdWlyZWRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50QWZ0ZXJOZXh0TGluayA9IGNvdW50OwpAQCAtOTMsOSAr
OTMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCopOworICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3ND
b250ZXh0R0wqKTsKICAgICB2b2lkIGNhY2hlSW5mb0lmTmVlZGVkKCk7CiAKICAgICBWZWN0b3I8
R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDE2NjIwYmQ4ZDg1ODI0Yjk1ZTU3MzhkNTYwMjVmMTFh
OWNiZWY4NjAuLmU0ODViOTg2NDg1MzQ3Y2RhODVlZmIyOGVjNGEyOWEyYTdiYjQ3YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisK
IFJlZjxXZWJHTFF1ZXJ5PiBXZWJHTFF1ZXJ5OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMUXVlcnkoY3R4KSk7
CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+
Y3JlYXRlUXVlcnkoKSk7CiB9CiAKLXZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVRdWVyeShv
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDVh
NmMwMzYxYTU5ODNiNzJlNGI0NmY4ZTgyNDk4Y2VjNjE5ZGUxNjUuLmNiZDlkOTI2MTU0Nzg5MDk1
NmE5MmYyMDdmNDkwZTcxMGIyMTUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdt
YSBvbmNlCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBtX2lzUmVzdWx0QXZhaWxhYmxl
IHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAppbmRleCBkNDBkNGUwYjg1
NjFhZjU1YmVmYWU3ZTUxMmYwMDYxNDI1MTA5N2Y0Li5lZGQ5OWNhMmZiZDQ0YjQyYjUzMWNiMDYw
M2EwNWJmYzIzN2IzN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJidWZmZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xSZW5kZXJidWZm
ZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAg
ICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUmVuZGVy
YnVmZmVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJidWZmZXIuaAppbmRleCA0YTdmYTZjOWEyMzYxMmU0MWQyMzVkZWRhNGRjYzEwYzQyY2Vj
MDcxLi4yYWMwOGI3MjhiN2FhNzE0ZjBjZWFmODlkYWY3YTUwY2NjYzgzNWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTIwLDcgKzIw
LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDM1NTY2ZWI4ZGE1N2U3ZTM2MmI4NDBmZTg2NGYzNTkxNzY2
ZDJiMDQuLmQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtODksNyArODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJgogICAgIHJldHVybiBy
ZW5kZXJpbmdDb250ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVm
PEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2Fu
dmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKSk7CiAgICAgLy8gVGhpcyBpcyB2aXJ0
dWFsIGFuZCBjYW4ndCBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgpAQCAtMTA1LDcgKzEw
NSw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZh
c0Jhc2UmIGNhbnZhcywgR3JhcGhpY3NDb250ZXh0CiB7CiB9CiAKLVdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NDVkNGJiMTA1MTNkMmRiNGY1YTQz
ZTk0OTE3YTY4MjFkYjI2MmI3Li5hNzEwYTBmMWU2Mjk4MmViMjBjMDc5NTg5ZmU2NTQyZmVlZWNm
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHQpOwogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFz
ZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVmPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzKTsKIAogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsK
LSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMzlmODdlNDI3MjllZWY0MTk5MzRhNmY1MjViMGJjZTBlN2M2
M2ZmMi4uNjJmNGY3OTk5M2JiYjg0ZWViN2MyOTY5YWI3ODIxNWExMjFjYjEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgog
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTEzNiw3ICsxMzcsNyBAQCBj
b25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlID0gMjU2Owogc3RhdGljIGNvbnN0
IFNlY29uZHMgY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVsYXkgeyAzX3MgfTsKIAogbmFtZXNw
YWNlIHsKLSAgICAKKwogICAgIEdDR0xpbnQgY2xhbXAoR0NHTGludCB2YWx1ZSwgR0NHTGludCBt
aW4sIEdDR0xpbnQgbWF4KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlIDwgbWluKQpAQCAtNjE3
LDcgKzYxOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFwcGx5IHsgZmFsc2UgfTsKIH07
CiAKLXN0YXRpYyBib29sIGlzSGlnaFBlcmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+JiBjb250ZXh0KQorc3RhdGljIGJvb2wgaXNIaWdoUGVyZm9y
bWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4mIGNvbnRleHQpCiB7
CiAgICAgcmV0dXJuIGNvbnRleHQtPnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpID09
IFdlYkdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9CkBAIC03NTMsNyArNzU0
LDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZShDYW52YXNCYXNlJiBjYW52YXMsIFdlYkdMQ28KICAgICAgICAgbV9jaGVja0ZvckNvbnRleHRM
b3NzSGFuZGxpbmdUaW1lci5zdGFydE9uZVNob3QoY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVs
YXkpOwogfQogCi1XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYm
IGNvbnRleHQsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYgY2Fu
dmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyBhdHRyaWJ1dGVzKQogICAgIDogR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNh
bnZhcykKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9yZXN0b3Jl
VGltZXIoY2FudmFzLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsICZXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KQpAQCAtODY0LDcgKzg2NSw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQog
ICAgIG1fc3RlbmNpbEZ1bmNNYXNrQmFjayA9IDB4RkZGRkZGRkY7CiAgICAgbV9sYXllckNsZWFy
ZWQgPSBmYWxzZTsKICAgICBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZCA9IG1heEdMRXJy
b3JzQWxsb3dlZFRvQ29uc29sZTsKLSAgICAKKwogICAgIG1fY2xlYXJDb2xvclswXSA9IG1fY2xl
YXJDb2xvclsxXSA9IG1fY2xlYXJDb2xvclsyXSA9IG1fY2xlYXJDb2xvclszXSA9IDA7CiAgICAg
bV9zY2lzc29yRW5hYmxlZCA9IGZhbHNlOwogICAgIG1fY2xlYXJEZXB0aCA9IDE7CkBAIC04Nzks
MTEgKzg4MCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVO
ZXdDb250ZXh0KCkKICAgICBmb3IgKEdDR0xpbnQgaSA9IDA7IGkgPCBudW1Db21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzOyArK2kpCiAgICAgICAgIG1fdW5yZW5kZXJhYmxlVGV4dHVyZVVuaXRzLmFk
ZChpKTsKICNlbmRpZgotICAgIAorCiAgICAgR0NHTGludCBudW1WZXJ0ZXhBdHRyaWJzID0gMDsK
ICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X0FUVFJJQlMsICZudW1WZXJ0ZXhBdHRyaWJzKTsKICAgICBtX21heFZlcnRleEF0dHJpYnMgPSBu
dW1WZXJ0ZXhBdHRyaWJzOwotICAgIAorCiAgICAgbV9tYXhUZXh0dXJlU2l6ZSA9IDA7CiAgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfU0la
RSwgJm1fbWF4VGV4dHVyZVNpemUpOwogICAgIG1fbWF4VGV4dHVyZUxldmVsID0gV2ViR0xUZXh0
dXJlOjpjb21wdXRlTGV2ZWxDb3VudChtX21heFRleHR1cmVTaXplLCBtX21heFRleHR1cmVTaXpl
KTsKQEAgLTkwMCw3ICs5MDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlu
aXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2JhY2tEcmF3QnVmZmVyID0gR3JhcGhpY3NDb250
ZXh0R0w6OkJBQ0s7CiAgICAgbV9kcmF3QnVmZmVyc1dlYkdMUmVxdWlyZW1lbnRzQ2hlY2tlZCA9
IGZhbHNlOwogICAgIG1fZHJhd0J1ZmZlcnNTdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICAKKwogICAg
IG1fdmVydGV4QXR0cmliVmFsdWUucmVzaXplKG1fbWF4VmVydGV4QXR0cmlicyk7CiAKICNpZiAh
VVNFKEFOR0xFKQpAQCAtMTc4Niw3ICsxNzg3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUK
ICAgICBpZiAoIXZhbGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3aWR0aCwgaGVpZ2h0LCBsZXZlbCwg
ImNvbXByZXNzZWRUZXhJbWFnZTJEIikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQt
Pm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIG1fY29udGV4dC0+Y29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsCisgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQu
Z2V0KCkpLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgYm9yZGVyLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0
YS5iYXNlQWRkcmVzcygpKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgY29tcHJlc3NlZFRleEltYWdlMkQgZnVu
Y3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9lc24ndCBoYXZlIHRoZSBk
YXRhIGZvciB0aGlzIGxldmVsLgpAQCAtMjIxMCw3ICsyMjExLDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwoR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2kKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVFbGVtZW50
QXJyYXlTaXplKEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpCiB7CiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2Jv
dW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwotICAgIAorCiAg
ICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjI1MSw3ICsyMjUyLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZUluZGV4QXJyYXlQcmVjaXNlKEdDR0xzaXplaSBjb3VudCwgR0NHTGUKIHsKICAgICBBU1NFUlQo
Y291bnQgPj0gMCAmJiBvZmZzZXQgPj0gMCk7CiAgICAgdW5zaWduZWQgbWF4SW5kZXggPSAwOwot
ICAgIAorCiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2Jv
dW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogCiAgICAgaWYg
KCFlbGVtZW50QXJyYXlCdWZmZXIpCkBAIC0yNDUxLDEwICsyNDUyLDEwIEBAIGJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVEcmF3TW9kZShmdW5jdGlvbk5hbWUsIG1vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCisKICAgICBpZiAoIXZhbGlkYXRlU3RlbmNpbFNldHRpbmdzKGZ1bmN0aW9uTmFtZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEU6CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfU0hPUlQ6CkBAIC0yNDY4LDIyICsyNDY5LDIyIEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdHlwZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGNvdW50IDwgMCB8fCBv
ZmZzZXQgPCAwKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJjb3VudCBvciBvZmZzZXQgPCAwIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWNvdW50KSB7CiAg
ICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgaWYgKHByaW1pdGl2ZUNvdW50IDwgMCkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAicHJpbWNvdW50IDwgMCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKCFtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibm8gRUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91
bmQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ5NiwxNCArMjQ5NywxNCBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgRwogICAgIH0KICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICBDaGVja2VkPEdDR0xpbnQsIFJlY29yZE92ZXJmbG93PiBj
aGVja2VkQ291bnQoY291bnQpOwogICAgIENoZWNrZWQ8R0NHTGludCwgUmVjb3JkT3ZlcmZsb3c+
IGNoZWNrZWRQcmltaXRpdmVDb3VudChwcmltaXRpdmVDb3VudCk7CiAgICAgaWYgKGNoZWNrZWRD
b3VudC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93
ZWQoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBi
b3VuZHMgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSh0eXBlLCBudW1FbGVtZW50cykg
fHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2
ZUNvdW50LnVuc2FmZUdldCgpKSkgewogICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVBy
ZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgpLCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhu
dW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgewogICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFU
SU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5
cyIpOwpAQCAtMjUxNywxMyArMjUxOCwxMyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCi0gICAgCisKICAgICBjb25zdCBjaGFy
KiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7CiAgICAgaWYgKG1fZnJhbWVidWZm
ZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250
ZXh0R0woKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsIHJl
YXNvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KICNlbmRpZgpAQCAtMzU0OSw5ICszNTUwLDExIEBAIFdlYkdMQW55IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25z
dCBXZWJHCiAgICAgc3dpdGNoIChiYXNlVHlwZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZMT0FUOiB7CiAgICAgICAgIEdDR0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CisjaWYgIVVT
RShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFt
Lm9iamVjdCgpLCBsb2NhdGlvbiwgMTYgKiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAg
ICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHBy
b2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0g
MSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKQEAgLTM1NTksOSArMzU2MiwxMSBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3Jh
bSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpJTlQ6IHsKICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xF
KQogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0
KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UK
KyNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmpl
Y3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlWzBdOwpAQCAtMzU3Niw5ICszNTgxLDExIEBAIFdlYkdMQW55IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFt
LCBjb25zdCBXZWJHCiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkJPT0w6IHsK
ICAgICAgICAgR0NHTGludCB2YWx1ZVs0XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xFKQogICAgICAg
ICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0
aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKKyNlbmRpZgog
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9j
YXRpb24sIHZhbHVlKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgIFZl
Y3Rvcjxib29sPiB2ZWN0b3IobGVuZ3RoKTsKQEAgLTQyNTcsNyArNDI2NCw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoCiAgICAgfQogCiAjZGVmaW5lIElOVEVSTkFMX0ZPUk1BVF9DSEVDSyh0
eXBlTWFjcm8sIHBpeGVsVHlwZU1hY3JvKSBcCi0gICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxU
eXBlTWFjcm8pIHsgXAorICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMOjp0eXBlTWFj
cm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJl
YWRQaXhlbHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5hbCBmb3JtYXQiKTsgXAogICAg
ICAgICByZXR1cm47IFwKICAgICB9IFwKQEAgLTQyNjgsNyArNDI3NSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoCiAgICAgQ0hFQ0tfQ09NUE9ORU5UX0NPVU5UCiAKICNkZWZpbmUgSU5URVJO
QUxfRk9STUFUX0lOVEVHRVJfQ0hFQ0sodHlwZU1hY3JvLCBwaXhlbFR5cGVNYWNybykgXAotICAg
IGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxz
LmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKKyAgICBpZiAodHlwZSAhPSBH
cmFwaGljc0NvbnRleHRHTDo6dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpw
aXhlbFR5cGVNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2gg
aW50ZXJuYWwgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCkBAIC00Mjc4
LDEzICs0Mjg1LDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAgICAgfSBcCiAgICAgQ0hF
Q0tfQ09NUE9ORU5UX0NPVU5UCiAKLSNkZWZpbmUgQ0FTRV9QQUNLRURfSU5URVJOQUxfRk9STUFU
X0NIRUNLKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlME1hY3JvLCBwaXhl
bFR5cGUwTWFjcm8sIHR5cGUxTWFjcm8sIHBpeGVsVHlwZTFNYWNybykgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgIGlmICghKHR5cGUgPT0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGUwTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9
PSBKU0M6OnBpeGVsVHlwZTBNYWNybykgXAotICAgICAgICAmJiAhKHR5cGUgPT0gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnR5cGUxTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6OnBp
eGVsVHlwZTFNYWNybykpIHsgXAorI2RlZmluZSBDQVNFX1BBQ0tFRF9JTlRFUk5BTF9GT1JNQVRf
Q0hFQ0soaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwTWFjcm8sIHBpeGVs
VHlwZTBNYWNybywgdHlwZTFNYWNybywgcGl4ZWxUeXBlMU1hY3JvKSBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisgICAgaWYgKCEodHlwZSA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6dHlwZTBNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4ZWxU
eXBlME1hY3JvKSBcCisgICAgICAgICYmICEodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6dHlw
ZTFNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4ZWxUeXBlMU1hY3JvKSkgeyBc
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VO
VU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJuYWwgZm9ybWF0Iik7
IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCi0gICAgaWYgKGZvcm1hdCAhPSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Zm9ybWF0TWFjcm8pIHsgXAorICAgIGlmIChmb3JtYXQgIT0gR3Jh
cGhpY3NDb250ZXh0R0w6OmZvcm1hdE1hY3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAiSW52YWxp
ZCBmb3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwKQEAgLTQ2OTksNyArNDcw
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleElt
YWdlU291cmNlSGVscGVyKFRleEltYWdlRnVuY3RpCiAgICAgICAgICAgICAgICAgLy8gVGhlIFVO
U0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYgdHlwZSBwYWNrL3VucGFjayBpc24ndCBpbXBsZW1l
bnRlZC4KICAgICAgICAgICAgICAgICB0eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURh
dGEocGl4ZWxzLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RGF0YUZvcm1hdDo6UkdC
QTgsIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZv
cm1hdCwgdHlwZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBkYXRh
KSkgeworICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4ZWxz
LmdldCgpLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTgsIGFkanVzdGVkU291
cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZvcm1hdCwgdHlwZSwgbV91
bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBkYXRhKSkgewogICAgICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVF
LCAidGV4SW1hZ2UyRCIsICJiYWQgaW1hZ2UgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgICAgICB9CkBAIC01MDEzLDcgKzUwMjAsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgRwogICAgIEFTU0VSVCh0ZXgpOwogICAgIEFTU0VSVCh2YWxpZGF0ZU5QT1RUZXh0
dXJlTGV2ZWwod2lkdGgsIGhlaWdodCwgbGV2ZWwsICJ0ZXhJbWFnZTJEIikpOwogICAgIGlmICgh
cGl4ZWxzKSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQorICAgICAgICBpZiAoIXN0YXRpY19jYXN0
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+dGV4SW1hZ2UyRFJl
c291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQodmFsaWRhdGVTZXR0YWJsZVRleElu
dGVybmFsRm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3JtYXQpKTsKQEAgLTU0ODUsOCAr
NTQ5Miw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5j
Rm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvCiAgICAgVU5VU0VEX1BBUkFNKGludGVy
bmFsRm9ybWF0KTsKICNlbHNlCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvbWJpbmF0aW9uIG9m
IGludGVybmFsZm9ybWF0LCBmb3JtYXQsIGFuZCB0eXBlIGlzIHN1cHBvcnRlZC4KLSNkZWZpbmUg
SU5URVJOQUxfRk9STUFUX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5
cGUwLCB0eXBlMSwgdHlwZTIsIHR5cGUzLCB0eXBlNCkgY2FzZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmZvcm1hdE1hY3JvKSB7IFwKKyNkZWZpbmUgSU5URVJOQUxfRk9STUFU
X0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwLCB0eXBlMSwgdHlw
ZTIsIHR5cGUzLCB0eXBlNCkgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6aW50ZXJuYWxGb3JtYXRN
YWNybzogXAorICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OmZvcm1hdE1hY3Jv
KSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGZvcm1hdCBmb3IgaW50ZXJuYWxm
b3JtYXQiKTsgXAogICAgICAgICByZXR1cm4gZmFsc2U7IFwKICAgICB9IFwKQEAgLTU2MjUsNyAr
NTYzMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAgR0NHTGludCBjbGlwcGVkWCwg
Y2xpcHBlZFk7CiAgICAgR0NHTHNpemVpIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodDsKICAg
ICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJvdW5kUmVhZEZyYW1lYnVmZmVy
V2lkdGgoKSwgZ2V0Qm91bmRSZWFkRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xp
cHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewotICAgICAgICBtX2NvbnRl
eHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCiAgICAg
ICAgICAgICBpbnRlcm5hbEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUs
IG1fdW5wYWNrQWxpZ25tZW50KTsKICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xp
cHBlZEhlaWdodCA+IDApIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgY2xpcHBlZFggLSB4LCBjbGlwcGVkWSAtIHksCkBAIC02NDA2LDgg
KzY0MTMsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZhbGxiYWNr
QmxhY2tUZXh0dXJlczF4MSgpCiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZChHQ0dMZW51bSB0ZXhJ
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gY29sb3JCdWZmZXJGb3JtYXQpCiB7Ci0gICAgYXV0byBu
ZWVkID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQodGV4
SW50ZXJuYWxGb3JtYXQpOwotICAgIGF1dG8gaGF2ZSA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KGNvbG9yQnVmZmVyRm9ybWF0KTsKKyAgICBhdXRvIG5l
ZWQgPSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCh0ZXhJbnRlcm5h
bEZvcm1hdCk7CisgICAgYXV0byBoYXZlID0gR3JhcGhpY3NDb250ZXh0R0w6OmdldENoYW5uZWxC
aXRzQnlGb3JtYXQoY29sb3JCdWZmZXJGb3JtYXQpOwogICAgIHJldHVybiAobmVlZCAmIGhhdmUp
ID09IG5lZWQ7CiB9CiAKQEAgLTcyNDIsNyArNzI0OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJbXBsKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgYXV0byBkYXRhID0gbGlzdC5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCBmdW5jdGlvbk5hbWUsICJubyBhcnJheSIpOwpAQCAtNzI4OCw3ICs3Mjk1LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQ0cKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5p
dFZlcnRleEF0dHJpYjAoKQogewogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlOjpWZXJ0
ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldFZlcnRl
eEF0dHJpYlN0YXRlKDApOwotICAgIAorCiAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyID0gY3Jl
YXRlQnVmZmVyKCk7CiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dEdM
OjpBUlJBWV9CVUZGRVIsIG1fdmVydGV4QXR0cmliMEJ1ZmZlci0+b2JqZWN0KCkpOwogICAgIG1f
Y29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCAwLCBH
cmFwaGljc0NvbnRleHRHTDo6RFlOQU1JQ19EUkFXKTsKQEAgLTc0ODEsNyArNzQ4OCw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAg
aWYgKCFob3N0V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSht
X2F0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShtX2F0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgaWYgKG1fY29udGV4dExv
c3RNb2RlID09IFJlYWxMb3N0Q29udGV4dCkKICAgICAgICAgICAgIG1fcmVzdG9yZVRpbWVyLnN0
YXJ0T25lU2hvdChzZWNvbmRzQmV0d2VlblJlc3RvcmVBdHRlbXB0cyk7CkBAIC03NzU3LDcgKzc3
NjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgYwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5B
QkxFKFdFQkdMMikKICAgICBpZiAoaXNXZWJHTDIoKSkKLSAgICAgICAgbV9jb250ZXh0LT5wcmlt
aXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5wcmltaXRp
dmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUpKTsKICNlbmRpZgogCiAgICAgbV9j
b250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggZTJh
MDdhNWJjNTZkYTAyNGRhZTAyMTE3Y2Y3M2JmYjQ0OTdmOTc4Ny4uMjdkMTU1YjllNTAzNTAzYzVk
ODI5ODc5MmQwYTc5N2Q2NDM4Njc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMjAsNyArMjAsNyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgogI2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0wuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1c3BlbmRhYmxl
VGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTI0LDcgKzEyNCw3IEBAIHVzaW5nIFdl
YkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4sIFJlZlB0
cjxPZmZzY3JlZW5DYW52CiB1c2luZyBXZWJHTENhbnZhcyA9IFdURjo6VmFyaWFudDxSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpDbGllbnQsIHB1YmxpYyBH
UFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUgQWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyIHsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR3Jh
cGhpY3NDb250ZXh0R0w6OkNsaWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCwgcHJpdmF0ZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBjcmVhdGUo
Q2FudmFzQmFzZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmLCBjb25zdCBTdHJpbmcmKTsKQEAg
LTM3Nyw3ICszNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb3NlQ29udGV4dEltcGwoTG9zdENv
bnRleHRNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5n
ZWQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBncmFwaGljc0NvbnRleHRHTCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEdyYXBoaWNzQ29udGV4dEdM
KiBncmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQog
ICAgIFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRHcm91cC5nZXQoKTsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBvdmVycmlkZTsKIApAQCAtMzg5LDcgKzM4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVtb3ZlU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0Jik7CiAgICAgdm9pZCByZW1vdmVD
b250ZXh0T2JqZWN0KFdlYkdMQ29udGV4dE9iamVjdCYpOwotICAgIAorCiAgICAgdW5zaWduZWQg
Z2V0TWF4VmVydGV4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VmVydGV4QXR0cmliczsg
fQogCiAgICAgYm9vbCBpc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgpIGNvbnN0OwpAQCAtNDI3
LDcgKzQyNyw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwotICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzKTsKIAogICAgIGZyaWVuZCBjbGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERyYXdCdWZmZXJzOwpAQCAtNTI3LDcgKzUyNyw3
IEBAIHByb3RlY3RlZDoKICAgICBib29sIG5lZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBm
aW5hbDsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0Owor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJH
TENvbnRleHRHcm91cD4gbV9jb250ZXh0R3JvdXA7CiAgICAgTG9jayBtX29iamVjdEdyYXBoTG9j
azsKIApAQCAtNTQ1LDE0ICs1NDUsMTQgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZT4gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0OwogCiAgICAgdm9p
ZCBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZSopOwotICAgIAorCiAgICAgY2xhc3MgVmVydGV4QXR0
cmliVmFsdWUgewogICAgIHB1YmxpYzoKICAgICAgICAgVmVydGV4QXR0cmliVmFsdWUoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpbml0VmFsdWUoKTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICB2b2lkIGluaXRWYWx1ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHR5cGUgPSBH
cmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7CkBAIC01NjEsNyArNTYxLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgZlZhbHVlWzJdID0gMC4wZjsKICAgICAgICAgICAgIGZWYWx1ZVszXSA9IDEu
MGY7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgR0NHTGVudW0gdHlwZTsKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgR0NHTGZsb2F0IGZWYWx1ZVs0XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCmluZGV4IGI3MjA0MjU4MjNlMzYzNTZl
YTJmNzA0NTcwOGNlNTE0MTVhY2IwNzUuLmIwYjdkZGQ5YzQzY2YyMDA1OTU0OGYwNDhkMzljMDMx
NDQ4ODAzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2Ft
cGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNw
cApAQCAtNTQsNyArNTQsNyBAQCBXZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRH
TCgpLT5jcmVhdGVTYW1wbGVyKCkpOwogfQogCi12b2lkIFdlYkdMU2FtcGxlcjo6ZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFNhbXBsZXI6OmRl
bGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRl
bGV0ZVNhbXBsZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
YW1wbGVyLmgKaW5kZXggOWIxMTgzZTVkNzNkZTI2MDVlNzFkNDk4NzBhNjg0MDkwYzIxMTVlMC4u
MTk4M2E1MzliOTE3YTJlN2U3MTdmMWE3ZmVjM2U3NzQzZGJkNWRhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHAKaW5kZXggYzcwZDBhNDZkNmM5YjhlNGZmZDgyMDU1YTMxMjJkYjBiZDE2MTE0NC4uMTcyYTYy
YTc4N2NlYmE1NzdlODg5NGNlZWQ1ZDk4ODBjNDQ3MjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC01OCw3ICs1OCw3IEBAIFdlYkdMU2hh
ZGVyOjp+V2ViR0xTaGFkZXIoKQogICAgIHJ1bkRlc3RydWN0b3IoKTsKIH0KIAotdm9pZCBXZWJH
TFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9p
ZCBXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewog
ICAgIGNvbnRleHQzZC0+ZGVsZXRlU2hhZGVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTaGFkZXIuaAppbmRleCA3YjQ3MzNhYmNlN2VjNGFlYzQ3YTRmZDUwMjlm
MTQyMDZjOGZmODc5Li5jYjNkYzQ4OTlkNGI5NmZiOTgxODRmZWRlMTNkMDQ1NzgzNDQzNWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKQEAgLTIwLDcgKzIwLDcg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYsIEdDR0xlbnVtKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAK
ICAgICBHQ0dMZW51bSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fc291cmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgK
aW5kZXggN2FiNDIyMGFlMTBkMTc3ZDUxOGUyODExYThmMWFkMzA3ODdkYmUzOS4uNTk3ZDNmMDBi
NGMzZjYzOTQyZTFkMzZjZmEwZTRkMTFiZTIyMTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCmluZGV4IDcxODI2YTRmNTMw
NzZhZmI4MWQxZGZmN2Q2ZmIzOTBkMGVhYjAzYjMuLjkzNmM5ODFjOTkyOTBkOGU3Y2VmOThiMTNi
NTY5M2NiZWIyMzc5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFNoYXJlZE9iamVjdC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBXZWJHTFNoYXJlZE9iamVj
dDo6aGFzR3JvdXBPckNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHRHcm91cCAm
JiBtX2NvbnRleHRHcm91cC0+aGFzQUNvbnRleHQoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIFdlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAor
R3JhcGhpY3NDb250ZXh0R0wqIFdlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0
R0woKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHRHcm91cCA/ICZtX2NvbnRleHRHcm91
cC0+Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKaW5kZXggYmRjZWM2ZTAyZTRhZjZm
MjI3ODNhM2U2MTEzOWMyMDQ0MTYwYTJmNS4uNWQxM2FmYTM4NDZhYTIxNTMwYzBhYmQ1MzkwYWEx
ZTc5OGU5ZTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFyZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIExvY2s7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTDsKIGNsYXNzIFdlYkdMQ29udGV4dEdyb3VwOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTsKIApAQCAtNjYsNyArNjYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhh
c0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3Jh
cGhpY3NDb250ZXh0R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBtX2NvbnRleHRHcm91cDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDE3OWQ0ODZhYjIyMjBmNGU5
NTJiNDE3ZGQ3NGQ2NzUyMGY1MGU1YjkuLjRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQy
ODI4ZjJkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3lu
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBXZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjdHgpCiAgICAgc2V0T2JqZWN0KC0xKTsKIH0KIAotdm9pZCBXZWJHTFN5bmM6OmRlbGV0
ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xTeW5jOjpk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
IGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7CiAgICAgY29udGV4dDNkLT5kZWxldGVTeW5jKG1fc3luYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IGMzZDMyNjRiODYwZGU5ZjdkZTczNDM1MGIz
MTA4ZWY5ZDNhN2MwMmYuLjU3YWUzOGEwMzA5MTQwNTE1MzFlMTQ3YmZmOTg0MTQ3OGRkMGRjZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC0yMCw3ICsyMCw3IEBA
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAtNTAsNyArNTAsNyBAQCBw
cml2YXRlOgogICAgIEdDR0xpbnQgbV9zeW5jU3RhdHVzID0geyBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdOQUxFRCB9OwogICAgIEdDR0xzeW5jIG1fc3luYzsKIAotICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAppbmRleCBhMzk4NmRhNTAy
YjllNGUwY2I2ZTYwODQ4OGUyNjA5ZWJmZjMxZWQ4Li42YTY5ZWMzZGFjYThkM2RjZmNlYjA2MDQx
OWM1NDU0MWU2ZmEzNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdlYkdMVGV4dHVyZTo6c2V0VGFy
Z2V0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBtYXhMZXZlbCkKICNlbmRpZiAvLyBVU0UoQU5H
TEUpCiB9CiAKLXZvaWQgV2ViR0xUZXh0dXJlOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1H
TE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3Jt
R0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShvYmplY3Qp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAppbmRleCBkZTI5
ZjhiODc1N2U3OTFjZGE5OWU4ZTAxOWViN2RiOGE1OWUyYjE4Li5lN2RiNzE4MTE5OGVjZGE2YjY2
NGJlYWQ3OWI1MzI0Yjk2ZmZjY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFRleHR1cmUuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJh
Z21hIG9uY2UKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFRl
eHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCmluZGV4IDAyNmViYjdhMmMxMzIyYmM5Y2Jh
MDVjODkxNDg4OWNlM2E4MzY4ZmUuLmE0NTQ5YmQ5NTg4YzNkMzllZmUxM2JlMTQ5NGViMjZkN2Iw
ZTk4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkdMVHJhbnNmb3JtRmVlZGJh
Y2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY3R4KQog
ICAgIG1fYm91bmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnJlc2l6ZShjdHgubWF4
VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnMoKSk7CiB9CiAKLXZvaWQgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjazo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0
KQordm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9i
amVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhv
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjay5oCmluZGV4IDdiOTk0YjMwNmRlNDQ2YWFmZTFmY2Q3MGRmYmIwN2JlYjVk
ZjUyOWIuLjQ5NjA3YjYyYjRmOGJmNTNkYzBmY2RjNjgwNjFmNTU5ZDViNTMxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBA
IC00NSwyOSArNDUsMjkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVHJhbnNmb3JtRmVl
ZGJhY2soKTsKIAogICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRl
KFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmKTsKLSAgICAKKwogICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BhdXNlZDsgfQotICAgIAorCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUp
IHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KICAgICB2b2lkIHNldFBhdXNlZChib29sIHBhdXNlZCkg
eyBtX3BhdXNlZCA9IHBhdXNlZDsgfQotICAgIAorCiAgICAgLy8gVGhlc2UgYXJlIHRoZSBpbmRl
eGVkIGJpbmQgcG9pbnRzIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVycy4KICAgICAvLyBS
ZXR1cm5zIGZhbHNlIGlmIGluZGV4IGlzIG91dCBvZiByYW5nZSBhbmQgdGhlIGNhbGxlciBzaG91
bGQKICAgICAvLyBzeW50aGVzaXplIGEgR0wgZXJyb3IuCiAgICAgdm9pZCBzZXRCb3VuZEluZGV4
ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR0NH
THVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKik7CiAgICAgYm9vbCBnZXRCb3VuZEluZGV4ZWRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlcihHQ0dMdWludCBpbmRleCwgV2ViR0xCdWZmZXIqKiBvdXRCdWZm
ZXIpOwotICAgIAorCiAgICAgYm9vbCB2YWxpZGF0ZVByb2dyYW1Gb3JSZXN1bWUoV2ViR0xQcm9n
cmFtKikgY29uc3Q7CiAKICAgICBib29sIGhhc0V2ZXJCZWVuQm91bmQoKSBjb25zdCB7IHJldHVy
biBvYmplY3QoKSAmJiBtX2hhc0V2ZXJCZWVuQm91bmQ7IH0KICAgICB2b2lkIHNldEhhc0V2ZXJC
ZWVuQm91bmQoKSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KLSAgICAKKwogICAgIFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbS5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0UHJvZ3JhbShjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xQcm9n
cmFtJik7Ci0gICAgCisKICAgICB2b2lkIHVuYmluZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tl
ciYsIFdlYkdMQnVmZmVyJik7Ci0gICAgCisKICAgICBib29sIGhhc0Vub3VnaEJ1ZmZlcnMoR0NH
THVpbnQgbnVtUmVxdWlyZWQpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVS
b290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKTsKQEAgLTc1LDgg
Kzc1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKLSAgICAKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29u
c3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CisKICAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fcGF1c2VkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRXZlckJlZW5Cb3VuZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3QuY3BwCmluZGV4IDRlYmRlYmNhYTczYWU1ODI4NGU3ZmExZDU3NGM0MWE1MmM2Yjcw
NTguLmYxODRhZDRhYjRjNmFkZGYwZTQxODk5YjkzMzk1ZDRhYWFhMmVlNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgCisKIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwg
VHlwZSB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVmVydGV4QXJyYXlP
YmplY3QoY29udGV4dCwgdHlwZSkpOwpAQCAtNTgsNyArNTgsNyBAQCBXZWJHTFZlcnRleEFycmF5
T2JqZWN0OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleAogICAgIHNldE9iamVjdCh0aGlzLT5jb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdM
KCktPmNyZWF0ZVZlcnRleEFycmF5KCkpOwogfQogCi12b2lkIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2
b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1H
TE9iamVjdCBvYmplY3QpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6
OkRlZmF1bHQ6CkBAIC02NywxMCArNjcsMTAgQEAgdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0
OjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXAKICAg
ICAgICAgY29udGV4dDNkLT5kZWxldGVWZXJ0ZXhBcnJheShvYmplY3QpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikKICAg
ICAgICAgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRl
eHQzZCk7Ci0gICAgCisKICAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV92ZXJ0ZXhBdHRyaWJTdGF0
ZSkgewogICAgICAgICBpZiAoc3RhdGUuYnVmZmVyQmluZGluZykKICAgICAgICAgICAgIHN0YXRl
LmJ1ZmZlckJpbmRpbmctPm9uRGV0YWNoZWQobG9ja2VyLCBjb250ZXh0M2QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCmluZGV4
IDQ3NGZiZDQzNTRhOGJjOTEwNDQxNGQzM2I2NmNkNmUzNGZlMTVmNjAuLmY5Y2NlZDE4YzZkNTVj
MzY1MWMzNzk5YjEwZjNhYWRlMGIwOWNmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2YXRlOgogICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUp
OwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2
b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAppbmRleCAxYzZiNjcyYTA3ZmEyZjQxNWE3NmM5MzgzYjQ0
MGYxNzJhMmIxODM0Li41YTkzNmIyODRmYzFmZGRmNmFmZWRlNzVlZmRjODYxNWU3NzJkZjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29u
dGV4dE9iamVjdC5oIgogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
LCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGUgPSAwOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7
CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1faGFzRXZlckJlZW5Cb3VuZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IDVmZTgxZGJmZjg4YmE0ZmM2YWJiODhlMjNhOTc4M2Vl
OGMxYWMxZDMuLjU4ZTU3NDdmMGEyMmUyYjVmZWY0YWI5NjVhMjVkMDk4MzI0NjM1NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTU5LDcgKzU5LDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKQogICAgIHJ1bkRlc3RydWN0b3IoKTsK
IH0KIAotdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9i
amVjdCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaAppbmRleCAwYzE1OWVhY2U5MjZiMDk1ZGI1ZWE2MzJkZTNhYTYxNDI1YzA3NmVm
Li4yZDBjYjc4ZjIwMTE2ZWNmYmE5ODI5Mzg2MjU1ZWIwYjkwNDY3MDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
CkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUygpOwogcHJpdmF0ZToKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwo
Y29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxh
dGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdU
Rjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3Qp
IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDY5Mzc3OGRm
NmUwMjBjYjAxODAxZTc1YzhlMzk5NTNkOWYxNzI2MmMuLjdhMDQyMGQ3ZmZhZmQ2NDhlNGI2ZDU3
MTQ4Y2QwMjQ3YjM4NGVmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAj
aW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggODY5NzM5
NWZhNGM4ZDA4NTFjN2I3NzkwNDA2ZTYxYzkxOGZjZWE1MC4uZTBhYzg4YmUxNjQwNTc3ODRkOTEy
MWE4N2Y4MDExYjM5ZTI1OWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjQyLDcgKzI0Miw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBjb3B5
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQsIEdDR0xl
bnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGNvbnN0
IG92ZXJyaWRlCisgICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0wmIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlv
blRleHR1cmUsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gYmFja2Vu
ZC0+Y29weVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRhcmdldCwgZGVzdGluYXRpb25UZXh0
dXJlLCBpbnRlcm5hbGZvcm1hdCwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAwZjVkYmJh
YmZiMTQ4ZGYwYWQyMzI3ZTA0ZWQzMTBmZDcxOGUxZWM5Li44YTJmZTZlZmRmNzk2YzFlOWEyZDRj
ZmYwNWY4N2MyZTdhNWY2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAgICAgICAg
Q09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRgogICAgIH07CiAKKyAgICAvLyBXZWJHTCBm
dW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisKICAg
ICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZp
b3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIHNwZWNpZmljYXRp
b24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CkBAIC0yOTAsMTEgKzI5Miw2IEBAIHB1YmxpYzoKICAg
ICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwog
Ci0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIK
LSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3Jt
aXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
aW50ICpwYXJhbXMpID0gMDsKLQogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwpAQCAtMzA4
LDYgKzMwNSw4NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcg
bG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCisgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xmbG9hdCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2
Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRl
eEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCB2b2lkKiogcG9pbnRlcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNv
bHVtbnMsIEdDR0xzaXplaSogcm93cywgdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB0ZXhJ
bWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIHZvaWQqKiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgaW50
KiBkYXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1h
dGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGlu
dCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xp
bnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBOT0xJTlQKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHZhbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIHZvaWQqKiBwYXJhbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXpl
aSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCB2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1Bp
eGVsQnVmZmVyT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQq
IHBhcmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdWludCogcGFyYW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dM
dWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlP
YmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpID0gMDsK
KworICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KKyNpZiAhVVNFKEFOR0xFKQorICAgIC8vIEVYVCBS
b2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCCisgICAgdmlydHVhbCB2
b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQq
IHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCogcGFyYW1zKSA9
IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNBTUQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW50ZWwoKSA9IDA7CkBA
IC0zMTksNzUgKzM5NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWls
dEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVz
dHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX3JvYnVz
dF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGJvb2xlYW4gKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFk
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVs
c1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZv
aWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCB2b2lkICoqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAq
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBh
cmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUlu
dGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGZsb2F0ICp2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotCi0gICAgdmly
dHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50
ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcAppbmRleCAxMGI1OTk3MDIzNjg3
NzcxYzZlZjQxNzA5NDUzMzYwZjVjMzE5YjBhLi5kY2JjOGJiNDA4NWViYmNkNmNjM2M1MzkzN2Rl
NDM3NzQ3MmI4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKQEAgLTE3MTksNyArMTcxOSw3IEBAIEFMV0FZU19JTkxJ
TkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoKQogICAgIH0KIAog
ICAgIC8vIE9ubHkgdGV4dHVyZXMgdXBsb2FkZWQgZnJvbSBET00gZWxlbWVudHMgb3IgSW1hZ2VE
YXRhIGNhbiBhbGxvdyBEc3RGb3JtYXQgIT0gU3JjRm9ybWF0LgotICAgIGNvbnN0IGJvb2wgc3Jj
Rm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhID0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YShTcmNGb3JtYXQp
OworICAgIGNvbnN0IGJvb2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRh
ID0gR3JhcGhpY3NDb250ZXh0R0w6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdl
RGF0YShTcmNGb3JtYXQpOwogICAgIGlmICghc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9y
SW1hZ2VEYXRhICYmIFNyY0Zvcm1hdCAhPSBEc3RGb3JtYXQpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3MzMsNyArMTczMyw3IEBAIEFMV0FZ
U19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoKQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoKCFHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6Omhhc0NvbG9yKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpoYXNDb2xvcihEc3RGb3JtYXQpKSAmJiBhbHBoYU9wICE9IEdyYXBoaWNz
Q29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcpIHsKKyAgICBpZiAoKCFHcmFwaGljc0NvbnRl
eHRHTDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0w6Omhhc0NvbG9y
KFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29udGV4dEdMOjpoYXNDb2xvcihEc3RGb3JtYXQpKSAm
JiBhbHBoYU9wICE9IEdyYXBoaWNzQ29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCmlu
ZGV4IGY0Y2RkNmU3ZmU4Nzc2Yzg4YjZmOTY2YmNiNDA0ZGQ2NDA4MzkwODAuLmM2ZjUxMjZlZGU1
Y2JkNmM3NTMyOTM4YmNjZTg2YzkzNzY1NDMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
ICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwZDFjYTkyZDYwNDVlYjM3YTc4ZDNlMTg5N2MyNmY0
MmI5Yzc2ZjNhLi5mNWU3NDNlZjMzMTIyNjA4MGMxZTE5NTFkODI1MGYzNmM4M2FlMTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFBhdGg7CiBjbGFz
cyBUZXh0UnVuOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CkBAIC0xOTcsNyArMTk3LDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKIAogICAgIFJlZlB0cjxHcmFkaWVudD4g
c3Ryb2tlR3JhZGllbnQ7CiAgICAgUmVmUHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47Ci0gICAg
CisKICAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxHcmFkaWVudDsKICAgICBSZWZQdHI8UGF0dGVy
bj4gZmlsbFBhdHRlcm47CiAKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UgewogCiAgICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Ci0gICAgCisKICAgICB2b2lkIGR1
bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBt
X3N0YXRlOwpAQCAtMjU5LDEzICsyNTksMTMgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQoUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQqKTsKLSAgICAKKwogICAgIHVzaW5nIEdyYXBoaWNzQ29udGV4
dEltcGxGYWN0b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0SW1wbD4oR3JhcGhpY3NDb250ZXh0Jik+OwogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSYpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0KCkgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRl
eHQoKTsKLSAgICAKKwogICAgIGVudW0gY2xhc3MgUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIDog
dWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIEludmFsaWRhdGluZ0NvbnRyb2xUaW50
cywKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNhdmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKTsKLSAgICAKKwogICAg
IHVuc2lnbmVkIHN0YWNrU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suc2l6ZSgpOyB9CiAK
ICAgICAvLyBUaGVzZSBkcmF3IG1ldGhvZHMgd2lsbCBkbyBib3RoIHN0cm9raW5nIGFuZCBmaWxs
aW5nLgpAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1h
Z2VCdWZmZXIgfTsKICAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwotICAgIAorCiAgICAgSW50UmVjdCBjbGlw
Qm91bmRzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncyk7CkBAIC02ODAsMTMgKzY4MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICht
X3NhdmVBbmRSZXN0b3JlKQogICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKICAgICB9Ci0g
ICAgCisKICAgICB+R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcigpCiAgICAgewogICAgICAgICBp
ZiAobV9zYXZlQW5kUmVzdG9yZSkKICAgICAgICAgICAgIG1fY29udGV4dC5yZXN0b3JlKCk7CiAg
ICAgfQotICAgIAorCiAgICAgdm9pZCBzYXZlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9z
YXZlQW5kUmVzdG9yZSk7CkBAIC03MDAsNyArNzAwLDcgQEAgcHVibGljOgogICAgICAgICBtX2Nv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
Jm1fY29udGV4dDsgfQogCiBwcml2YXRlOgpAQCAtNzE1LDcgKzcxNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAgICAgLCBtX3N0YWNrU2l6ZShjb250ZXh0
LnN0YWNrU2l6ZSgpKQogICAgIHsgfQotICAgIAorCiAgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRl
U3RhY2tDaGVja2VyKCkKICAgICB7CiAgICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkg
IT0gbV9zdGFja1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggYTE2ZjU4ZGIzYTQwYTRhZTU3ZmY5YTdh
YzExNThkNzg3MWEzZWZmMy4uZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTcz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmNwcApAQCAtNzM0LDg3ICs3MzQsNiBAQCBHQ0dMZW51bSBHcmFwaGljc0Nv
bnRleHRHTDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CiAKLSNpZiAh
VVNFKEFOR0xFKQotYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6cG9zc2libGVGb3JtYXRBbmRUeXBl
Rm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3Jt
YXQsIEdDR0xlbnVtJiB0eXBlKQotewotI2RlZmluZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJu
YWxGb3JtYXRNYWNybzogXAotICAgICAgICBmb3JtYXQgPSBmb3JtYXRNYWNybzsgXAotICAgICAg
ICB0eXBlID0gdHlwZU1hY3JvOyBcCi0gICAgICAgIGJyZWFrOwotCi0gICAgc3dpdGNoIChpbnRl
cm5hbEZvcm1hdCkgewotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdC
LCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JB
LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShMVU1JTkFOQ0VfQUxQSEEsIExVTUlOQU5DRV9BTFBIQSwgVU5TSUdORURfQllURSk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoTFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lH
TkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBI
QSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgs
IFJFRCwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjhfU05PUk0sIFJFRCwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjE2RiwgUkVELCBIQUxGX0ZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSMzJGLCBSRUQsIEZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
OFVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUjhJLCBSRURfSU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUjE2VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVO
U0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVE
X0lOVEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBS
RywgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4
X1NOT1JNLCBSRywgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcx
NkYsIFJHLCBIQUxGX0ZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
RzMyRiwgUkcsIEZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhV
SSwgUkdfSU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkc4SSwgUkdfSU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkcxNlVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lH
TkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lO
VEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdC
LCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdC
OCwgUkdCLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0I1NjUsIFJHQiwgVU5TSUdORURfU0hPUlRfNV82XzUpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQjhfU05PUk0sIFJHQiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUjExRl9HMTFGX0IxMEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8x
MUZfMTFGX1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwg
UkdCLCBVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQjE2RiwgUkdCLCBIQUxGX0ZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0IzMkYsIFJHQiwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQjhVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhJLCBSR0JfSU5URUdFUiwgQllURSk7Ci0g
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVO
U0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkks
IFJHQl9JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkdCMzJVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkdCMzJJLCBSR0JfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOCwgUkdCQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoU1JHQjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9C
WVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdC
QSwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdC
QSwgVU5TSUdORURfU0hPUlRfNV81XzVfMSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCQTQsIFJHQkEsIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0EyLCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8x
MF8xMF9SRVYpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJH
QkEsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEz
MkYsIFJHQkEsIEZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JB
OFVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQkE4SSwgUkdCQV9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxMF9BMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lO
VF8yXzEwXzEwXzEwX1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QTE2VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQkExNkksIFJHQkFfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkksIFJHQkFfSU5URUdFUiwgSU5UKTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBV
TlNJR05FRF9JTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NP
TVBPTkVOVDE2LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwg
VU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRI
X0NPTVBPTkVOVDI0LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05F
TlQsIEZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVO
Q0lMLCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgyNF9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdO
RURfSU5UXzI0XzgpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJG
X1NURU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9F
WFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVu
c2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIFVOU0lHTkVEX0JZVEUpOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0jdW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYgLy8gIVVTRShBTkdMRSkKLQogYm9v
bCBHcmFwaGljc0NvbnRleHRHTDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZv
aWQqIHBpeGVscywgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIGZsaXBZLCBB
bHBoYU9wIGFscGhhT3AsIERhdGFGb3JtYXQgc291cmNlRm9ybWF0LCB1bnNpZ25lZCBzb3VyY2VJ
bWFnZVdpZHRoLCB1bnNpZ25lZCBzb3VyY2VJbWFnZUhlaWdodCwgY29uc3QgSW50UmVjdCYgc291
cmNlSW1hZ2VTdWJSZWN0YW5nbGUsIGludCBkZXB0aCwgdW5zaWduZWQgc291cmNlVW5wYWNrQWxp
Z25tZW50LCBpbnQgdW5wYWNrSW1hZ2VIZWlnaHQsIFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsK
ICAgICBpZiAoIWltYWdlIHx8ICFwaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwMDdjOTNjMTBkMTdmNjgy
YzJhNTg2YmY3MTAxMTlhYWVjYzE0ZTQ1Li5hMmNjZjk2MmNkMTI2YzMzNTk4NjczMWRhYTNmZWYz
NmQyMGMyMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTkxOSw3ICs5MTksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQog
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUo
JmNsaWVudCk7IH0KIAotICAgIC8vID09PT09PT09PT0gV2ViR0wgMSBlbnRyeSBwb2ludHMuCisg
ICAgLy8gV2ViR0wgZnVuY3Rpb25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVy
c3RhbmRzLgogCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVy
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikgPSAwOwpAQCAtMTEwMyw5ICsxMTAzLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHZvaWQqIGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7CkBAIC0xMTE1LDM2ICsx
MTEyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwog
Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyczsgfQotICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7
IH0KLSAgICAvLyBDb25jZXNzaW9uIHRvIENhbnZhcyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVk
cyB0byBkeW5hbWljYWxseSBzZXQKLSAgICAvLyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1
ZSBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCBjbGVhcnMuCi0gICAgLy8gSW1wbGVtZW50YXRp
b25zIGdlbmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmls
eS4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0KICAg
ICAvLyBWZXJ0ZXhBcnJheU9qZWN0IGNhbGxzCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0
IGNyZWF0ZVZlcnRleEFycmF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhB
cnJheShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1Zl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZl
cnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAotI2lmIFVTRShPUEVOR0wpICYmIEVO
QUJMRShXRUJHTDIpCi0gICAgdmlydHVhbCB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dM
dWludCkgPSAwOwotI2VuZGlmCi0KLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1
cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1ldGhvZHMgaXQg
Y29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBjdXJy
ZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCi0gICAg
Ly8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lv
bnMoKSA9IDA7Ci0KICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCi0g
ICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBk
YXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NH
TGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIg
c2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dM
dWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCog
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgR0NH
TGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAKQEAgLTEyNDMsMTkg
KzEyMTksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEdDR0x1aW50IGdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKSA9IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCi0gICAg
dmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tCaW5kaW5nKSA9IDA7CiAKLSAgICAvLyB0ZXhTdWJJbWFnZTJEIHdpdGggcGl4ZWwgcGFj
ayBidWZmZXIsIGFuZCBzcmNEYXRhK29mZnNldCwgYXJlCi0gICAgLy8gc3VwcG9ydGVkIG9ubHkg
dmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5LgotCi0gICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwpAQCAtMTI3MCwxMCArMTIzNiwy
NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpID0gMDsKKyAgICAvLyBPdGhlciBmdW5j
dGlvbnMuCiAKLSAgICAvLyA9PT09PT09PT09IE5vbi1XZWJHTCBiYXNlZCBlbnRyeSBwb2ludHMu
CisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyczsgfQorICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7
IH0KKworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGluZyBzaXRlIHNob3VsZCBiZSBmaXhlZCwgdGhp
cyBicmVha3MgdGhlIFdlYkdMIHNwZWMKKyAgICAvLyB3cnQgcHJlc2VydmVEcmF3aW5nQnVmZmVy
ID09IGZhbHNlIGJlaGF2aW9yLgorICAgIC8vIENvbmNlc3Npb24gdG8gQ2FudmFzIGNhcHR1cmVT
dHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFtaWNhbGx5IHNldAorICAgIC8vIHByZXNlcnZlRHJh
d2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVyIHRvIGF2b2lkIGltcGxpY2l0IGNsZWFycy4KKyAg
ICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJhbGx5IGRvIG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRo
aXMgYml0IGFyYml0cmFyaWx5LgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKKworICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBu
b24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKKyAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlu
cyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQorICAgIC8vIGN1cnJlbnQgaGFy
ZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KKyAgICAvLyBkZXRl
cm1pbmUgdGhpcy4KKyAgICB2aXJ0dWFsIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSA9IDA7CiAKQEAg
LTEyOTEsMjEgKzEyNzEsNDMgQEAgcHVibGljOgogICAgIC8vIGdldEVycm9yIGluIHRoZSBvcmRl
ciB0aGV5IHdlcmUgYWRkZWQuCiAgICAgdmlydHVhbCB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdD
R0xlbnVtIGVycm9yKSA9IDA7CiAKKyAgICAvLyBSZWFkIHJlYWwgT3BlbkdMIGVycm9ycywgYW5k
IG1vdmUgdGhlbSB0byB0aGUgc3ludGhldGljCisgICAgLy8gZXJyb3IgbGlzdC4gUmV0dXJuIHRy
dWUgaWYgYXQgbGVhc3Qgb25lIGVycm9yIGlzIG1vdmVkLgorICAgIHZpcnR1YWwgYm9vbCBtb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpID0gMDsKIAorICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCwgY2Fs
bGVyIHNob3VsZCBrZWVwIHRyYWNrIG9mIGNoYW5nZWQgc3RhdGUuCisgICAgdmlydHVhbCB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKworICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQg
YmUgcmVtb3ZlZCwgY2FsbGVyIGlzIGludGVyZXN0ZWQgaW4gYnVmZmVyIGNsZWFyIHN0YXR1cyBh
bmQKKyAgICAvLyBzaG91bGQgdHJhY2sgdGhhdCBpbiBhIHZhcmlhYmxlIHRoYXQgdGhlIGNhbGxl
ciBob2xkcy4gQ2FsbGVyIHNob3VsZCByZWNlaXZlCisgICAgLy8gdGhlIHZhbHVlIGZyb20gcmVz
aGFwZSgpIGFuZCBkaWRDb21wb3NpdGUoKS4KKyAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJDb21wb3Np
dGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
R0NHTGJpdGZpZWxkKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKCkgY29uc3QgPSAwOworCisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSBy
ZW1vdmVkLCB0aGV5J3JlIHBhcnQgb2YgZHJhd2luZyBidWZmZXIgYW5kCisgICAgLy8gZGlzcGxh
eSBidWZmZXIgYWJzdHJhY3Rpb25zIHRoYXQgdGhlIGNhbGxlciBzaG91bGQgaG9sZCBzZXBhcmF0
ZSB0bworICAgIC8vIHRoZSBjb250ZXh0LgorICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
bWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9
IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhlIGxheWVyIHNo
b3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQorICAgIC8vIHByZXBhcmluZyBmb3IgZGlzcGxh
eSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdyZWUKKyAgICAv
LyBvbiB0aGUgY29udGVudC4KKyAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgp
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgPSAwOwor
CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIC8vIFJldHVybnMg
aW50ZXJmYWNlIGZvciBDViBpbnRlcmFjdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBwcmVz
ZW50LgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpID0gMDsKICNlbmRp
ZgogCi0jaWYgIVVTRShBTkdMRSkKLSAgICAvLyBIZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBp
eGVsPT0wIGNhc2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6ZWQgdG8gMC4KLSAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBubyBHTCBlcnJvciBpcyBzeW50aGVzaXplZC4KLSAgICAvLyBCeSBkZWZhdWx0LCBh
bGlnbm1lbnQgaXMgNCwgdGhlIE9wZW5HTCBkZWZhdWx0IHNldHRpbmcuCi0gICAgdmlydHVhbCBi
b29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50IGFsaWdubWVudCA9IDQpID0gIDA7Ci0jZW5kaWYKIAogICAgIEludFNpemUgZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fY3VycmVudFdpZHRo
LCBtX2N1cnJlbnRIZWlnaHQpOyB9CiAKQEAgLTEzMzUsMTAgKzEzMzcsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gICBJTlZBTElEX0VOVU0gaWYgZm9ybWF0L3R5cGUgaXMgaWxsZWdhbC4KICAgICBzdGF0
aWMgR0NHTGVudW0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgY29uc3QgUGl4ZWxTdG9yZVBhcmFtcyYsIHVuc2lnbmVkKiBpbWFnZVNpemVJbkJ5dGVz
LCB1bnNpZ25lZCogcGFkZGluZ0luQnl0ZXMsIHVuc2lnbmVkKiBza2lwU2l6ZUluQnl0ZXMpOwog
Ci0jaWYgIVVTRShBTkdMRSkKLSAgICBzdGF0aWMgYm9vbCBwb3NzaWJsZUZvcm1hdEFuZFR5cGVG
b3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1h
dCwgR0NHTGVudW0mIHR5cGUpOwotI2VuZGlmIC8vICFVU0UoQU5HTEUpCi0KICAgICAvLyBFeHRy
YWN0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIEltYWdlRGF0YSBpbnRvIHRoZSBwYXNzZWQg
VmVjdG9yLAogICAgIC8vIHBhY2tpbmcgdGhlIHBpeGVsIGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBn
aXZlbiBmb3JtYXQgYW5kIHR5cGUsCiAgICAgLy8gYW5kIG9iZXlpbmcgdGhlIGZsaXBZIGFuZCBw
cmVtdWx0aXBseUFscGhhIGZsYWdzLiBSZXR1cm5zIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggZjM1MWNmYjhkOGZl
MTZiNzY4ZjIzYTRkYTZiZGE3NDUwNWRkNjFmOS4uNDliNzlkODQ5ZTkyZjM5MjdmOGRlM2NjYjFh
MDNiODMxOGExZGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI3ByYWdtYSBvbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAppbmRleCBlNzM2YWY4MjBhNWNlZDYzYWU3NTE3NmEyOTk0MjMyYmRhZGYy
YTQ3Li5jNmY1NDJhZGM4OTMwNzkwYmEwZGNiNzNhYWZiMTYzMGI1YmJmOGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTIyLDcgKzIy
LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0xMDUsNyArMTA1
LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IGN1cnJlbnQgaW1wbGVtZW50YXRpb25zIG9m
IHRoaXMgbWV0aG9kIGhhdmUgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhleSBvbmx5IHdvcmsKICAg
ICAvLyB3aXRoIHRleHR1cmVzIHRoYXQgYXJlIFJHQiBvciBSR0JBIGZvcm1hdCwgYW5kIFVOU0lH
TkVEX0JZVEUgdHlwZS4KLSAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtLCBib29sLCBib29sKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0
LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKICAgICAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKaW5kZXggY2I1ODcyNTY3ZjA4ODNiNWJkMDJlMGVlY2I4Y2VmZGJlNzEwYThlYy4uNjA5OGM1
MmE3MDQxOTUyNTk3NmRjMmM0MjZhODM0OGM4YzY4MWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTM5LDcg
KzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsK
IGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTk4
LDggKzk4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBkZXN0Rm9ybWF0KSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29s
IGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVt
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBi
b29sLCBib29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggN2FhYTFlZmIzYTVlMzUz
NjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uODYxMzE5ZjM3NDRkYTRlODA3YTEzMmI5NGQzNmQ5
MzFlOWY1NjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWEKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyA0LjguMTAuMyBNSU1FIHR5
cGVzIC0gSW4gdGhlIGFic2VuY2Ugb2YgYSBzcGVjaWZpY2F0aW9uIHRvIHRoZSBjb250cmFyeSwg
dGhlIE1JTUUgdHlwZSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgotICAgIC8vIHdoZW4gdXNl
ZCB3aXRoIHBhcmFtZXRlcnMsIGUuZy4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9
dGhlb3JhIiwgaXMgYSB0eXBlIHRoYXQgdGhlIHVzZXIgYWdlbnQga25vd3MgCisgICAgLy8gd2hl
biB1c2VkIHdpdGggcGFyYW1ldGVycywgZS5nLiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Nv
ZGVjcz10aGVvcmEiLCBpcyBhIHR5cGUgdGhhdCB0aGUgdXNlciBhZ2VudCBrbm93cwogICAgIC8v
IGl0IGNhbm5vdCByZW5kZXIuCiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBl
KCkgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpKSB7CiAgICAgICAgIGlmICghcGFyYW1ldGVy
cy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSkKQEAgLTM3Miw3ICszNzIsNyBAQCBjb25zdCBNZWRp
YVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQ
bGF5ZXJGYWN0b3J5KgogICAgIGlmIChlbmdpbmVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBpZiAoIWN1cnJlbnQpIAorICAgIGlmICghY3VycmVudCkKICAgICAg
ICAgcmV0dXJuIGVuZ2luZXMuZmlyc3QoKS5nZXQoKTsKIAogICAgIGF1dG8gY3VycmVudEluZGV4
ID0gZW5naW5lcy5maW5kTWF0Y2hpbmcoW2N1cnJlbnRdIChhdXRvJiBlbmdpbmUpIHsKQEAgLTUy
Niw3ICs1MjYsNyBAQCBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0
QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdAogCiB2b2lkIE1lZGlhUGxheWVy
Ojpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJl
bnQpCiB7Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKICNkZWZpbmUgTUVESUFTT1VSQ0UgbV9tZWRpYVNvdXJjZQogI2Vsc2UKICNkZWZpbmUgTUVE
SUFTT1VSQ0UgMApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnByZXBhcmVG
b3JSZW5kZXJpbmcoKQogdm9pZCBNZWRpYVBsYXllcjo6Y2FuY2VsTG9hZCgpCiB7CiAgICAgbV9w
cml2YXRlLT5jYW5jZWxMb2FkKCk7Ci19ICAgIAorfQogCiB2b2lkIE1lZGlhUGxheWVyOjpwcmVw
YXJlVG9QbGF5KCkKIHsKQEAgLTY1Miw3ICs2NTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjprZXlB
ZGRlZCgpCiB9CiAKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IAogdm9pZCBNZWRpYVBsYXllcjo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5z
dGFuY2UpCkBAIC03NjQsNyArNzY0LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXI6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtTGF5
ZXIoKTsKIH0KLSAgICAKKwogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAog
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVWaWRlb0Z1bGxzY3Jl
ZW5MYXllcigpCkBAIC05NDgsNyArOTQ4LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6ZGlkTG9hZGlu
Z1Byb2dyZXNzKCkKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6c2V0U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQoteyAKK3sKICAgICBtX3NpemUgPSBzaXplOwogICAgIG1fcHJpdmF0ZS0+c2V0U2l6
ZShzaXplKTsKIH0KQEAgLTk4MCw3ICs5ODAsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpwYWludChH
cmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBtX3ByaXZhdGUtPnBh
aW50KHAsIHIpOwogfQogCi1ib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xP
YmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZs
aXBZKTsKIH0KQEAgLTk5Miw3ICs5OTIsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMgLSBUaGUgY2Fu
UGxheVR5cGUodHlwZSkgbWV0aG9kIG11c3QgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgaWYgdHlw
ZSBpcyBhIHR5cGUgdGhhdCB0aGUgCisgICAgLy8gNC44LjEwLjMgTUlNRSB0eXBlcyAtIFRoZSBj
YW5QbGF5VHlwZSh0eXBlKSBtZXRob2QgbXVzdCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBpZiB0
eXBlIGlzIGEgdHlwZSB0aGF0IHRoZQogICAgIC8vIHVzZXIgYWdlbnQga25vd3MgaXQgY2Fubm90
IHJlbmRlciBvciBpcyB0aGUgdHlwZSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgogICAgIEF0
b21TdHJpbmcgY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7
CiAgICAgaWYgKGNvbnRhaW5lclR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpKQpAQCAt
MTAxMiw3ICsxMDEyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQKICAgICAgICAgZW5naW5l
LT5nZXRTdXBwb3J0ZWRUeXBlcyhlbmdpbmVUeXBlcyk7CiAgICAgICAgIHR5cGVzLmFkZChlbmdp
bmVUeXBlcy5iZWdpbigpLCBlbmdpbmVUeXBlcy5lbmQoKSk7CiAgICAgfQotfSAKK30KIAogYm9v
bCBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKQogewpAQCAtMTE3Myw3ICsxMTczLDcgQEAgc3Rh
dGljIHZvaWQgYWRkVG9IYXNoKEhhc2hTZXQ8VD4mIHRvSGFzaCwgSGFzaFNldDxUPiYmIGZyb21I
YXNoKQogICAgIGVsc2UKICAgICAgICAgdG9IYXNoLmFkZChmcm9tSGFzaC5iZWdpbigpLCBmcm9t
SGFzaC5lbmQoKSk7CiB9Ci0gICAgCisKIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
TWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
ICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKQEAgLTE0ODEsNyAr
MTQ4MSw3IEBAIFN0cmluZyBNZWRpYVBsYXllcjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNr
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0gICAgCisKICAgICByZXR1cm4gbV9wcml2YXRlLT5sYW5ndWFnZU9mUHJpbWFyeUF1
ZGlvVHJhY2soKTsKIH0KIApAQCAtMTQ5Nyw3ICsxNDk3LDcgQEAgdW5zaWduZWQgbG9uZyBsb25n
IE1lZGlhUGxheWVyOjpmaWxlU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIAorCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZmlsZVNpemUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uNTlhOWVl
MjdjMjNkMWUyYTJmNjJlYjZmZGE5YjFmY2JjNzUxYjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwogY2xhc3MgQ0RNSW5zdGFu
Y2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xhc3MgTGVnYWN5Q0RNOwpAQCAtMTc5
LDcgKzE3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEEgY2hhcmFjdGVyaXN0aWMgb2YgdGhlIG1l
ZGlhIGZpbGUsIGVnLiB2aWRlbywgYXVkaW8sIGNsb3NlZCBjYXB0aW9ucywgZXRjLCBoYXMgY2hh
bmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQo
KSB7IH0KLSAgICAKKwogICAgIC8vIHdoZXRoZXIgdGhlIHJlbmRlcmluZyBzeXN0ZW0gY2FuIGFj
Y2VsZXJhdGUgdGhlIGRpc3BsYXkgb2YgdGhpcyBNZWRpYVBsYXllci4KICAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKCkgeyByZXR1cm4gZmFsc2U7
IH0KIApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcldhaXRpbmdG
b3JLZXlDaGFuZ2VkKCkgeyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCkgeyB9OwogI2VuZGlmCkBAIC00MjgsNyAr
NDI4LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG1heSBuZWVk
IHRvIGJlIHJlc2l6ZWQgdG8gdG8gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHNvdXJjZSB0ZXh0dXJl
IG9yIHJlLWRlZmluZWQgdG8gdGhlIHJlcXVpcmVkIGludGVybmFsRm9ybWF0LgogICAgIC8vIFRo
ZSBjdXJyZW50IHJlc3RyaWN0aW9ucyByZXF1aXJlIHRoYXQgZm9ybWF0IHNob3VkIGJlIFJHQiBv
ciBSR0JBLCB0eXBlIHNob3VsZCBiZSBVTlNJR05FRF9CWVRFIGFuZCBsZXZlbCBzaG91bGQgYmUg
MC4gSXQgbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlLgogCi0gICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4
dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFkpOwogCiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlhMzQz
MTE0MDM4YjBiOTEuLmFhZmY0MTk3ZDFlNmNhYWZkMjc1NWMwMzI0ZDViN2Q3NjU2NzIxOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFn
bWEgb25jZQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChwcmVwYXJlKQog
ICAgICAgICAgICAgcHJlcGFyZUZvclJlbmRlcmluZygpOwogICAgIH0KLSAgICAKKwogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKSA9IDA7ICAgIAorICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJp
bmdQb2xpY3kpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIHsgfQogCi0gICAgdmlydHVhbCBib29s
IGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgCisgICAgdmly
dHVhbCBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIHsgfQogCiAgICAg
dmlydHVhbCBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOyB9CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywg
cik7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdD
R0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dM
aW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2Fk
KE1lZGlhUGxheWVyOjpQcmVsb2FkKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAppbmRleCAx
M2ZhZjVkYjY0ZmZiMjg2YmU2YWQ5NTc5NTA5NWZjYzkzZjMzMzk0Li4xYzhiYzQyNTUwZjFjMWQ5
NWMzMDgyZjY3Mzc2YTU2OTUwNmJmYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCkBAIC0x
NDgsMjEgKzE0OCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFi
bGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRy
dWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlYWRuUGl4ZWxzRVhUKGludCwgaW50
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIHZv
aWQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIGZsb2F0ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBpbnQg
KikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxv
bmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5z
aWduZWQgbG9uZyBmaWx0ZXIpCiB7CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBzdXBw
b3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KQEAgLTQ2Miw2ICs0NDcsOCBA
QCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldgogICAgICAgICByZXR1cm47CiAKICAgICBnbDo6Q29t
cHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOworICAg
IG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKQEAgLTQ3MCw2ICs0NTcsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIGdsOjpDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBtX2Nv
bnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1
cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCA0
NmFhYzlmMjFlZTI3Y2M3NWEwOGNmN2MxYjc1YTEwYWU0NTcyODIwLi43NTYyZTk4NmMzODMwN2Qx
ODU0ZDQ4MjM4OTgyNzZhYmE3NjVhZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTYzLDEx
ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKLSAgICAv
LyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCi0gICAg
dm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgdm9pZCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdD
R0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0KICAgICBib29sIGlzTlZJRElBKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc05WSURJQTsg
fQogICAgIGJvb2wgaXNBTUQoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzQU1EOyB9CiAgICAgYm9v
bCBpc0ludGVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ludGVsOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDI2NzQ3YmMwMmE5MjFjMzAzMGI1MDJkYWVjM2ExMzVl
ZTZlZjMwYzUuLjk1MTVhNGM0ZWEwMjZhNjhjMThkZWYwMWExYjA2MmQyNGY1ZTdmMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yMDQ5LDI0ICsyMDQ5LDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1f
c3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKLSAgICBtX3N0
YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0gICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVT
ZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQogUGxhdGZv
cm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjI4NiwxNiArMjI2OCw2IEBAIEdDR0x1
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtQmxvY2tJbmRleChw
cm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogcGFyYW1zKQotewotICAgIFJFTEVBU0VfTE9HKFdlYkdMLCAiVXNlIGdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUgaW5zdGVhZC4iKTsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0odW5pZm9y
bUJsb2NrSW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHBhcmFtcyk7Ci19Ci0KIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTI0NTgsMzQgKzI0MzAs
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbAogICAgIGdsOjpCaW5kQnVmZmVyQmFzZSh0YXJn
ZXQsIGluZGV4LCBidWZmZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNh
Z2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQotewotICAgIFVOVVNFRF9Q
QVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
dXNhZ2UpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0Qnl0ZU9mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVP
ZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQg
bGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRzdE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dM
aW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBH
Q0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQg
bWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CkBAIC0yOTIwLDU4ICsyODY0LDYgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKLXsKLSAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9Q
QVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVT
RURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKLSAgICBVTlVTRURf
UEFSQU0oaW1hZ2VTaXplKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKLXsKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVO
VVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAg
ICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTSh5b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNF
RF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9Q
QVJBTShpbWFnZVNpemUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotfQotCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qg
dm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVy
cmlkZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2
ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
LSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92
ZXJyaWRlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihH
Q0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CkBAIC0zMDYwLDI5ICsyOTUyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmEKICAgICBnbDo6
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFS
QU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShm
b3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwot
ICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNF
RF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLX0KLQogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzQ29udGV4dEdMQ1Yq
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCAzOGZjOWYwOWNhZWFiZDY0ZDU2ZDQ1MTZlNGJkOWM5OTJlMjJlN2ViLi5hMjI3ZTkwMWEw
ZTY2YWIyYmQ2M2IzMmJlNjc2ZTJkNGM4MGE0NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0yNTQsNyArMjU0LDcgQEAgcHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKCk7CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGYwNTc2MGUxYzk2ZDhmZjlkZGNiMWJl
ZDExMWFkYzczNjExYmRhZjEuLjNiZTcxNDAwODg4YmQ4ZDQ0ODg3ZTNlNTYzZjNkMmMwZjYzZTlj
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTQyLDggKzQyLDggQEAKICNpbXBv
cnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0wuaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAjaW1wb3J0
ICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCIKICNpbXBvcnQgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBXYWwKICAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9y
UGF0aChwYXRoKTsKICAgICBpZiAoIWFzc2V0Q2FjaGUpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxLZXlzXSkgewogICAg
ICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0Q2FjaGUgbGFzdE1vZGlmaWVkRGF0ZU9m
RW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgW2Fzc2V0Q2Fj
aGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKQEAgLTM4MywyOCArMzgzLDI4IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0
cmluZyYgcGF0aCwgV2FsCiAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6YmFz
ZVVSTCBlcnJvcjpuaWxdOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgTlNB
cnJheSAqcHJvcGVydHlLZXlzID0gQFtOU1VSTE5hbWVLZXksIE5TVVJMQ29udGVudE1vZGlmaWNh
dGlvbkRhdGVLZXksIE5TVVJMSXNSZWd1bGFyRmlsZUtleV07CiAgICAgTlNEaXJlY3RvcnlFbnVt
ZXJhdG9yICplbnVtZXJhdG9yID0gW2ZpbGVNYW5hZ2VyIGVudW1lcmF0b3JBdFVSTDpiYXNlVVJM
IGluY2x1ZGluZ1Byb3BlcnRpZXNGb3JLZXlzOgogICAgICAgICBwcm9wZXJ0eUtleXMgb3B0aW9u
czpOU0RpcmVjdG9yeUVudW1lcmF0aW9uU2tpcHNTdWJkaXJlY3RvcnlEZXNjZW5kYW50cwogICAg
ICAgICBlcnJvckhhbmRsZXI6bmlsXTsKLSAgICAKKwogICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gdXJsc1RvRGVsZXRlID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgZm9yIChOU1VSTCAqZmlsZVVSTCA6IGVudW1lcmF0b3IpIHsKICAgICAgICAgTlNE
aWN0aW9uYXJ5ICpmaWxlQXR0cmlidXRlcyA9IFtmaWxlVVJMIHJlc291cmNlVmFsdWVzRm9yS2V5
czpwcm9wZXJ0eUtleXMgZXJyb3I6bmlsXTsKLSAgICAKKwogICAgICAgICBpZiAoIVtmaWxlQXR0
cmlidXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghW2ZpbGVBdHRyaWJ1dGVz
W05TVVJMSXNSZWd1bGFyRmlsZUtleV0gYm9vbFZhbHVlXSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKKwogICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoZmlsZUF0dHJpYnV0
ZXNbTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleV0pIDw9IG1vZGlmaWVkU2luY2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgW3VybHNUb0RlbGV0ZSBh
ZGRPYmplY3Q6ZmlsZVVSTF07CiAgICAgfQotICAgIAorCiAgICAgZm9yIChOU1VSTCAqZmlsZVVS
TCBpbiB1cmxzVG9EZWxldGUuZ2V0KCkpCiAgICAgICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVt
QXRVUkw6ZmlsZVVSTCBlcnJvcjpuaWxdOwogfQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCgpCiAgICAgaWYgKG1f
YXZQbGF5ZXJJdGVtKSB7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gaXRlbUtW
T1Byb3BlcnRpZXMoKSkKICAgICAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSByZW1vdmVP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOwotICAgICAg
ICAKKwogICAgICAgICBtX2F2UGxheWVySXRlbSA9IG5pbDsKICAgICB9CiAgICAgaWYgKG1fYXZQ
bGF5ZXIpIHsKQEAgLTY5MSwyOSArNjkxLDI5IEBAIHN0YXRpYyBjb25zdCBOU0FycmF5ICptZWRp
YURlc2NyaXB0aW9uRm9yS2luZChQbGF0Zm9ybVRleHRUcmFja0RhdGE6OlRyYWNrS2luZCBrCiAK
ICAgICByZXR1cm4gQFsgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5IF07CiB9Ci0gICAgCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCiB7CiAgICAgdHJhY2tN
b2RlQ2hhbmdlZCgpOwogfQotICAgIAorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKQogewogICAgIGNvbnN0IGF1dG8m
IG91dE9mQmFuZFRyYWNrU291cmNlcyA9IHBsYXllcigpLT5vdXRPZkJhbmRUcmFja1NvdXJjZXMo
KTsKLSAgICAKKwogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogbV90ZXh0VHJhY2tzKSB7CiAg
ICAgICAgIGlmICh0ZXh0VHJhY2stPnRleHRUcmFja0NhdGVnb3J5KCkgIT0gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIFJlZlB0cjxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFja1By
aXZhdGUgPSBzdGF0aWNfY2FzdDxPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKj4odGV4dFRy
YWNrLmdldCgpKTsKICAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IGN1
cnJlbnRPcHRpb24gPSB0cmFja1ByaXZhdGUtPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7Ci0gICAg
ICAgIAorCiAgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBvdXRPZkJhbmRUcmFja1NvdXJjZXMp
IHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdW5pcXVlSUQgPSBTdHJpbmc6
Om51bWJlcih0cmFjay0+dW5pcXVlSWQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBpZiAoIVtbY3VycmVudE9wdGlvbi5nZXQoKSBvdXRPZkJhbmRJZGVu
dGlmaWVyXSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKXVuaXF1ZUlELmdldCgpXSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpN
b2RlOjpIaWRkZW47CiAgICAgICAgICAgICBzd2l0Y2ggKHRyYWNrLT5tb2RlKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgUGxhdGZvcm1UZXh0VHJhY2tEYXRhOjpUcmFja01vZGU6OkhpZGRlbjoKQEAg
LTcyNiw3ICs3MjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKQogICAgICAgICAgICAgICAgIG1vZGUgPSBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlOjpTaG93aW5nOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHRleHRUcmFjay0+
c2V0TW9kZShtb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03NjksNyAr
NzY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVB
VkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIHBsYXllcigpLT5nZXRSYXdDb29raWVz
KHVybCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIG9wdGlvbnMgPSBXVEZN
b3ZlKG9wdGlvbnMpLCB1cmxdIChhdXRvIGNvb2tpZXMpIG11dGFibGUgewogICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBpZiAo
Y29va2llcy5zaXplKCkpIHsKICAgICAgICAgICAgIGF1dG8gbnNDb29raWVzID0gY3JlYXRlTlNB
cnJheShjb29raWVzLCBbXSAoYXV0byYgY29va2llKSAtPiBOU0hUVFBDb29raWUgKiB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvb2tpZTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3Qg
VVJMJiB1cmwsIFJldAogCiAgICAgYm9vbCB1c2VQZXJzaXN0ZW50Q2FjaGUgPSBwbGF5ZXIoKS0+
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7CiAgICAgW29wdGlvbnMgc2V0T2JqZWN0OkAoIXVz
ZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVL
ZXldOwotICAgIAorCiAgICAgaWYgKHVzZVBlcnNpc3RlbnRDYWNoZSkgewogICAgICAgICBpZiAo
YXV0byogYXNzZXRDYWNoZSA9IGVuc3VyZUFzc2V0Q2FjaGVFeGlzdHNGb3JQYXRoKHBsYXllcigp
LT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkpKQogICAgICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0
OmFzc2V0Q2FjaGUgZm9yS2V5OkFWVVJMQXNzZXRDYWNoZUtleV07CkBAIC0xMDA2LDcgKzEwMDYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxh
eWVySXRlbSgpCiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAotICAgIC8vIENyZWF0
ZSB0aGUgcGxheWVyIGl0ZW0gc28gd2UgY2FuIGxvYWQgbWVkaWEgZGF0YS4gCisgICAgLy8gQ3Jl
YXRlIHRoZSBwbGF5ZXIgaXRlbSBzbyB3ZSBjYW4gbG9hZCBtZWRpYSBkYXRhLgogICAgIG1fYXZQ
bGF5ZXJJdGVtID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbUluc3RhbmNlKCkgaW5p
dFdpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldKTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0
b3I6QHNlbGVjdG9yKGRpZEVuZDopIG5hbWU6QVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5v
dGlmaWNhdGlvbiBvYmplY3Q6bV9hdlBsYXllckl0ZW0uZ2V0KCldOwpAQCAtMTE2NSw3ICsxMTY1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjoKICAgICAgICAgdmlkZW9HcmF2aXR5ID0gQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAKKwogICAgIGlmIChbbV92aWRlb0xheWVyIHZpZGVvR3Jh
dml0eV0gPT0gdmlkZW9HcmF2aXR5KQogICAgICAgICByZXR1cm47CiAKQEAgLTExODMsNyArMTE4
Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9G
dWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwog
I2VuZGlmCiB9Ci0gICAgCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKQogewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKQpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgU3RyaW5n
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmFjY2Vzc0xvZygpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Ci0gICAgCisKICAgICBBVlBsYXllckl0ZW1BY2Nlc3NMb2cgKmxvZyA9IFttX2F2UGxheWVySXRl
bS5nZXQoKSBhY2Nlc3NMb2ddOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbG9nU3RyaW5nID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6W2xvZyBleHRlbmRlZExvZ0Rh
dGFdIGVuY29kaW5nOltsb2cgZXh0ZW5kZWRMb2dEYXRhU3RyaW5nRW5jb2RpbmddXSk7CiAKQEAg
LTEyMzMsMTIgKzEyMzMsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpkaWRFbmQoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
bGF0Zm9ybVNldFZpc2libGUoYm9vbCBpc1Zpc2libGUpCiB7CiAgICAgW0NBVHJhbnNhY3Rpb24g
YmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107ICAgIAor
ICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAgaWYgKG1fdmlk
ZW9MYXllcikKICAgICAgICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRIaWRkZW46IWlzVmlzaWJs
ZV07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KLSAgICAKKwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybVBsYXkoKQogewogICAgIGlmICgh
bWV0YURhdGFBdmFpbGFibGUoKSkKQEAgLTEyNzIsOSArMTI3Miw5IEBAIE1lZGlhVGltZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9uKCkgY29uc3QK
ICAgICAvLyBhbnN3ZXIgc3luY2hyb25vdXNseS4KICAgICBpZiAoIW1fYXZBc3NldCB8fCBhc3Nl
dFN0YXR1cygpIDwgTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzTG9hZGVkKQogICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOwotICAgIAorCiAgICAgQ01UaW1lIGNtRHVyYXRp
b247Ci0gICAgCisKICAgICAvLyBDaGVjayB0aGUgQVZJdGVtIGlmIHdlIGhhdmUgb25lIGFuZCBp
dCBoYXMgbG9hZGVkIGR1cmF0aW9uLCBzb21lIGFzc2V0cyBuZXZlciByZXBvcnQgZHVyYXRpb24u
CiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtICYmIHBsYXllckl0ZW1TdGF0dXMoKSA+PSBNZWRpYVBs
YXllckFWUGxheWVySXRlbVN0YXR1c1JlYWR5VG9QbGF5KQogICAgICAgICBjbUR1cmF0aW9uID0g
W21fYXZQbGF5ZXJJdGVtLmdldCgpIGR1cmF0aW9uXTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Vla1RvVGltZShjb25zdCBN
ZWRpYVRpbWUmIHRpbWUsIGNvbnN0CiAgICAgLy8gW0FWUGxheWVySXRlbSBzZWVrVG9UaW1lXSB3
aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0b2xlcmFuY2VCZWZvcmUgaXMgbmVnYXRpdmUuCiAg
ICAgaWYgKENNVGltZUNvbXBhcmUoY21CZWZvcmUsIGtDTVRpbWVaZXJvKSA8IDApCiAgICAgICAg
IGNtQmVmb3JlID0ga0NNVGltZVplcm87Ci0gICAgCisKICAgICBhdXRvIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpOwogCiAgICAgc2V0U2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVz
KGZhbHNlKTsKQEAgLTE0NzQsNyArMTQ3NCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybU1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAgICAg
ICAgIENNVGltZVJhbmdlIHRpbWVSYW5nZSA9IFt0aGlzUmFuZ2VWYWx1ZSBDTVRpbWVSYW5nZVZh
bHVlXTsKICAgICAgICAgaWYgKCFDTVRJTUVSQU5HRV9JU19WQUxJRCh0aW1lUmFuZ2UpIHx8IENN
VElNRVJBTkdFX0lTX0VNUFRZKHRpbWVSYW5nZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgCisKICAgICAgICAgTWVkaWFUaW1lIGVuZE9mUmFuZ2UgPSBQQUw6OnRvTWVkaWFUaW1l
KENNVGltZVJhbmdlR2V0RW5kKHRpbWVSYW5nZSkpOwogICAgICAgICBpZiAobWF4VGltZVNlZWth
YmxlIDwgZW5kT2ZSYW5nZSkKICAgICAgICAgICAgIG1heFRpbWVTZWVrYWJsZSA9IGVuZE9mUmFu
Z2U7CkBAIC0xNDkyLDEzICsxNDkyLDEzIEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybU1heFRpbWVMb2FkZWQoKSBjb25zdAogICAgICAgICBD
TVRpbWVSYW5nZSB0aW1lUmFuZ2UgPSBbdGhpc1JhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV07
CiAgICAgICAgIGlmICghQ01USU1FUkFOR0VfSVNfVkFMSUQodGltZVJhbmdlKSB8fCBDTVRJTUVS
QU5HRV9JU19FTVBUWSh0aW1lUmFuZ2UpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIE1lZGlhVGltZSBlbmRPZlJhbmdlID0gUEFMOjp0b01lZGlhVGltZShDTVRp
bWVSYW5nZUdldEVuZCh0aW1lUmFuZ2UpKTsKICAgICAgICAgaWYgKG1heFRpbWVMb2FkZWQgPCBl
bmRPZlJhbmdlKQogICAgICAgICAgICAgbWF4VGltZUxvYWRlZCA9IGVuZE9mUmFuZ2U7CiAgICAg
fQogCi0gICAgcmV0dXJuIG1heFRpbWVMb2FkZWQ7ICAgCisgICAgcmV0dXJuIG1heFRpbWVMb2Fk
ZWQ7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp0b3RhbEJ5dGVzKCkgY29uc3QKQEAgLTE1MzQsNyArMTUzNCw3IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6QXNzZXRTdGF0dXMgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6CiAKICAgICAgICAgaWYgKGtleVN0YXR1cyA8IEFWS2V5VmFsdWVTdGF0
dXNMb2FkZWQpCiAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzTG9h
ZGluZzsvLyBBdCBsZWFzdCBvbmUga2V5IGlzIG5vdCBsb2FkZWQgeWV0LgotICAgICAgICAKKwog
ICAgICAgICBpZiAoa2V5U3RhdHVzID09IEFWS2V5VmFsdWVTdGF0dXNGYWlsZWQpCiAgICAgICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFzc2V0U3RhdHVzRmFpbGVkOyAvLyBBdCBsZWFzdCBv
bmUga2V5IGNvdWxkIG5vdCBiZSBsb2FkZWQuCiAKQEAgLTE4NTAsNyArMTg1MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZp
dHkoKQogI2VuZGlmCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsgICAgCisgICAgW0NBVHJhbnNhY3Rpb24gc2V0
RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICBOU1N0cmluZyogZ3Jhdml0eSA9IHNob3VsZE1haW50
YWluQXNwZWN0UmF0aW8oKSA/IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgOiBBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplOwogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0VmlkZW9H
cmF2aXR5OmdyYXZpdHldOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CkBAIC0yMDgyLDcg
KzIwODIsNyBAQCB2b2lkIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJhY2tzQW5kT2xk
SXRlbXMoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMqCiAKICAgICByZXBsYWNlbWVudEl0ZW1z
LmFwcGVuZFZlY3RvcihhZGRlZEl0ZW1zKTsKICAgICBvbGRJdGVtcy5zd2FwKHJlcGxhY2VtZW50
SXRlbXMpOwotICAgIAorCiAgICAgZm9yIChhdXRvJiByZW1vdmVkSXRlbSA6IHJlbW92ZWRJdGVt
cykKICAgICAgICAgKHBsYXllci0+KnJlbW92ZWRGdW5jdGlvbikoKnJlbW92ZWRJdGVtKTsKIApA
QCAtMjMyNCw3ICsyMzI0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogfQogCi1ib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1
cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGZsaXBZKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKIApAQCAtMjUzNyw3
ICsyNTM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9j
ZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVt
b3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgICAgICBpZiAocmVt
b3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENhcHRpb24pCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24+IGN1cnJlbnRPcHRpb247CiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAg
ICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRleHRUcmFja0NhdGVnb3J5
KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKSB7CkBAIC0yNTQ5LDcg
KzI1NDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nl
c3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQogICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQz4gdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQyo+KHJlbW92ZWRUZXh0VHJhY2tzW2kgLSAxXS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgY3VycmVudE9wdGlvbiA9IHRyYWNrLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChbY3VycmVu
dE9wdGlvbi5nZXQoKSBpc0VxdWFsOm9wdGlvbl0pIHsKICAgICAgICAgICAgICAgICByZW1vdmVk
VGV4dFRyYWNrcy5yZW1vdmUoaSAtIDEpOwogICAgICAgICAgICAgICAgIG5ld1RyYWNrID0gZmFs
c2U7CkBAIC0yNTk5LDcgKzI1OTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmZsdXNoQ3VlcygpCiAKICAgICBpZiAoIW1fY3VycmVudFRleHRUcmFjaykKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9jdXJyZW50VGV4dFRyYWNrLT5yZXNldEN1ZVZh
bHVlcygpOwogfQogCkBAIC0yNzM2LDcgKzI3MzYsNyBAQCBNZWRpYVBsYXllcjo6V2lyZWxlc3NQ
bGF5YmFja1RhcmdldFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2ly
ZQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGU6OlRh
cmdldFR5cGVBaXJQbGF5OwogI2VuZGlmCiB9Ci0gICAgCisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIo
QVZQbGF5ZXIgKnBsYXllcikKIHsKQEAgLTMwMDgsNyArMzAwOCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVy
OjpCdWZmZXJpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYnVmZmVyaW5nUG9saWN5ID0gcG9s
aWN5OwotICAgIAorCiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNzJmYTBmZGIyYjg4OGRjYTEyYTY4ZWJmYThiMzRk
YzNjMWQzNzgxOS4uMTJmYjIwMzdjNDc1M2ViMDUzMGVjYjYzZjM0YzU0ODgxMDY5MzU0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY1RleHRUcmFja0JvdW5kcygpIG92ZXJyaWRlOwot
ICAgIAorCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAjaWYgSEFWRShBVlNU
UkVBTVNFU1NJT04pCiAgICAgYm9vbCBoYXNTdHJlYW1TZXNzaW9uKCkgeyByZXR1cm4gbV9zdHJl
YW1TZXNzaW9uOyB9CkBAIC0yMTksNyArMjE5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0
ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICBib29sIGNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBvdmVycmlkZTsKKyAgICBib29sIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGNhbGxlZCB3aGVuIHRoZSByZW5k
ZXJpbmcgc3lzdGVtIGZsaXBzIHRoZSBpbnRvIG9yIG91dCBvZiBhY2NlbGVyYXRlZCByZW5kZXJp
bmcgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBlN2I0NTU4YTk4MzFmY2Ux
MGI5OTFiNTZhZmY0YWY4MjQ2ZmQ5YTNjLi4wMjg0N2M3NjBhYzMyNjJhNjQ4ZDBhNDcwZTUxMDQ4
YzExYjE3NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMyw4ICszMyw4IEBA
CiAjaW1wb3J0ICJBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmgiCiAjaW1wb3J0ICJD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5o
IgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMQ1YuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0
ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKQEAgLTgxLDcgKzgxLDcgQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6U2Vla1N0YXQKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlv
blZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KLSAgICAKKwogI3ByYWdt
YSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMKIApAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRp
YVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyAgICAg
ICAgCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQz4ocGxheWVyKTsKICAgICB9CiAKICAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3Qg
ZmluYWwKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0
LCBpbWFnZVJlY3QpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVt
IG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGZsaXBZKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwg
UGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICAv
LyBXZSBoYXZlIGJlZW4gYXNrZWQgdG8gcGFpbnQgaW50byBhIFdlYkdMIGNhbnZhcywgc28gdGFr
ZSB0aGF0IGFzIGEgc2lnbmFsIHRvIGNyZWF0ZQogICAgIC8vIGEgZGVjb21wcmVzc2lvbiBzZXNz
aW9uLCBldmVuIGlmIHRoYXQgbWVhbnMgdGhlIG5hdGl2ZSB2aWRlbyBjYW4ndCBhbHNvIGJlIGRp
c3BsYXllZApAQCAtMTIzMCwxMiArMTIzMCwxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbgog
ewogICAgIHJldHVybiBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigp
OwogfQotICAgIAorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c3luY1RleHRUcmFja0JvdW5kcygpCiB7CiAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c3luY1Rl
eHRUcmFja0JvdW5kcygpOwogfQotICAgIAorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24qIHJlcHJlc2VudGF0aW9uKQogewogICAgIGF1dG8qIHJlcHJlc2VudGF0aW9uTGF5
ZXIgPSByZXByZXNlbnRhdGlvbiA/IHJlcHJlc2VudGF0aW9uLT5wbGF0Zm9ybUxheWVyKCkgOiBu
aWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KaW5kZXggOTFiMTQxYTUwM2JiMjdiZDQyN2FmM2Y3MmE0ZDIxM2FiYjM4ZmRjMy4u
MTY3ZDBlOTRmNDMxOTk4OGE1Mzc4ZTRmMzBhNWY1N2Q0OTZlOTViMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMjcs
NyArMjcsNyBAQAogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIklP
U3VyZmFjZVBvb2wuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCkBAIC0xMTcsNyArMTE3LDcg
QEAgc3RhdGljIE5TRGljdGlvbmFyeSAqb3B0aW9uc0ZvckJpcGxhbmFyU3VyZmFjZShJbnRTaXpl
IHNpemUsIHVuc2lnbmVkIHBpeGVsRm9ybWEKIAogICAgIHNpemVfdCBzZWNvbmRQbGFuZUJ5dGVz
UGVyUm93ID0gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIHdp
ZHRoICogc2Vjb25kUGxhbmVCeXRlc1BlclBpeGVsKTsKICAgICBzaXplX3Qgc2Vjb25kUGxhbmVU
b3RhbEJ5dGVzID0gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQWxsb2NTaXplLCBo
ZWlnaHQgKiBzZWNvbmRQbGFuZUJ5dGVzUGVyUm93KTsKLSAgICAKKwogICAgIHNpemVfdCB0b3Rh
bEJ5dGVzID0gZmlyc3RQbGFuZVRvdGFsQnl0ZXMgKyBzZWNvbmRQbGFuZVRvdGFsQnl0ZXM7CiAg
ICAgQVNTRVJUKHRvdGFsQnl0ZXMpOwogCkBAIC0yNzcsNyArMjc3LDcgQEAgQ0dDb250ZXh0UmVm
IElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCiAKICAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IDg7CiAgICAgc2l6ZV90IGJp
dHNQZXJQaXhlbCA9IDMyOwotICAgIAorCiAgICAgc3dpdGNoIChmb3JtYXQoKSkgewogICAgIGNh
c2UgRm9ybWF0OjpSR0JBOgogICAgICAgICBicmVhazsKQEAgLTI5NSw3ICsyOTUsNyBAQCBDR0Nv
bnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICAKKwogICAgIG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFj
ZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1f
Y29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9j
b2xvclNwYWNlLmdldCgpLCBiaXRtYXBJbmZvKSk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTQ0MCw3ICs0NDAsNyBA
QCB2b2lkIElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZgogICAgIGNvbXBsZXRpb24uY29tcGxldGlvbkNhbGxi
YWNrID0gW10odm9pZCAqY29tcGxldGlvblJlZkNvbiwgSU9SZXR1cm4sIHZvaWQgKiBjb21wbGV0
aW9uUmVmQ29uMikgewogICAgICAgICBhdXRvKiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PFdURjo6
RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik+Kj4oY29tcGxldGlvblJl
ZkNvbik7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25TdXJmYWNlID0gc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4oc3RhdGljX2Nhc3Q8SU9TdXJmYWNlKj4oY29tcGxldGlvblJlZkNvbjIpKTsK
LSAgICAgICAgCisKICAgICAgICAgKCpjYWxsYmFjaykoV1RGTW92ZShkZXN0aW5hdGlvblN1cmZh
Y2UpKTsKICAgICAgICAgZGVsZXRlIGNhbGxiYWNrOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IDNh
N2EwNzI2MDdiYWI1ZjYwOTg3MjcxYWE4ZTYzYTZiZWUxNGNkM2IuLjQ0ZmY5MmVhMTRmZWVmNTMz
OWU1MjYyOTgzNDI3M2JiMzA2NmJiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAK
ICNpZiBVU0UoRUdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjcz
ZjVlNjc5MjE4Li5kYzE3OGMxMDg4YWZmZmYxYjZhYzI0Yzc3Zjk2YWZjMzRhMzQzZGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzE4
Miw3ICszMTgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWMKIH0KIAogI2lmIFVTRShHU1RS
RUFNRVJfR0wpCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0
dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4
ODY2N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4yZDg0MmQ4ZTI4M2QyNzViMzdkZGI0
NjcyYjgzZjViYjVhNGUwNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJpdG1hcFRleHR1cmVHTDsKIGNsYXNzIEdMQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0w7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcjsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWVr
KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmF0ZShmbG9hdCkgb3Zl
cnJpZGU7CiAgICAgZG91YmxlIHJhdGUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldFByZXNl
cnZlc1BpdGNoKGJvb2wpIGZpbmFsOyAKKyAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wp
IGZpbmFsOwogICAgIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgZmluYWw7
CiAgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRW
b2x1bWUoZmxvYXQpIGZpbmFsOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdD
R0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29s
KSBvdmVycmlkZTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBvdmVycmlkZTsKICAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggNWJlNWE5ZDY3
M2I2ZGEwOWRmMjNkOGI1MjRmZDgyM2NiNmM4OTNkZC4uZjE1YjdmMjk1YTk1MWIyZDg5NGVjMGZh
OTE5NTRlOTZmNDdhNGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
CkBAIC05Nyw2ICs5Nyw4OCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFn
ZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogI2VuZGlmCiAKIAor
I2lmICFVU0UoQU5HTEUpCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwb3NzaWJsZUZv
cm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpCit7CisjZGVmaW5lIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGVNYWNybykg
Y2FzZSBpbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisgICAgICAgIGZvcm1hdCA9IGZvcm1hdE1hY3Jv
OyBcCisgICAgICAgIHR5cGUgPSB0eXBlTWFjcm87IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBz
d2l0Y2ggKGludGVybmFsRm9ybWF0KSB7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCLCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQkEsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKExVTUlOQU5DRV9BTFBIQSwgTFVNSU5BTkNFX0FMUEhBLCBVTlNJR05FRF9C
WVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0UsIExVTUlO
QU5DRSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
QUxQSEEsIEFMUEhBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSOCwgUkVELCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSOF9TTk9STSwgUkVELCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSMTZGLCBSRUQsIEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFIzMkYsIFJFRCwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFI4VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOEksIFJFRF9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX1NI
T1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZJLCBSRURfSU5URUdF
UiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMlVJLCBSRURf
SU5URUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSMzJJLCBSRURfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSRzgsIFJHLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSRzhfU05PUk0sIFJHLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSRzE2RiwgUkcsIEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHMzJGLCBSRywgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHOFVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSRzhJLCBSR19JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JU
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2SSwgUkdfSU5URUdFUiwg
U0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJVSSwgUkdfSU5U
RUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
RzMySSwgUkdfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFNSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQjU2NSwgUkdCLCBVTlNJR05FRF9TSE9SVF81XzZfNSk7CisgICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOF9TTk9STSwgUkdCLCBCWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTFGX0cxMUZfQjEwRiwgUkdCLCBVTlNJR05F
RF9JTlRfMTBGXzExRl8xMUZfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0I5X0U1LCBSR0IsIFVOU0lHTkVEX0lOVF81XzlfOV85X1JFVik7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZGLCBSR0IsIEhBTEZfRkxPQVQpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMyRiwgUkdCLCBGTE9BVCk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOFVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfQllU
RSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOEksIFJHQl9JTlRFR0VS
LCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNlVJLCBSR0Jf
SU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQjE2SSwgUkdCX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0IzMlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMkksIFJHQl9JTlRFR0VSLCBJTlQpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4LCBSR0JBLCBVTlNJR05FRF9CWVRF
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOF9BTFBIQTgsIFJHQkEs
IFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4
X1NOT1JNLCBSR0JBLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
R0I1X0ExLCBSR0JBLCBVTlNJR05FRF9TSE9SVF81XzVfNV8xKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0JBNCwgUkdCQSwgVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBfQTIsIFJHQkEsIFVOU0lHTkVE
X0lOVF8yXzEwXzEwXzEwX1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkdCQTE2RiwgUkdCQSwgSEFMRl9GTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCQTMyRiwgUkdCQSwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQkE4VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThJLCBSR0JBX0lOVEVHRVIsIEJZVEUpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0EyVUksIFJHQkFfSU5URUdFUiwg
VU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSR0JBMTZVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2SSwgUkdCQV9JTlRFR0VSLCBTSE9SVCk7
CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMySSwgUkdCQV9JTlRFR0VS
LCBJTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMlVJLCBSR0JB
X0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoREVQVEhfQ09NUE9ORU5UMTYsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOwor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVCwgREVQVEhf
Q09NUE9ORU5ULCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoREVQVEhfQ09NUE9ORU5UMjQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfSU5UKTsK
KyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQzMkYsIERF
UFRIX0NPTVBPTkVOVCwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KERFUFRIX1NURU5DSUwsIERFUFRIX1NURU5DSUwsIFVOU0lHTkVEX0lOVF8yNF84KTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSDI0X1NURU5DSUw4LCBERVBUSF9TVEVO
Q0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoREVQVEgzMkZfU1RFTkNJTDgsIERFUFRIX1NURU5DSUwsIEZMT0FUXzMyX1VOU0lHTkVEX0lO
VF8yNF84X1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9u
c0dMOjpTUkdCX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgVU5TSUdORURfQllURSk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgVU5TSUdORURfQllURSk7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyN1bmRlZiBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAvLyAhVVNFKEFO
R0xFKQorCisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCAyNDQyODlkNWJlZDIwYjkwYzBlNjZjM2MzNzU0MzUxMmYyNDkwOWFi
Li5mMWY0MjM1MWZhMTA1ZTEyNmUyZGFjY2Q2Y2MzOWQ5MWY5ZWY5M2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTI5LDcgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlU2hhZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmplY3QpOwogCiAjaWYgIVVTRShB
TkdMRSkKLSAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpIGZpbmFsOworICAgIC8vIEhlbHBlciB0byB0
ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAw
LgorICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgorICAg
IC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGlu
Zy4KKyAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogI2VuZGlmCiAKICAgICBib29sIGlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdCBmaW5hbDsKQEAgLTE2Myw4ICsxNjYsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xi
b29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBpbGVT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOwotICAgIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZp
bmFsOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9p
ZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI5Myw3ICsyOTgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogCi0gICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5h
bDsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KSBmaW5hbDsKQEAgLTMwNywxMSArMzEyLDEzIEBAIHB1YmxpYzoKIAogICAgIC8vID09
PT09PT09PT0gV2ViR0wyIGVudHJ5IHBvaW50cy4KIAotICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBidWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7Ci0KKyNp
ZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0
IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IGxlbmd0aCk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCk7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CisjZW5kaWYKICAgICB2b2lkIGNv
cHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0
LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXpl
aXB0ciBzaXplKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1
aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKKwogICAgIHZvaWQqIG1hcEJ1
ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0
ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIHVu
bWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAKQEAgLTQwNywxNSArNDE0LDE2IEBA
IHB1YmxpYzoKIAogICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKICAg
ICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKLSAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwogICAgIFN0
cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKIAotICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFs
OwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkgZmluYWw7CisjaWYgIVVTRShB
TkdMRSkKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogCi0g
ICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKKyNlbmRpZgogCiAgICAg
dm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
dW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKQEAgLTQzMSwxNiArNDM5
LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBm
aW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBk
c3RPZmZzZXQpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCByZWFkUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOworICAgIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7CisjZW5kaWYKIAogICAgIC8vIEhlbHBlciBt
ZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQo
KTsKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKLSAgICBib29sIGxheWVyQ29tcG9z
aXRlZCgpIGNvbnN0OworICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAg
dm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAgICB2b2lk
IHJlY3ljbGVDb250ZXh0KCk7CiAKQEAgLTQ0OCwxOSArNDU4LDE5IEBAIHB1YmxpYzoKICAgICAv
LyByZXNldCBtZXRob2QgaXMgcHJlc2VudCB0byBrZWVwIGNhbGxpbmcgY29kZSBzaW1wbGVyLCBz
byBpdAogICAgIC8vIGRvZXNuJ3QgaGF2ZSB0byBrbm93IHdoaWNoIGJ1ZmZlcnMgd2VyZSBhbGxv
Y2F0ZWQuCiAgICAgdm9pZCByZXNldEJ1ZmZlcnNUb0F1dG9DbGVhcigpOwotICAgIHZvaWQgc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCk7Ci0gICAgR0NHTGJpdGZpZWxkIGdldEJ1
ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFy
KEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9D
bGVhcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVy
KCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24o
KTsKLSAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHNpbXVsYXRl
Q29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwotICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogI2lmIFVTRShPUEVO
R0wpICYmIEVOQUJMRShXRUJHTDIpCi0gICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NH
THVpbnQpIGZpbmFsOworICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFBMQVRGT1JNKE1BQykKQEAgLTQ4Nywx
MCArNDk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2Jq
ZWN0KSBmaW5hbDsKIAogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3Ip
IGZpbmFsOwotCi0gICAgLy8gUmVhZCByZWFsIE9wZW5HTCBlcnJvcnMsIGFuZCBtb3ZlIHRoZW0g
dG8gdGhlIHN5bnRoZXRpYwotICAgIC8vIGVycm9yIGxpc3QuIFJldHVybiB0cnVlIGlmIGF0IGxl
YXN0IG9uZSBlcnJvciBpcyBtb3ZlZC4KLSAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpOworICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmlu
YWw7CiAKICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwg
b2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5l
Y2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKQEAgLTUxMyw2ICs1MjAsMTAgQEAgcHVibGlj
OgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKICNlbmRpZgogCisjaWYg
IVVTRShBTkdMRSkKKyAgICBzdGF0aWMgYm9vbCBwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRl
cm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NH
TGVudW0mIHR5cGUpOworI2VuZGlmIC8vICFVU0UoQU5HTEUpCisKIHByaXZhdGU6CiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2lu
ZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwogCkBAIC01MjYsNyArNTM3LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KICAgICB2b2lkIHZhbGlkYXRlRGVw
dGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAg
dm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKLSAgICAKKwogICAgIC8vIERpZCB0aGUgbW9zdCBy
ZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0
YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApAQCAtNTc4LDcgKzU4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAsIGlzVmFsaWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICBTaGFkZXJTeW1ib2xNYXAmIHN5bWJvbE1hcChlbnVtIEFO
R0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoc3ltYm9sVHlwZSA9PSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFIHx8IHN5bWJv
bFR5cGUgPT0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0gfHwgc3ltYm9sVHlwZSA9PSBTSEFE
RVJfU1lNQk9MX1RZUEVfVkFSWUlORyk7CkBAIC02NzEsNyArNjgyLDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB1c2luZyBCb3VuZFRleHR1cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAg
ICAgICAgc3RkOjpwYWlyPEdDR0x1aW50LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6Oklu
dEhhc2g8R0NHTGVudW0+LCAKKyAgICAgICAgICAgIFdURjo6SW50SGFzaDxHQ0dMZW51bT4sCiAg
ICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwK
ICAgICAgICAgICAgIFdURjo6UGFpckhhc2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
R0NHTHVpbnQ+PgogICAgICAgICA+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggOTg0ZjYyZDBiNTRkZDhhOGFlYTM5N2IwODE3N2ViOGI0NmM5
ZmY3MS4uYjI4MTI4YmIwNTQ3M2YyNzUxMWRhYmJlMzllOGNlNDIxMjUzMjI1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yOTYsNyArMjk2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiAKICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xf
U0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29w
ZWREaXRoZXIoR0xfRElUSEVSLCBHTF9GQUxTRSk7Ci0gICAgCisKICAgICBib29sIG11c3RSZXN0
b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJ
bml0aWFsaXplIHJlbmRlcmJ1ZmZlcnMgdG8gMC4KQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVu
dW0gZGZhY3RvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpnbEJsZW5kRnVuYyhzZmFjdG9y
LCBkZmFjdG9yKTsKLX0gICAgICAgCit9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JHQiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dM
ZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEpCiB7CkBAIC02NDMsMTEgKzY0MywxMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyKQogICAgIExPRyhXZWJHTCwgIi0tLSBiZWdpbiB0cmFuc2xhdGVkIHNoYWRl
ciBzb3VyY2UgLS0tXG4lc1xuLS0tIGVuZCB0cmFuc2xhdGVkIHNoYWRlciBzb3VyY2UgLS0tIiwg
dHJhbnNsYXRlZFNoYWRlclB0cik7CiAKICAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwg
JnRyYW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKLSAgICAKKwog
ICAgIDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7Ci0gICAgCisKICAgICBpbnQgY29tcGlsZVN0
YXR1czsKLSAgICAKKwogICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVT
LCAmY29tcGlsZVN0YXR1cyk7CiAKICAgICBTaGFkZXJTb3VyY2VNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKQEAgLTg5NCw5ICs4OTQsOSBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTAogICAgIDo6Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
aW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUu
ZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKKwogICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3Jh
bSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1l
TGVuZ3RoKSk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIHVuaWZvcm1OYW1l
KG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlz
IG1hcHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0s
IGluZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRh
dGEoKSk7CkBAIC05MTYsNyArOTE2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQKICAgICAg
ICAgZ2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4
dEdMOjpBQ1RJVkVfQVRUUklCVVRFUywgJnN5bWJvbENvdW50KTsKICAgICAgICAgcmVzdWx0ID0g
bV9zaGFkZXJQcm9ncmFtU3ltYm9sQ291bnRNYXAuZmluZChwcm9ncmFtKTsKICAgICB9Ci0gICAg
CisKICAgICBBY3RpdmVTaGFkZXJTeW1ib2xDb3VudHMmIHN5bWJvbENvdW50cyA9IHJlc3VsdC0+
dmFsdWU7CiAgICAgR0NHTHVpbnQgcmF3SW5kZXggPSAoaW5kZXggPCBzeW1ib2xDb3VudHMuZmls
dGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwLnNpemUoKSkgPyBzeW1ib2xDb3VudHMuZmls
dGVyZWRUb0FjdHVhbEF0dHJpYnV0ZUluZGV4TWFwW2luZGV4XSA6IC0xOwogCkBAIC05NDMsMTQg
Kzk0MywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jt
SW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDRwogICAgIDo6Z2xHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAm
dHlwZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAorCiAgICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9s
TmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3RyaW5nKG5hbWUuZGF0
YSgpLCBuYW1lTGVuZ3RoKSk7Ci0gICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgU3RyaW5nIHVu
aWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9n
cmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRvICclcyciLCBw
cm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0
ZjgoKS5kYXRhKCkpOwogI2VuZGlmCi0gICAgCisKICAgICBpbmZvLm5hbWUgPSBvcmlnaW5hbE5h
bWU7CiAgICAgaW5mby50eXBlID0gdHlwZTsKICAgICBpbmZvLnNpemUgPSBzaXplOwpAQCAtOTY1
LDEwICs5NjUsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW4KICAgICAgICAgZ2V0Tm9uQnVp
bHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVf
VU5JRk9STVMsICZzeW1ib2xDb3VudCk7CiAgICAgICAgIHJlc3VsdCA9IG1fc2hhZGVyUHJvZ3Jh
bVN5bWJvbENvdW50TWFwLmZpbmQocHJvZ3JhbSk7CiAgICAgfQotICAgIAorCiAgICAgQWN0aXZl
U2hhZGVyU3ltYm9sQ291bnRzJiBzeW1ib2xDb3VudHMgPSByZXN1bHQtPnZhbHVlOwogICAgIEdD
R0x1aW50IHJhd0luZGV4ID0gKGluZGV4IDwgc3ltYm9sQ291bnRzLmZpbHRlcmVkVG9BY3R1YWxV
bmlmb3JtSW5kZXhNYXAuc2l6ZSgpKSA/IHN5bWJvbENvdW50cy5maWx0ZXJlZFRvQWN0dWFsVW5p
Zm9ybUluZGV4TWFwW2luZGV4XSA6IC0xOwotICAgIAorCiAgICAgcmV0dXJuIGdldEFjdGl2ZVVu
aWZvcm1JbXBsKHByb2dyYW0sIHJhd0luZGV4LCBpbmZvKTsKIH0KIApAQCAtMTA2OSw3ICsxMDY5
LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkcKICAgICBHQ0dMc2l6ZWkgY291bnQ7CiAgICAg
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdOwogICAgIGdldEF0dGFjaGVkU2hhZGVycyhwcm9n
cmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwotICAgIAorCiAgICAgZm9yIChHQ0dMc2l6ZWkgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luYWxOYW1lID0gb3JpZ2lu
YWxTeW1ib2xJblNoYWRlclNvdXJjZU1hcChzaGFkZXJzW2ldLCBzeW1ib2xUeXBlLCBuYW1lKTsK
ICAgICAgICAgaWYgKG9yaWdpbmFsTmFtZSkKQEAgLTExMDcsNyArMTEwNyw3IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHNoYWRlcnNbMl0sIHNpCiAgICAgICAgICAgICBTaGFkZXJTb3VyY2VNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyc1tpXSk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNvbnN0IFNoYWRlclN5bWJvbE1h
cCYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3RhdGljX2Nhc3Q8ZW51bSBB
TkdMRVNoYWRlclN5bWJvbFR5cGU+KHN5bWJvbFR5cGUpKTsKICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgc3ltYm9sRW50cnkgOiBzeW1ib2xNYXApIHsKICAgICAgICAgICAgICAgICBpZiAo
bmFtZSA9PSBzeW1ib2xFbnRyeS52YWx1ZS5tYXBwZWROYW1lLmNfc3RyKCkpCkBAIC0xNjgyLDcg
KzE2ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJh
eShQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTY5NSw3ICsxNjk1LDcgQEAgR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKIHsKICAgICBp
ZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7Ci0gICAgCisKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKQEAgLTE4MjQs
NyArMTgyNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5B
Y3RpdmVTeW1ib2xDb3VudChQbGF0Zm9ybUdMT2JqZWN0IHByCiAKICAgICAgICAgc3ltYm9sQ291
bnRzLmZpbHRlcmVkVG9BY3R1YWxBdHRyaWJ1dGVJbmRleE1hcC5hcHBlbmQoaSk7CiAgICAgfQot
ICAgIAorCiAgICAgLy8gRG8gdGhlIHNhbWUgZm9yIHVuaWZvcm1zLgogICAgIEdDR0xpbnQgdW5p
Zm9ybUNvdW50ID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEFDVElWRV9VTklG
T1JNUywgJnVuaWZvcm1Db3VudCk7CkBAIC0xODMzLDEwICsxODMzLDEwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChQbGF0Zm9y
bUdMT2JqZWN0IHByCiAgICAgICAgIGdldEFjdGl2ZVVuaWZvcm1JbXBsKHByb2dyYW0sIGksIGlu
Zm8pOwogICAgICAgICBpZiAoaW5mby5uYW1lLnN0YXJ0c1dpdGgoImdsXyIpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIHN5bWJvbENvdW50cy5maWx0ZXJlZFRv
QWN0dWFsVW5pZm9ybUluZGV4TWFwLmFwcGVuZChpKTsKICAgICB9Ci0gICAgCisKICAgICAqdmFs
dWUgPSBzeW1ib2xDb3VudHMuY291bnRGb3JUeXBlKHBuYW1lKTsKIH0KIApAQCAtMTg0Nyw3ICsx
ODQ3LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZv
TG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNkZWZBQkNERUZdKyIpOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBwcm9jZXNzZWRMb2c7Ci0gICAgCisKICAgICAvLyBBTkdMRSBpbnNl
cnRzIGEgIiNleHRlbnNpb24iIGxpbmUgaW50byB0aGUgc2hhZGVyIHNvdXJjZSB0aGF0CiAgICAg
Ly8gY2F1c2VzIGEgd2FybmluZyBpbiBzb21lIGNvbXBpbGVycy4gVGhlcmUgaXMgbm8gcG9pbnQg
c2hvd2luZwogICAgIC8vIHRoaXMgd2FybmluZyB0byB0aGUgdXNlciBzaW5jZSB0aGV5IGRpZG4n
dCB3cml0ZSB0aGUgY29kZSB0aGF0CkBAIC0xODg2LDcgKzE4ODYsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSkKICAgICBHTGludCBsZW5ndGggPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgR0xz
aXplaSBzaXplID0gMDsKICAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CkBAIC0xOTE2
LDcgKzE5MTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybUdMT2JqZWN0IHNoYWRlciwgR0NHTGVudW0gcG5hbQogCiAKICAgICBjb25zdCBhdXRv
JiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7Ci0gICAgCisKICAgICBz
d2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBERUxFVEVfU1RBVFVTOgogICAgIGNhc2UgU0hBREVS
X1RZUEU6CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAKICAgICBjb25z
dCBhdXRvJiByZXN1bHQgPSBtX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAgICAgaWYg
KHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOyAKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgY29uc3QgU2hhZGVyU291cmNl
RW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKICAgICBpZiAoIWVudHJ5LmlzVmFsaWQpCkBA
IC0xOTYyLDcgKzE5NjIsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNo
YWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAgICAgR0xpbnQgbGVuZ3RoID0g
MDsKICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5n
dGgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIFZlY3RvcjxH
TGNoYXI+IGluZm8obGVuZ3RoKTsKQEAgLTE5ODEsNyArMTk4MSw3IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
KQogCiAgICAgY29uc3QgYXV0byYgcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFk
ZXIpOwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsgCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVy
biByZXN1bHQtPnZhbHVlLnNvdXJjZTsKIH0KQEAgLTI5NDMsMTQgKzI5NDMsNiBAQCBHQ0dMdWlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCog
cGFyYW1zKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0o
dW5pZm9ybUJsb2NrSW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHBhcmFtcyk7Ci19Ci0KIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKQEAgLTI5
NzUsMTAgKzI5NjcsNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgUwogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xpbnQqKQotewotfQot
CiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCiB7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZk
NTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4uZjk0NWNjZGM4YTE1ODAzNzE2NTFmZGYzMTgyMmRlNDY3
NTMxNTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMjAsNyArMjAsNyBA
QAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC04MDUsNyAr
ODA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJv
b2wpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVu
dW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIyMTNlMzQz
Li4xM2JiZGYxYmQ0ODFmMTVhMzA0NTdkZGI1ZWRmYzhiM2UyYTY0YTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAog
I3ByYWdtYSBvbmNlCkBAIC0yNjIsNyArMjYyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
ZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICBib29s
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKKyAgICBib29sIGNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414015</attachid>
            <date>2020-11-13 01:59:29 -0800</date>
            <delta_ts>2020-11-13 02:54:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201113115926.patch</filename>
            <type>text/plain</type>
            <size>170825</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E1MWVhYzgyY2VjOGMw
MDMxODJkMzhiM2FjNzBkYzRhNzA4MzUwMi4uNjBlMzIwZWY2ZWZkYTQxZjE4ZDk4ZTRmYzIxN2U5
YzExMmQ0ZmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMS0xMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTEtMTMgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5
ZTMyMDNlNGE1ZTlhNDFlMmIwNGNiYzViNWQxOThjOTdmY2UyZDMuLmM5MGNiNzlhOWQ4ZTgyYjAy
NGFiNWIwNDFlMDlmOGM5ZGQ1MjhmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTEtMTIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTExLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
aW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBlMjQ0MjQyNzg0ZDA1MDFjZGM0YmFkYTQ0Yjc1NjNl
MTA2ZGIxZWEzLi42NDAyODg1N2Q2NGUwZjQzNjdjNTZjNzc5OTQ5ZTNkZDJiMDUxOWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMwMCw3ICszMDAsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlh
KCpwbGF5ZXIsIGRlc3RSZWN0KTsKIH0KIAotYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBp
ZiAoIXBsYXllcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCmluZGV4IDgxZjA4M2E1MGM2NDc2MmJlMjk1YTNhNjMxMjQ0NmQ2YmYy
YjkzNjMuLmRjYThhYWFiNTc3NzM4NzZhNGU1Mjk2MTZlYjkyZjBiZGVmYWU4ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBv
c3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9v
bCBmbGlwWSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJ
bWFnZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZlMGNmZjY4M2Y4N2YyODM2YzIwZDRiZDEz
MTFmNWRkZjhmMmIzNzUuLjgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdlOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzCiAg
ICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFz
ZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wy
UmVuZGVyaW5nQ29udGV4dD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jh
c2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4
dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dChjYW52YXMsIFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAg
ICAvLyBUaGlzIGlzIHZpcnR1YWwgYW5kIGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3RydWN0
b3IuCkBAIC0xMDUsNyArMTA1LDcgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIEdyYXBoaWNzQ29udGUKIHsKIH0KIAot
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNl
JiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCiAgICAgOiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250
ZXh0KSwgYXR0cmlidXRlcykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IGJlY2QyOTNiMWQ2ZDA2ZWI1ODJhNWUwYTQxMzAwZjJjZGFlOTI1ZGUuLmI4YjAzNmU0NDc2YTRm
MTVkNGU1MDY3NThjNTc1OTM1ZTBhMDYyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xh
c3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQpOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVy
aW5nQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4g
Y3JlYXRlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRl
eHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIAogICAgIH5XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0KCk7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzKTsKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNz
Q29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCiAgICAgYm9vbCBp
c1dlYkdMMigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAppbmRleCBhZTY5NTQyZWY3NmYwZGVlMjRi
N2EzMjlkZmMyMWE0ZjlhOGU5NjliLi40YzU4NDY1N2I2Y2VlYmIyMTEzYjU1YWE4ZDBjNzA3OGEx
YTMzMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2
ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8u
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRleCAx
ZWNjM2NhNGZmY2YxZTdlYWYxZWU5ZWRkMzJlZGI5MjFlMmUzMDNiLi43YjU3N2E0OTQzMzJiYmUw
NTgxYTliZWM4MzgzNWJiOGE0M2JhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFdlYkdMQnVmZmVyOjp+V2ViR0xCdWZm
ZXIoKQogICAgIHJ1bkRlc3RydWN0b3IoKTsKIH0KIAotdm9pZCBXZWJHTEJ1ZmZlcjo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTEJ1ZmZlcjo6
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
KiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+
ZGVsZXRlQnVmZmVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuaAppbmRleCAwNWE4MGY5M2JmZDFkNDQ4ZDUyZjA4YTY2MGZmNjZiYzlhYzdkNmQyLi4x
ZTZiYTc4NjM5ZmU1NzM1YWRiOWU3YWFhZjZkODRhY2UyNTU3Yzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgR0NHTGVudW0gbV90
YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEdyb3VwLmNwcAppbmRleCAzYTgyMGRlYjg1YjQ1N2I0MDAyNDM2MGY3MDRhMGM0YTk5YzA0
OTRmLi5kNmFiNTE2YWUyZmEyYTZmNzk2MjliNDJiNmY4MWYwMGNmODZiYWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0
LmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBXZWJHTENvbnRleHRHcm91cDo6aGFzQUNvbnRl
eHQoKSBjb25zdAogICAgIHJldHVybiAhbV9jb250ZXh0cy5pc0VtcHR5KCk7CiB9CiAKLUdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMJiBXZWJHTENvbnRleHRHcm91cDo6Z2V0QUdyYXBoaWNzQ29udGV4
dEdMKCkKK0dyYXBoaWNzQ29udGV4dEdMJiBXZWJHTENvbnRleHRHcm91cDo6Z2V0QUdyYXBoaWNz
Q29udGV4dEdMKCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dHMuaXNFbXB0eSgpKTsKICAgICBy
ZXR1cm4gKigqbV9jb250ZXh0cy5iZWdpbigpKS0+Z3JhcGhpY3NDb250ZXh0R0woKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5oCmluZGV4IDUyMTIz
MGRlNWE4ZDhkMjUxYTU3MWQ2YjdhYzQzOTQ5YTVhNjRmZGUuLjg1NWNlNzIzOTg2ZmUwNzc1OThm
MjQ2ODFhZTgwODZjODFlZGZhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb250ZXh0R3JvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmKTsKIAogICAgIGJvb2wgaGFzQUNvbnRleHQo
KSBjb25zdDsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgZ2V0QUdyYXBoaWNzQ29udGV4
dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wmIGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwog
ICAgIExvY2smIG9iamVjdEdyYXBoTG9ja0ZvckFDb250ZXh0KCk7CiAKICAgICB2b2lkIGxvc2VD
b250ZXh0R3JvdXAoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdENvbnRleHRNb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3Bw
CmluZGV4IGE5Yjg0MzA1N2E5NjVmOTc5NzA1NDVhODdhNzRmYTc3OWYyYWM5MjAuLjdjOTE5ZjJi
NjY1NmI2N2IxNmNhNjM0MGIwYjJhNGI2NDVkMDQ2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBX
VEY6OkxvY2smIFdlYkdMQ29udGV4dE9iamVjdDo6b2JqZWN0R3JhcGhMb2NrRm9yQ29udGV4dCgp
CiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBXZWJHTENvbnRleHRPYmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRH
TCgpIGNvbnN0CitHcmFwaGljc0NvbnRleHRHTCogV2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3Jh
cGhpY3NDb250ZXh0R0woKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQgPyBtX2NvbnRl
eHQtPmdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAppbmRleCAzODM1ZDgwYWE3YTk3MWY2
OTMxOGZjZGVjMTQwNzRlZTBlMjUzYzM1Li5kYmZkZDZiZmMwZWY0NGViODgyZWI5YzU5YjAwOGQy
OTgxMTI2NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRPYmplY3QuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBj
bGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogCiAvLyBXZWJHTENvbnRleHRPYmplY3Qg
dGhlIGJhc2UgY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBhcmUgb3duZWQgYnkgYSBzcGVjaWZpYwpA
QCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQ7CiAg
ICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdldEFHcmFwaGljc0NvbnRleHRH
TCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBnZXRBR3JhcGhpY3ND
b250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYWYyZWQ5MDk2YzFiZWVmOGIwMTYyMDVmMjUw
OWU1OWExMWM1NGNmZi4uYTY5MTUzMjNhODQ5NDRlNTliYzE3MmQzZjViOTQzMzcyNjgxNDM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNw
cApAQCAtNTAsNyArNTAsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERl
cHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJl
TmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMJiBjb250ZXh0KQorYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewogICAgIEV4dGVuc2lvbnNHTCYgZXh0ZW5z
aW9ucyA9IGNvbnRleHQuZ2V0RXh0ZW5zaW9ucygpOwogICAgIHJldHVybiBleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAppbmRleCA2MTYxMDBhN2FiMDhiMThiMWJkOWE5YWM4
MzZiY2U5NzMyZGI4MTI0Li5lZTIwYzJlYjk3YmJkMDZmZDA1ZjgyZGYyOTE5ZDZjOTc0M2I5Zjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVy
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4
dHVyZSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7CiAK
ICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IGI1YzQx
MTI2MWExZDFkMDU4N2UzN2MzNjYwODJjZWJjNGUwY2M5YzkuLjljYjBmODU2YjU4ZTEwZTZmNDcz
MDllNmZlM2MxMGUyNjcwOTcxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2ViR0xEcmF3QnVm
ZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJzKQog
Ly8gc3RhdGljCiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1l
bnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYmdsQ29udGV4dCkKIHsKLSAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0NvbnRl
eHRHTCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtl
IHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCiAgICAgR0NHTGludCBtYXhE
cmF3QnVmZmVycyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJh
bWVidWZmZXIuY3BwCmluZGV4IGZlMWE4N2U1YmUyYjBkMTkzOGJkZDQ2N2ExM2Y3YWZmMjRlNzQy
OGUuLmY2MDdmYzcxMzc4NTA0YmNiNzgwZDU3OGZjNjY2ZDRkODU3NWI5MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC01Nyw5ICs1
Nyw5IEBAIG5hbWVzcGFjZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBzZXRJbml0aWFsaXplZCgpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIG9uRGV0YWNoZWQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgdW5h
dHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0
R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
SlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogCiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
QXR0YWNobWVudCgpIHsgfTsKQEAgLTEyMCwxOCArMTIwLDE4IEBAIG5hbWVzcGFjZSB7CiAgICAg
ICAgICAgICBtX3JlbmRlcmJ1ZmZlci0+c2V0SW5pdGlhbGl6ZWQoKTsKICAgICB9CiAKLSAgICB2
b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFj
dExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCkKKyAgICB2
b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFj
dExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCkKICAgICB7CiAgICAg
ICAgIG1fcmVuZGVyYnVmZmVyLT5vbkRldGFjaGVkKGxvY2tlciwgY29udGV4dCk7CiAgICAgfQog
Ci0gICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2ht
ZW50KQorICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjphdHRhY2goR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCkKICAgICB7CiAgICAgICAgIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJv
KG1fcmVuZGVyYnVmZmVyLmdldCgpKTsKICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVG
RkVSLCBvYmplY3QpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2ht
ZW50Ojp1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQorICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJB
dHRhY2htZW50Ojp1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQogICAgIHsKICNpZiAhVVNFKEFOR0xFKQogICAg
ICAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5UKSB7CkBAIC0xNjMsOSArMTYzLDkgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgaXNJbml0aWFsaXplZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgYXR0YWNoKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBv
dmVycmlkZTsKLSAgICAgICAgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9v
dHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAK
ICAgICAgICAgV2ViR0xUZXh0dXJlQXR0YWNobWVudCgpIHsgfTsKQEAgLTIzMiwxMiArMjMyLDEy
IEBAIG5hbWVzcGFjZSB7CiAgICAgICAgIC8vIFRleHR1cmVzIGFyZSBhc3N1bWVkIHRvIGJlIGlu
aXRpYWxpemVkLgogICAgIH0KIAotICAgIHZvaWQgV2ViR0xUZXh0dXJlQXR0YWNobWVudDo6b25E
ZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCkKKyAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6Om9uRGV0YWNo
ZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRl
eHQpCiAgICAgewogICAgICAgICBtX3RleHR1cmUtPm9uRGV0YWNoZWQobG9ja2VyLCBjb250ZXh0
KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OmF0dGFjaChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50KQorICAgIHZvaWQgV2ViR0xUZXh0dXJlQXR0YWNobWVudDo6YXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCA9IG9iamVjdE9yWmVy
byhtX3RleHR1cmUuZ2V0KCkpOwogICAgICAgICBpZiAobV90YXJnZXQgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfM0QgfHwgbV90YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfMkRfQVJSQVkpCkBAIC0yNDYsNyArMjQ2LDcgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgICAg
IGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgbV90YXJn
ZXQsIG9iamVjdCwgbV9sZXZlbCk7CiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFRleHR1cmVBdHRh
Y2htZW50Ojp1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQorICAgIHZvaWQgV2ViR0xUZXh0dXJlQXR0
YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAjaWYgVVNFKEFOR0xFKQogICAgICAg
ICAvLyBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgYXR0YWNobWVudCBpcyB2YWxpZCBpbiBF
UzMuCkBAIC01NDcsNyArNTQ3LDcgQEAgR0NHTGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hlY2tT
dGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSX0NPTVBMRVRFOwogfQogCi1ib29sIFdlYkdMRnJhbWVidWZmZXI6
Om9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIGNvbnN0IGNoYXIq
KiByZWFzb24pCitib29sIFdlYkdMRnJhbWVidWZmZXI6Om9uQWNjZXNzKEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0M2QsIGNvbnN0IGNoYXIqKiByZWFzb24pCiB7CiAgICAgaWYgKGNoZWNrU3Rh
dHVzKHJlYXNvbikgIT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjMsNyArNTYzLDcgQEAgYm9vbCBXZWJHTEZyYW1l
YnVmZmVyOjpoYXNTdGVuY2lsQnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXR0YWNobWVudCAm
JiBhdHRhY2htZW50LT5pc1ZhbGlkKCk7CiB9CiAKLXZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2Vi
R0xGcmFtZWJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVj
dCkKIHsKICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBtX2F0dGFjaG1lbnRzLnZhbHVlcygp
KQogICAgICAgICBhdHRhY2htZW50LT5vbkRldGFjaGVkKGxvY2tlciwgY29udGV4dDNkKTsKQEAg
LTU3Miw3ICs1NzIsNyBAQCB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDbwogfQogCiAjaWYgIVVTRShB
TkdMRSkKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBnM2QsIGNvbnN0IGNoYXIqKiByZWFzb24pCitib29sIFdlYkdM
RnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHRHTCogZzNk
LCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlmICghY29udGV4dCgpKSB7CiAgICAgICAg
IC8vIENvbnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4
IGY4OGIwNmE1ZTRjNjQ1MjVjMmIyNjJmZDliOGUzOTJhOTkwNWQ3MjMuLmExNDBkYmQzYmUwMjll
YmY4MmIwOWNiOTkxYTJhZWFmMTc2OGQxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0
aWFsaXplZCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1
bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgb25EZXRhY2hlZChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVuYXR0YWNo
KEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXRvciYpID0gMDsKIAogICAgIHBy
b3RlY3RlZDoKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBmYWxzZSBp
ZiB0aGUgZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0ZTsgb3RoZXJ3aXNlIGluaXRpYWxpemUKICAg
ICAvLyB0aGUgYnVmZmVycyBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZCBhbmQKICAg
ICAvLyBuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVudHMgaXMgdHJ1ZS4KLSAgICBib29sIG9uQWNj
ZXNzKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CisgICAg
Ym9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTCosIGNvbnN0IGNoYXIqKiByZWFzb24pOwog
CiAgICAgLy8gU29mdHdhcmUgdmVyc2lvbiBvZiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoKSwg
ZXhjZXB0IHRoYXQgd2hlbgogICAgIC8vIEZSQU1FQlVGRkVSX0NPTVBMRVRFIGlzIHJldHVybmVk
LCBpdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKQEAgLTExOSwxMyArMTE5LDEzIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgV2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgV2Vi
R0xBdHRhY2htZW50KiBnZXRBdHRhY2htZW50KEdDR0xlbnVtKSBjb25zdDsKIAogI2lmICFVU0Uo
QU5HTEUpCiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGUu
Ci0gICAgYm9vbCBpbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBib29sIGluaXRpYWxpemVBdHRhY2htZW50cyhH
cmFwaGljc0NvbnRleHRHTCosIGNvbnN0IGNoYXIqKiByZWFzb24pOwogI2VuZGlmCiAKICAgICAv
LyBDaGVjayBpZiB0aGUgZnJhbWVidWZmZXIgaXMgY3VycmVudGx5IGJvdW5kIHRvIHRoZSBnaXZl
biB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKaW5k
ZXggYWI1YzE0ZjU2YjE5MjhiMTVlZWQ3ZjZmNTYxMzA0ZDIwN2RhYTgzMC4uMTkxNzg2YWI5Njhi
YzcwNDc1YzNjZmM0NzQ0YzdmZDk2MGU3MTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYkdMT2JqZWN0Ojpy
dW5EZXN0cnVjdG9yKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVj
dChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Y29udGV4dDNkKQordm9pZCBXZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9k
ZWxldGVkID0gdHJ1ZTsKICAgICBpZiAoIW1fb2JqZWN0KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lk
IFdlYkdMT2JqZWN0OjpkZXRhY2goKQogICAgIG1fYXR0YWNobWVudENvdW50ID0gMDsgLy8gTWFr
ZSBzdXJlIE9wZW5HTCByZXNvdXJjZSBpcyBkZWxldGVkLgogfQogCi12b2lkIFdlYkdMT2JqZWN0
OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0M2QpCit2b2lkIFdlYkdMT2JqZWN0OjpvbkRldGFjaGVkKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QpCiB7
CiAgICAgaWYgKG1fYXR0YWNobWVudENvdW50KQogICAgICAgICAtLW1fYXR0YWNobWVudENvdW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKaW5kZXggZjBhYTIxMzdh
M2VhZTVmOTdmOGFkOWJiOTFkOTAzM2UwMDlmMTZhMS4uY2FkNDc5Y2UyNzcxMGM4OTQxM2VmZDlk
YWRjNmNiYzM4M2RkMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVj
dC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIExvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRH
TDsKIGNsYXNzIFdlYkdMQ29udGV4dEdyb3VwOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTsKIApAQCAtNTMsMTAgKzUzLDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgQWJzdHJhY3RM
b2NrZXIgYXJndW1lbnQgZW5mb3JjZXMgYXQgY29tcGlsZSB0aW1lIHRoYXQgdGhlIG9iamVjdEdy
YXBoTG9jawogICAgIC8vIGlzIGhlbGQuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGZvciBhbGwgb2Jq
ZWN0IHR5cGVzLCBidXQgZW5vdWdoIG9mIHRoZW0gdGhhdAogICAgIC8vIGl0J3MgZG9uZSBmb3Ig
YWxsIG9mIHRoZW0uCi0gICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CisgICAgdm9pZCBkZWxldGVPYmplY3Qo
Y29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICB2
b2lkIG9uQXR0YWNoZWQoKSB7ICsrbV9hdHRhY2htZW50Q291bnQ7IH0KLSAgICB2b2lkIG9uRGV0
YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Kik7CisgICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTCopOwogCiAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xp
ZW50IHNpZGUgaXNzdWUgYSBkZWxldGUgY2FsbCBhbHJlYWR5LCBub3QKICAgICAvLyB3aGV0aGVy
IHRoZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVsZXRlZC4KQEAgLTgyLDEzICs4MiwxMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBydW5EZXN0cnVjdG9yKCk7CiAKICAgICAvLyBkZWxldGVPYmplY3RJ
bXBsIHNob3VsZCBiZSBvbmx5IGNhbGxlZCBvbmNlIHRvIGRlbGV0ZSB0aGUgT3BlbkdMIHJlc291
cmNlLgotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXBPckNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKCk7CiAKLSAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHcmFwaGlj
c0NvbnRleHRHTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgPSAwOwogCiBwcml2YXRl
OgogICAgIFBsYXRmb3JtR0xPYmplY3QgbV9vYmplY3QgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAppbmRleCA1MDY2MGM3NWM1MGFmMTNjNTk0NTEy
MTU4ZGQ1Y2JhMzEyMzdmZGQ0Li4zYzc4MGUwNGVmOGY3NzlhZGM3NWEyNmUwOTBmOTk2ZGNlZmFm
YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAg
LTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCisjaWYgIVVTRShBTkdMRSkKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSGFzaE1h
cDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4mIFdlYkdMUHJvZ3Jh
bTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQpAQCAtOTUsNyArOTksNyBAQCB2b2lkIFdl
YkdMUHJvZ3JhbTo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBXZWJHTFByb2dyYW06OmRlbGV0
ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmopCit2b2lkIFdlYkdMUHJv
Z3JhbTo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFw
aGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iaikKIHsKICAgICBj
b250ZXh0M2QtPmRlbGV0ZVByb2dyYW0ob2JqKTsKICAgICBpZiAobV92ZXJ0ZXhTaGFkZXIpIHsK
QEAgLTIwOCw3ICsyMTIsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6YWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OlNsb3RWaXNpdAogICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChtX2ZyYWdtZW50U2hhZGVyLmdldCgpKTsKIH0KIAotdm9pZCBXZWJHTFBy
b2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBjb250ZXh0M2QpCit2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlv
bnMoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2FjdGl2ZUF0dHJpYkxv
Y2F0aW9ucy5jbGVhcigpOwogCkBAIC0yMTcsNyArMjIxLDExIEBAIHZvaWQgV2ViR0xQcm9ncmFt
OjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dDNkCiAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnMucmVzaXplKHN0YXRpY19jYXN0PHNp
emVfdD4obnVtQXR0cmlicykpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmliczsg
KytpKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87Ci0gICAg
ICAgIGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliSW1wbChvYmplY3QoKSwgaSwgaW5mbyk7Cisj
aWYgVVNFKEFOR0xFKQorICAgICAgICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYihvYmplY3Qo
KSwgaSwgaW5mbyk7CisjZWxzZQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4oY29udGV4dDNEKS0+Z2V0QWN0aXZlQXR0cmliSW1wbChvYmplY3QoKSwgaSwgaW5m
byk7CisjZW5kaWYKICAgICAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnNbaV0gPSBjb250ZXh0
M2QtPmdldEF0dHJpYkxvY2F0aW9uKG9iamVjdCgpLCBpbmZvLm5hbWUpOwogICAgIH0KIH0KQEAg
LTIzMCw3ICsyMzgsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQoKQog
ICAgIGlmICghb2JqZWN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaAppbmRleCA4ZjcwZDBkMmIw
ZTQ3NTVmNTJmNGVhOWEzYmJkYzQ5ZDg0Mzg4MzM3Li41YTM1MGNiMTNhZjgyNjk0MTUxYzY2MDA5
YjBhMmM2NzI1YmRlZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaApAQCAtOTMsOSArOTMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMUHJvZ3Jh
bShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCopOworICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqKTsKICAgICB2b2lkIGNhY2hlSW5mb0lmTmVlZGVkKCk7
CiAKICAgICBWZWN0b3I8R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDE2NjIwYmQ4ZDg1ODI0Yjk1
ZTU3MzhkNTYwMjVmMTFhOWNiZWY4NjAuLjYxMjVkY2JmNGE4NDhiOTk5N2U3ZGNiZGViYjNkYjJk
ZWM1ZjA3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVl
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIFdlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3Jl
YXRlUXVlcnkoKSk7CiB9CiAKLXZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBs
YXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxh
dGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVRdWVyeShvYmpl
Y3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDVhNmMw
MzYxYTU5ODNiNzJlNGI0NmY4ZTgyNDk4Y2VjNjE5ZGUxNjUuLjk5MmY3Yzg3OGU4ODA4OGU0M2Fk
YzE3ZGY5MjE2ZDk1MmFmMTk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1
ZXJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIG1faXNSZXN1bHRBdmFpbGFibGUg
eyBmYWxzZSB9OwogICAgIEdDR0xlbnVtIG1fdGFyZ2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCmluZGV4IGQ0MGQ0ZTBiODU2
MWFmNTViZWZhZTdlNTEyZjAwNjE0MjUxMDk3ZjQuLmZkZTk5OThlMGZhMTc4OWM2MGQ3OGY4YjRj
MWU3ZWZkNDY3ZmIyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6Oldl
YkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBzZXRP
YmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xP
YmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUmVuZGVyYnVmZmVy
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAppbmRleCA0YTdmYTZjOWEyMzYxMmU0MWQyMzVkZWRhNGRjYzEwYzQyY2VjMDcxLi4x
MjRiNDM4Y2M1OWNmZGVjZjNjYzk0ZGY1MmIxNjgzYjEwY2Y0OWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1JlbmRlcmJ1ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggMzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0ZjM1OTE3NjZkMmIw
NC4uZDJmYWMyMDM2MjQ5OTU4NWUwZDUxNTU2Y2M1Y2E0ZTNhYWMzM2RhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmCiAgICAgcmV0dXJuIHJlbmRl
cmluZ0NvbnRleHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzKQorc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3Jh
cGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiB7CiAgICAgYXV0byByZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4obmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dChjYW52YXMs
IFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAgICAvLyBUaGlzIGlzIHZpcnR1YWwg
YW5kIGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3RydWN0b3IuCkBAIC0xMDUsNyArMTA1LDcg
QEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFz
ZSYgY2FudmFzLCBHcmFwaGljc0NvbnRleHQKIHsKIH0KIAotV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCitXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICA6IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UoY2FudmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDk0NWQ0YmIxMDUxM2QyZGI0ZjVhNDNlOTQ5
MTdhNjgyMWRiMjYyYjcuLmE3MTBhMGYxZTYyOTgyZWIyMGMwNzk1ODlmZTY1NDJmZWVlY2ZmZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBmaW5h
bCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNC
YXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMpOwogCiAgICAgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA5YTg3NjkzZGExNzk5OGY3YTZiMjgyZGFiZmQxZDcxZmVjN2I1NjUx
Li5mMzUwNmZiNjM4ZDY5ODA5MTU2MjdjM2Y5NTExZDI2YzQxMjFhZTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYxNyw3ICs2MTgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaWRBcHBseSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgYm9vbCBpc0hpZ2hQ
ZXJmb3JtYW5jZUNvbnRleHQoY29uc3QgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYg
Y29udGV4dCkKK3N0YXRpYyBib29sIGlzSGlnaFBlcmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0KQogewogICAgIHJldHVybiBjb250ZXh0LT5w
b3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6
SGlnaFBlcmZvcm1hbmNlOwogfQpAQCAtNzUzLDcgKzc1NCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYgY2FudmFzLCBX
ZWJHTENvCiAgICAgICAgIG1fY2hlY2tGb3JDb250ZXh0TG9zc0hhbmRsaW5nVGltZXIuc3RhcnRP
bmVTaG90KGNoZWNrQ29udGV4dExvc3NIYW5kbGluZ0RlbGF5KTsKIH0KIAotV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiBjYW52
YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4
dEdMPiYmIGNvbnRleHQsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICA6
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX2NvbnRleHQo
V1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fcmVzdG9yZVRpbWVyKGNhbnZhcy5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVS
ZXN0b3JlQ29udGV4dCkKQEAgLTE3ODYsNyArMTc4Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxlCiAgICAgaWYgKCF2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwod2lkdGgsIGhlaWdodCwgbGV2
ZWwsICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LAorICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250
ZXh0LmdldCgpKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCks
IGRhdGEuYmFzZUFkZHJlc3MoKSk7CiAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXByZXNzZWRUZXhJbWFnZTJE
IGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0
aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KQEAgLTM1NDksOSArMzU1MCwxMSBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3Jh
bSwgY29uc3QgV2ViRwogICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpGTE9BVDogewogICAgICAgICBHQ0dMZmxvYXQgdmFsdWVbMTZdID0gezB9Owor
I2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkK
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtZnZFWFQo
cHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDR0xmbG9hdCksIHZhbHVl
KTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1mdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVu
Z3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CkBAIC0zNTU5LDkgKzM1NjIs
MTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJH
TFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6SU5UOiB7CiAgICAgICAgIEdDR0xpbnQgdmFsdWVbNF0gPSB7MH07CisjaWYgIVVT
RShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1pdkVYVChwcm9ncmFt
Lm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dy
YW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKQEAgLTM1NzYsOSArMzU4MSwxMSBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYg
cHJvZ3JhbSwgY29uc3QgV2ViRwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpC
T09MOiB7CiAgICAgICAgIEdDR0xpbnQgdmFsdWVbNF0gPSB7MH07CisjaWYgIVVTRShBTkdMRSkK
ICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1pdkVYVChwcm9ncmFtLm9iamVjdCgp
LCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwgdmFsdWUpOwogICAgICAgICBlbHNlCisj
ZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0
KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CiAgICAgICAg
ICAgICBWZWN0b3I8Ym9vbD4gdmVjdG9yKGxlbmd0aCk7CkBAIC00MjU3LDcgKzQyNjQsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aAogICAgIH0KIAogI2RlZmluZSBJTlRFUk5BTF9GT1JNQVRf
Q0hFQ0sodHlwZU1hY3JvLCBwaXhlbFR5cGVNYWNybykgXAotICAgIGlmICh0eXBlICE9IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6
OnBpeGVsVHlwZU1hY3JvKSB7IFwKKyAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHRHTDo6
dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5cGVNYWNybykgeyBc
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VO
VU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJuYWwgZm9ybWF0Iik7
IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCkBAIC00MjY4LDcgKzQyNzUsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aAogICAgIENIRUNLX0NPTVBPTkVOVF9DT1VOVAogCiAjZGVmaW5l
IElOVEVSTkFMX0ZPUk1BVF9JTlRFR0VSX0NIRUNLKHR5cGVNYWNybywgcGl4ZWxUeXBlTWFjcm8p
IFwKLSAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHlwZU1hY3JvIHx8
IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5cGVNYWNybykgeyBcCisgICAgaWYgKHR5
cGUgIT0gR3JhcGhpY3NDb250ZXh0R0w6OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlwZSgpICE9
IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIsICJ0eXBlIGRvZXMgbm90
IG1hdGNoIGludGVybmFsIGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXApA
QCAtNDI3OCwxMyArNDI4NSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAgIH0gXAog
ICAgIENIRUNLX0NPTVBPTkVOVF9DT1VOVAogCi0jZGVmaW5lIENBU0VfUEFDS0VEX0lOVEVSTkFM
X0ZPUk1BVF9DSEVDSyhpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTBNYWNy
bywgcGl4ZWxUeXBlME1hY3JvLCB0eXBlMU1hY3JvLCBwaXhlbFR5cGUxTWFjcm8pIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwKLSAgICBpZiAoISh0
eXBlID09IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlME1hY3JvICYmIHBpeGVscy5nZXRU
eXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUwTWFjcm8pIFwKLSAgICAgICAgJiYgISh0eXBlID09IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlMU1hY3JvICYmIHBpeGVscy5nZXRUeXBlKCkgPT0g
SlNDOjpwaXhlbFR5cGUxTWFjcm8pKSB7IFwKKyNkZWZpbmUgQ0FTRV9QQUNLRURfSU5URVJOQUxf
Rk9STUFUX0NIRUNLKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlME1hY3Jv
LCBwaXhlbFR5cGUwTWFjcm8sIHR5cGUxTWFjcm8sIHBpeGVsVHlwZTFNYWNybykgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAorICAgIGlmICghKHR5cGUgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OnR5cGUwTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6
OnBpeGVsVHlwZTBNYWNybykgXAorICAgICAgICAmJiAhKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OnR5cGUxTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6OnBpeGVsVHlwZTFNYWNy
bykpIHsgXAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5W
QUxJRF9FTlVNLCAicmVhZFBpeGVscyIsICJ0eXBlIGRvZXMgbm90IG1hdGNoIGludGVybmFsIGZv
cm1hdCIpOyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXAotICAgIGlmIChmb3JtYXQgIT0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcm1hdE1hY3JvKSB7IFwKKyAgICBpZiAoZm9ybWF0
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpmb3JtYXRNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwg
IkludmFsaWQgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCkBAIC00Njk5
LDcgKzQ3MDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0aQogICAgICAgICAgICAgICAgIC8v
IFRoZSBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIHR5cGUgcGFjay91bnBhY2sgaXNuJ3Qg
aW1wbGVtZW50ZWQuCiAgICAgICAgICAgICAgICAgdHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpG
TE9BVDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0
SW1hZ2VEYXRhKHBpeGVscy5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkRhdGFGb3Jt
YXQ6OlJHQkE4LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdCwgZGVwdGgsIHVucGFja0ltYWdlSGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBo
YSwgZGF0YSkpIHsKKyAgICAgICAgICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRh
KHBpeGVscy5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQ6OlJHQkE4LCBhZGp1
c3RlZFNvdXJjZUltYWdlUmVjdCwgZGVwdGgsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgZGF0YSkpIHsKICAg
ICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9WQUxVRSwgInRleEltYWdlMkQiLCAiYmFkIGltYWdlIGRhdGEiKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQpAQCAtNTAxMyw3ICs1MDIwLDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEcKICAgICBBU1NFUlQodGV4KTsKICAgICBBU1NFUlQodmFsaWRhdGVO
UE9UVGV4dHVyZUxldmVsKHdpZHRoLCBoZWlnaHQsIGxldmVsLCAidGV4SW1hZ2UyRCIpKTsKICAg
ICBpZiAoIXBpeGVscykgewotICAgICAgICBpZiAoIW1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291
cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KSkKKyAgICAgICAgaWYgKCFzdGF0
aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPnRleElt
YWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZhbGlkYXRlU2V0dGFi
bGVUZXhJbnRlcm5hbEZvcm1hdCgidGV4SW1hZ2UyRCIsIGludGVybmFsRm9ybWF0KSk7CkBAIC01
NDg1LDggKzU0OTIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
VGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAgIFVOVVNFRF9QQVJB
TShpbnRlcm5hbEZvcm1hdCk7CiAjZWxzZQogICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb21iaW5h
dGlvbiBvZiBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCBhbmQgdHlwZSBpcyBzdXBwb3J0ZWQuCi0j
ZGVmaW5lIElOVEVSTkFMX0ZPUk1BVF9DQVNFKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1h
Y3JvLCB0eXBlMCwgdHlwZTEsIHR5cGUyLCB0eXBlMywgdHlwZTQpIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwKLSAgICBpZiAoZm9ybWF0ICE9IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JtYXRNYWNybykgeyBcCisjZGVmaW5lIElOVEVSTkFM
X0ZPUk1BVF9DQVNFKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlMCwgdHlw
ZTEsIHR5cGUyLCB0eXBlMywgdHlwZTQpIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OmludGVybmFs
Rm9ybWF0TWFjcm86IFwKKyAgICBpZiAoZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpmb3Jt
YXRNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBmb3JtYXQgZm9yIGlu
dGVybmFsZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCiAgICAgfSBcCkBAIC01
NjI1LDcgKzU2MzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogICAgIEdDR0xpbnQgY2xp
cHBlZFgsIGNsaXBwZWRZOwogICAgIEdDR0xzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWln
aHQ7CiAgICAgaWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZFJlYWRGcmFt
ZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5kUmVhZEZyYW1lYnVmZmVySGVpZ2h0KCksICZjbGlwcGVk
WCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsKLSAgICAgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+dGV4SW1hZ2UyRFJlc291cmNl
U2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LAogICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05F
RF9CWVRFLCBtX3VucGFja0FsaWdubWVudCk7CiAgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAw
ICYmIGNsaXBwZWRIZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGNsaXBwZWRYIC0geCwgY2xpcHBlZFkgLSB5LApAQCAt
NjQwNiw4ICs2NDEzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVG
YWxsYmFja0JsYWNrVGV4dHVyZXMxeDEoKQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmlzVGV4SW50ZXJuYWxGb3JtYXRDb2xvckJ1ZmZlckNvbWJpbmF0aW9uVmFsaWQoR0NHTGVu
dW0gdGV4SW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGNvbG9yQnVmZmVyRm9ybWF0KQogewotICAg
IGF1dG8gbmVlZCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRDaGFubmVsQml0c0J5Rm9y
bWF0KHRleEludGVybmFsRm9ybWF0KTsKLSAgICBhdXRvIGhhdmUgPSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChjb2xvckJ1ZmZlckZvcm1hdCk7CisgICAg
YXV0byBuZWVkID0gR3JhcGhpY3NDb250ZXh0R0w6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQodGV4
SW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gaGF2ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRD
aGFubmVsQml0c0J5Rm9ybWF0KGNvbG9yQnVmZmVyRm9ybWF0KTsKICAgICByZXR1cm4gKG5lZWQg
JiBoYXZlKSA9PSBuZWVkOwogfQogCkBAIC03NDg0LDcgKzc0OTEsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgIGlmICghaG9zdFdp
bmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUobV9hdHRyaWJ1dGVz
LCBob3N0V2luZG93KSk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjb250ZXh0KEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUobV9hdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7
CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChtX2NvbnRleHRMb3N0TW9kZSA9PSBS
ZWFsTG9zdENvbnRleHQpCiAgICAgICAgICAgICBtX3Jlc3RvcmVUaW1lci5zdGFydE9uZVNob3Qo
c2Vjb25kc0JldHdlZW5SZXN0b3JlQXR0ZW1wdHMpOwpAQCAtNzc2MCw3ICs3NzY3LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGMKIAogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIp
CiAgICAgaWYgKGlzV2ViR0wyKCkpCi0gICAgICAgIG1fY29udGV4dC0+cHJpbWl0aXZlUmVzdGFy
dEluZGV4KGdldFJlc3RhcnRJbmRleCh0eXBlKSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+cHJpbWl0aXZlUmVzdGFydElu
ZGV4KGdldFJlc3RhcnRJbmRleCh0eXBlKSk7CiAjZW5kaWYKIAogICAgIG1fY29udGV4dC0+ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDxHQ0dMaW50
cHRyPihvZmZzZXQpLCBwcmltY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDI5MWI5YWVkZjMzODQx
NmViYWVkYjM4OWE3OTVhMjlmYThhZGRiZWIuLmE3MWQwMzZhYTBkZWE1MmI0NTc5MDlmYmZmZGMz
YWRmODBmNTEwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgog
I2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTI0LDcgKzEyNCw3IEBAIHVzaW5nIFdlYkdMQ2FudmFz
ID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4sIFJlZlB0cjxPZmZzY3Jl
ZW5DYW52CiB1c2luZyBXZWJHTENhbnZhcyA9IFdURjo6VmFyaWFudDxSZWZQdHI8SFRNTENhbnZh
c0VsZW1lbnQ+PjsKICNlbmRpZgogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDog
cHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpDbGllbnQsIHB1YmxpYyBHUFVCYXNlZENh
bnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
IHsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJp
dmF0ZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBjcmVhdGUoQ2FudmFzQmFz
ZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmLCBjb25zdCBTdHJpbmcmKTsKQEAgLTM3Nyw3ICsz
NzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb3NlQ29udGV4dEltcGwoTG9zdENvbnRleHRNb2Rl
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGlj
c0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdM
Q29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91
cC5nZXQoKTsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKIApAQCAtNDI3LDcgKzQyNyw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMpOwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFJlZjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7CisgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdM
PiYmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsKIAogICAgIGZyaWVuZCBjbGFzcyBFWFRUZXh0
dXJlQ29tcHJlc3Npb25SR1RDOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERyYXdCdWZmZXJzOwpA
QCAtNTI3LDcgKzUyNyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG5lZWRzUHJlcGFyYXRpb25G
b3JEaXNwbGF5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0Owog
ICAgIFJlZlB0cjxXZWJHTENvbnRleHRHcm91cD4gbV9jb250ZXh0R3JvdXA7CiAgICAgTG9jayBt
X29iamVjdEdyYXBoTG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2Ft
cGxlci5jcHAKaW5kZXggYjcyMDQyNTgyM2UzNjM1NmVhMmY3MDQ1NzA4Y2U1MTQxNWFjYjA3NS4u
YjBiN2RkZDljNDNjZjIwMDU5NTQ4ZjA0OGQzOWMwMzE0NDg4MDNjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkdM
U2FtcGxlcjo6V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAg
ICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVNhbXBsZXIoKSk7CiB9
CiAKLXZvaWQgV2ViR0xTYW1wbGVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVj
dCBvYmplY3QpCit2b2lkIFdlYkdMU2FtcGxlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmpl
Y3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlU2FtcGxlcihvYmplY3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCA5YjExODNlNWQ3
M2RlMjYwNWU3MWQ0OTg3MGE2ODQwOTBjMjExNWUwLi40ZTEwZDc3MTczNTAxMDljODhhMTk5YzUx
ZTdmMjFhZDgwNWE4MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBs
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRm
b3JtR0xPYmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCmluZGV4IGM3MGQwYTQ2ZDZjOWI4
ZTRmZmQ4MjA1NWEzMTIyZGIwYmQxNjExNDQuLjdmMjIxOWI0YjI1NzdlODc1NjdlNjY4NDE0Njc5
ZjE0MWM0MWQyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViR0xTaGFkZXI6On5XZWJHTFNoYWRlcigpCiAgICAgcnVu
RGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdMU2hhZGVyOjpkZWxldGVPYmplY3RJbXBsKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU2hhZGVyOjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVTaGFkZXIo
b2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCmluZGV4
IDdiNDczM2FiY2U3ZWM0YWVjNDdhNGZkNTAyOWYxNDIwNmM4ZmY4NzkuLjkzNGIzZGMxOGFmMzQ3
YzNkNTBmYWU0YjA2NWM5ODI5ZjBiZDk5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdl
YkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBHQ0dMZW51bSk7CiAKLSAgICB2
b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gbV90eXBlOwogICAg
IFN0cmluZyBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oCmluZGV4IDdhYjQyMjBhZTEwZDE3N2Q1MThl
MjgxMWE4ZjFhZDMwNzg3ZGJlMzkuLjU5N2QzZjAwYjRjM2Y2Mzk0MmUxZDM2Y2ZhMGU0ZDExYmUy
MjE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXJQcmVjaXNpb25Gb3JtYXQuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hh
cmVkT2JqZWN0LmNwcAppbmRleCA3MTgyNmE0ZjUzMDc2YWZiODFkMWRmZjdkNmZiMzkwZDBlYWIw
M2IzLi45MzZjOTgxYzk5MjkwZDhlN2NlZjk4YjEzYjU2OTNjYmViMjM3OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIGJvb2wgV2ViR0xTaGFyZWRPYmplY3Q6Omhhc0dyb3VwT3JDb250ZXh0KCkgY29u
c3QKICAgICByZXR1cm4gbV9jb250ZXh0R3JvdXAgJiYgbV9jb250ZXh0R3JvdXAtPmhhc0FDb250
ZXh0KCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBXZWJHTFNoYXJlZE9iamVjdDo6
Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dEdMKiBXZWJHTFNo
YXJlZE9iamVjdDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb250ZXh0R3JvdXAgPyAmbV9jb250ZXh0R3JvdXAtPmdldEFHcmFwaGljc0NvbnRleHRHTCgp
IDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oCmluZGV4IGJkY2VjNmUwMmU0YWY2ZjIyNzgzYTNlNjExMzljMjA0NDE2MGEyZjUu
LjVkMTNhZmEzODQ2YWEyMTUzMGMwYWJkNTM5MGFhMWU3OThlOWUxZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBMb2NrOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTENvbnRl
eHRHcm91cDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKQEAgLTY2LDcgKzY2
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNHcm91cE9yQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdldEFHcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBnZXRBR3JhcGhp
Y3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJHTENvbnRl
eHRHcm91cCogbV9jb250ZXh0R3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmNwcAppbmRleCAxNzlkNDg2YWIyMjIwZjRlOTUyYjQxN2RkNzRkNjc1MjBmNTBlNWI5Li40
YTQyMGJmMGExMTZjY2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViR0xTeW5jOjpX
ZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdCgt
MSk7CiB9CiAKLXZvaWQgV2ViR0xTeW5jOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9i
amVjdCBvYmplY3QpCit2b2lkIFdlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmpl
Y3Qgb2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIGNvbnRleHQzZC0+
ZGVsZXRlU3luYyhtX3N5bmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaApp
bmRleCBjM2QzMjY0Yjg2MGRlOWY3ZGU3MzQzNTBiMzEwOGVmOWQzYTdjMDJmLi42MGFiMDZhOTIz
ZjVlMDkyNmNjOWJmODViMGEwNTFmMmU0ZGE4MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIEdDR0xpbnQgbV9z
eW5jU3RhdHVzID0geyBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdOQUxFRCB9OwogICAgIEdDR0xz
eW5jIG1fc3luYzsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmNwcAppbmRleCBhMzk4NmRhNTAyYjllNGUwY2I2ZTYwODQ4OGUyNjA5ZWJm
ZjMxZWQ4Li4wYTdhMDFkMjk1YjE1MWFiNTViMjk0YjM3MDgyZmUzODIxNmFhMDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgdm9pZCBXZWJHTFRleHR1cmU6OnNldFRhcmdldChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bWF4TGV2ZWwpCiAjZW5kaWYgLy8gVVNFKEFOR0xFKQogfQogCi12b2lkIFdlYkdMVGV4dHVyZTo6
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFRl
eHR1cmU6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250
ZXh0M2QtPmRlbGV0ZVRleHR1cmUob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmgKaW5kZXggZGUyOWY4Yjg3NTdlNzkxY2RhOTllOGUwMTllYjdkYjhh
NTllMmIxOC4uYTg1YWM3ODhlN2YxNzk3NmJlYTU0NjdjM2QyMDFkYzg4ZmZkNmVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTkwLDcgKzkwLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAg
IGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2su
Y3BwCmluZGV4IDAyNmViYjdhMmMxMzIyYmM5Y2JhMDVjODkxNDg4OWNlM2E4MzY4ZmUuLmE0NTQ5
YmQ5NTg4YzNkMzllZmUxM2JlMTQ5NGViMjZkN2IwZTk4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2so
V2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY3R4KQogICAgIG1fYm91bmRJbmRleGVkVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzLnJlc2l6ZShjdHgubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0
dHJpYnMoKSk7CiB9CiAKLXZvaWQgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6ZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4
dDNkLT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCmluZGV4IDdiOTk0
YjMwNmRlNDQ2YWFmZTFmY2Q3MGRmYmIwN2JlYjVkZjUyOWIuLjdiYzIxMzI5OTgyYjNlYzM5NzNk
OWRhMTg3MDYwOGJhNTQ0MDY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgYm9vbCBtX2FjdGl2ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhdXNlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwCmluZGV4IDRlYmRlYmNhYTczYWU1ODI4NGU3ZmExZDU3NGM0MWE1MmM2YjcwNTgu
LmQwZWVkN2E0NWE5Y2JiMzI4YjRjMzYyOGFmMTNmMGM4OGNiZjQxZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlP
YmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4CiAgICAgc2V0T2JqZWN0KHRo
aXMtPmNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlVmVydGV4QXJyYXkoKSk7
CiB9CiAKLXZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4
dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dDo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAppbmRleCA0NzRm
YmQ0MzU0YThiYzkxMDQ0MTRkMzNiNjZjZDZlMzRmZTE1ZjYwLi5mN2IzNmE5Zjk4ZjJlZDRkZjE1
MmY3Y2NhMzhhNmNkYzcwYmNiYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2YXRlOgogICAgIFdl
YkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwot
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29u
dGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaAppbmRleCAxYzZiNjcyYTA3ZmEyZjQxNWE3NmM5MzgzYjQ0MGYx
NzJhMmIxODM0Li41YTkzNmIyODRmYzFmZGRmNmFmZWRlNzVlZmRjODYxNWU3NzJkZjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0wuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4
dE9iamVjdC5oIgogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBU
eXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUg
PSAwOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1faGFzRXZlckJlZW5Cb3VuZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCmluZGV4IDVmZTgxZGJmZjg4YmE0ZmM2YWJiODhlMjNhOTc4M2VlOGMx
YWMxZDMuLmRlNGFmN2U3YTZhNTkxZDYyODQ1OTE2YzkzOGNkY2Y0Y2NjMjBjZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6On5X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkKICAgICBydW5EZXN0cnVjdG9yKCk7CiB9CiAKLXZv
aWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmgKaW5kZXggMGMxNTllYWNlOTI2YjA5NWRiNWVhNjMyZGUzYWE2MTQyNWMwNzZlZi4uNjJjOGY3
YzMyZmU1NjViNmI1NzJiN2YwZGUxMjFmODNkNmEzOTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UygpOwogcHJpdmF0ZToKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
V1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1H
TE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDY5Mzc3OGRmNmUwMjBj
YjAxODAxZTc1YzhlMzk5NTNkOWYxNzI2MmMuLjdhMDQyMGQ3ZmZhZmQ2NDhlNGI2ZDU3MTQ4Y2Qw
MjQ3YjM4NGVmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVk
ZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggZjk2MGY4MDQwMjEz
YTFiMjAzMzgxMjg3MjIxMGZkYWZkNjYyZjA3Ni4uOTMwODAwN2Q5NzIyNzQ5NjU1Y2FjMzg1MmFh
OGZkYzhkYWI0NGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBjb3B5VG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQsIEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGNvbnN0IG92ZXJy
aWRlCisgICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmIGNv
bnRleHQsIEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1
cmUsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+Y29w
eVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRhcmdldCwgZGVzdGluYXRpb25UZXh0dXJlLCBp
bnRlcm5hbGZvcm1hdCwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAwZjVkYmJhYmZiMTQ4
ZGYwYWQyMzI3ZTA0ZWQzMTBmZDcxOGUxZWM5Li4zNGYxN2VjNjFiMzMxMDM3MWMyZGRiZDBhMDE3
NWM2MGI5M2QxNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaApAQCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgQ09MT1Jf
QVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRgogICAgIH07CiAKKyAgICAvLyBXZWJHTCBmdW5jdGlv
bnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCisKICAgICAvLyBH
TF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3IgZGlm
ZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIHNwZWNpZmljYXRpb24gaW4g
dGhlIGZvbGxvd2luZyB3YXk6CkBAIC0yNzMsNyArMjc1LDcgQEAgcHVibGljOgogICAgIC8vIElm
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwgaXQgc2hvdWxkIGNv
bnRpbnVlCiAgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0b3JpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKICAgICAvLyBleHRlcm5hbGx5LgotICAg
IHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihs
b25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgw
LCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ss
IHVuc2lnbmVkIGxvbmcgZmlsdGVyKSA9IDA7CkBAIC0yOTAsMTEgKzI5Miw2IEBAIHB1YmxpYzoK
ICAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgPSAw
OwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlm
b3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgaW50ICpwYXJhbXMpID0gMDsKLQogICAgIC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwpAQCAt
MzA4LDYgKzMwNSw4NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
PSAwOwogCisgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xmbG9hdCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVn
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFk
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZs
b2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiog
cG9pbnRlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCog
cGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBw
aXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGlu
dCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkg
PSAwOyAvLyBOT0xJTlQKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBk
YXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJp
NjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBh
cmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1
YWwgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1
aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9h
dCogdmFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBh
cmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBh
cmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQq
IHBhcmFtcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NH
THVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgPSAwOworCisgICAgLy8gT3RoZXIgZnVuY3Rpb25z
LgorI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHZvaWQqIGRh
dGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGZsb2F0KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1z
KSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzSW50ZWwoKSA9IDA7
CkBAIC0zMTksNzUgKzM5NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNC
dWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
UmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKIAotICAgIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5H
TEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGJvb2xlYW4gKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRhdGEpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKmRhdGEp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBz
aGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBp
eGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3Ms
IHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkRS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBk
YXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpw
aXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVn
ZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2
NCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQg
KnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3Jh
bUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xl
YW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFt
ZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICp2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
c2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
aW50ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2NCAqcGFyYW1zKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcAppbmRleCAxMGI1OTk3MDIz
Njg3NzcxYzZlZjQxNzA5NDUzMzYwZjVjMzE5YjBhLi5kY2JjOGJiNDA4NWViYmNkNmNjM2M1Mzkz
N2RlNDM3NzQ3MmI4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKQEAgLTE3MTksNyArMTcxOSw3IEBAIEFMV0FZU19J
TkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoKQogICAgIH0K
IAogICAgIC8vIE9ubHkgdGV4dHVyZXMgdXBsb2FkZWQgZnJvbSBET00gZWxlbWVudHMgb3IgSW1h
Z2VEYXRhIGNhbiBhbGxvdyBEc3RGb3JtYXQgIT0gU3JjRm9ybWF0LgotICAgIGNvbnN0IGJvb2wg
c3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YShTcmNGb3Jt
YXQpOworICAgIGNvbnN0IGJvb2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VE
YXRhID0gR3JhcGhpY3NDb250ZXh0R0w6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPcklt
YWdlRGF0YShTcmNGb3JtYXQpOwogICAgIGlmICghc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVu
dE9ySW1hZ2VEYXRhICYmIFNyY0Zvcm1hdCAhPSBEc3RGb3JtYXQpIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3MzMsNyArMTczMyw3IEBAIEFM
V0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoKQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAoKCFHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAh
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omhhc0NvbG9yKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpoYXNDb2xvcihEc3RGb3JtYXQpKSAmJiBhbHBoYU9wICE9IEdyYXBo
aWNzQ29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcpIHsKKyAgICBpZiAoKCFHcmFwaGljc0Nv
bnRleHRHTDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0w6Omhhc0Nv
bG9yKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29udGV4dEdMOjpoYXNDb2xvcihEc3RGb3JtYXQp
KSAmJiBhbHBoYU9wICE9IEdyYXBoaWNzQ29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CmluZGV4IGY0Y2RkNmU3ZmU4Nzc2Yzg4YjZmOTY2YmNiNDA0ZGQ2NDA4MzkwODAuLmM2ZjUxMjZl
ZGU1Y2JkNmM3NTMyOTM4YmNjZTg2YzkzNzY1NDMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVBcnJheS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwOGFiM2IyMjAwZmE5ZDJkN2Q1YmE1ZTViYjNh
NThhZGNjMTI1NmMzLi40NTM5ZmJiNmRiZjNlYzc4M2M2MTMzODZlYTI1NDk0ZjRlYjZiMWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFBhdGg7CiBj
bGFzcyBUZXh0UnVuOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggYTE2ZjU4ZGIzYTQwYTRhZTU3ZmY5YTdhYzExNThkNzg3MWEzZWZmMy4uZGY0YTExOWEzMjBk
YWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNzM0LDg3ICs3
MzQsNiBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0
ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eQogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6Tk9fRVJST1I7CiB9CiAKLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBHcmFwaGljc0NvbnRl
eHRHTDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKQotewotI2RlZmlu
ZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1h
Y3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgICAgICBmb3Jt
YXQgPSBmb3JtYXRNYWNybzsgXAotICAgICAgICB0eXBlID0gdHlwZU1hY3JvOyBcCi0gICAgICAg
IGJyZWFrOwotCi0gICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkgewotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdCLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBLCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0VfQUxQSEEsIExVTUlOQU5DRV9B
TFBIQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
TFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBIQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgsIFJFRCwgVU5TSUdORURfQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhfU05PUk0sIFJFRCwgQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2RiwgUkVELCBIQUxGX0ZMT0FUKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJGLCBSRUQsIEZMT0FUKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOFVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhJLCBSRURfSU5URUdFUiwg
QllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2VUksIFJFRF9JTlRF
R0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVEX0lOVEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBSRywgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4X1NOT1JNLCBSRywgQllURSk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkYsIFJHLCBIQUxGX0ZMT0FUKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyRiwgUkcsIEZMT0FUKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhVSSwgUkdfSU5URUdFUiwgVU5TSUdORURfQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4SSwgUkdfSU5URUdFUiwgQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNlVJLCBSR19JTlRFR0VS
LCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcx
NkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lOVEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdCLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOCwgUkdCLCBVTlNJR05FRF9CWVRFKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1NjUsIFJHQiwgVU5TSUdORURfU0hPUlRf
NV82XzUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhfU05PUk0sIFJH
QiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjExRl9HMTFGX0Ix
MEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVik7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwgUkdCLCBVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2RiwgUkdCLCBIQUxGX0ZM
T0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMkYsIFJHQiwgRkxP
QVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhVSSwgUkdCX0lOVEVH
RVIsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QjhJLCBSR0JfSU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkksIFJHQl9JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVE
X0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJJLCBSR0JfSU5U
RUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOCwgUkdC
QSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoU1JH
QjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdCQSwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdCQSwgVU5TSUdORURfU0hPUlRfNV81XzVfMSk7Ci0g
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTQsIFJHQkEsIFVOU0lHTkVEX1NI
T1JUXzRfNF80XzQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0Ey
LCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJHQkEsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkYsIFJHQkEsIEZMT0FUKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOFVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0JZ
VEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4SSwgUkdCQV9JTlRF
R0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxMF9BMlVJ
LCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURf
U0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkksIFJHQkFf
SU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEz
MkksIFJHQkFfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9JTlQpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDE2LCBERVBUSF9DT01QT05FTlQsIFVO
U0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9D
T01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDI0LCBERVBUSF9DT01QT05FTlQs
IFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhf
Q09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05FTlQsIEZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVOQ0lMLCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9J
TlRfMjRfOCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgyNF9TVEVO
Q0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURfSU5UXzI0XzgpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJGX1NURU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBGTE9B
VF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIFVO
U0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lv
bnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIFVOU0lH
TkVEX0JZVEUpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0j
dW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0j
ZW5kaWYgLy8gIVVTRShBTkdMRSkKLQogYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6cGFja0ltYWdl
RGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIHBpeGVscywgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIGZsaXBZLCBBbHBoYU9wIGFscGhhT3AsIERhdGFGb3JtYXQgc291
cmNlRm9ybWF0LCB1bnNpZ25lZCBzb3VyY2VJbWFnZVdpZHRoLCB1bnNpZ25lZCBzb3VyY2VJbWFn
ZUhlaWdodCwgY29uc3QgSW50UmVjdCYgc291cmNlSW1hZ2VTdWJSZWN0YW5nbGUsIGludCBkZXB0
aCwgdW5zaWduZWQgc291cmNlVW5wYWNrQWxpZ25tZW50LCBpbnQgdW5wYWNrSW1hZ2VIZWlnaHQs
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBpZiAoIWltYWdlIHx8ICFwaXhlbHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaAppbmRleCAwMDdjOTNjMTBkMTdmNjgyYzJhNTg2YmY3MTAxMTlhYWVjYzE0ZTQ1Li5kOWU1
ODhhZmEzMGRiYTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTkxOSw3
ICs5MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsg
bV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENsaWVudCYg
Y2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAotICAgIC8vID09PT09PT09
PT0gV2ViR0wgMSBlbnRyeSBwb2ludHMuCisgICAgLy8gV2ViR0wgZnVuY3Rpb25zIGluIGZvcm1h
dCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgogCiAgICAgdmlydHVhbCB2b2lkIGFj
dGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikgPSAwOwpAQCAtMTA5OSw1MyArMTA5OSwyOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBj
b25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVtIHVzYWdlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlw
dHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZCogZGF0
YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBp
eGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51
bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAotICAgIEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0cnM7IH0KLSAgICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9Ci0gICAg
Ly8gQ29uY2Vzc2lvbiB0byBDYW52YXMgY2FwdHVyZVN0cmVhbSwgd2hpY2ggbmVlZHMgdG8gZHlu
YW1pY2FsbHkgc2V0Ci0gICAgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyIHRvIHRydWUgaW4gb3Jk
ZXIgdG8gYXZvaWQgaW1wbGljaXQgY2xlYXJzLgotICAgIC8vIEltcGxlbWVudGF0aW9ucyBnZW5l
cmFsbHkgZG8gbm90IHN1cHBvcnQgdG9nZ2xpbmcgdGhpcyBiaXQgYXJiaXRyYXJpbHkuCi0gICAg
dmlydHVhbCB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwotCiAgICAgLy8gVmVy
dGV4QXJyYXlPamVjdCBjYWxscwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVW
ZXJ0ZXhBcnJheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVydGV4QXJyYXkoUGxh
dGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNWZXJ0ZXhBcnJh
eShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRWZXJ0ZXhBcnJh
eShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VC
R0wyKQotICAgIHZpcnR1YWwgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpID0g
MDsKLSNlbmRpZgotCi0gICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5v
bi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAotICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5z
IG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCi0gICAgLy8gY3VycmVudCBoYXJk
d2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwotICAgIC8vIGRldGVy
bWluZSB0aGlzLgotICAgIHZpcnR1YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAw
OwotCiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50cy4KIAotICAgIHZpcnR1
YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NH
TGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgbGVuZ3RoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIg
cmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0
T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQqIG1hcEJ1ZmZl
clJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBs
ZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0x2b2lkKiBt
YXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dM
Ym9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikgPSAwOwpAQCAtMTI0MywxOSArMTIxOSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
R0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtQmxv
Y2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAotICAgIC8vIHRleFN1
YkltYWdlMkQgd2l0aCBwaXhlbCBwYWNrIGJ1ZmZlciwgYW5kIHNyY0RhdGErb2Zmc2V0LCBhcmUK
LSAgICAvLyBzdXBwb3J0ZWQgb25seSB2aWEgQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkuCi0K
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29u
c3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkgPSAwOwot
CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7CkBAIC0xMjcwLDEwICsxMjM2LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkg
PSAwOworICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KIAotICAgIC8vID09PT09PT09PT0gTm9uLVdl
YkdMIGJhc2VkIGVudHJ5IHBvaW50cy4KKyAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
Y29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJzOyB9CisgICAgdm9pZCBz
ZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQorCisgICAgLy8gRklYTUU6IFRoZSBjYWxsaW5nIHNp
dGUgc2hvdWxkIGJlIGZpeGVkLCB0aGlzIGJyZWFrcyB0aGUgV2ViR0wgc3BlYworICAgIC8vIHdy
dCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UgYmVoYXZpb3IuCisgICAgLy8gQ29uY2Vz
c2lvbiB0byBDYW52YXMgY2FwdHVyZVN0cmVhbSwgd2hpY2ggbmVlZHMgdG8gZHluYW1pY2FsbHkg
c2V0CisgICAgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyIHRvIHRydWUgaW4gb3JkZXIgdG8gYXZv
aWQgaW1wbGljaXQgY2xlYXJzLgorICAgIC8vIEltcGxlbWVudGF0aW9ucyBnZW5lcmFsbHkgZG8g
bm90IHN1cHBvcnQgdG9nZ2xpbmcgdGhpcyBiaXQgYXJiaXRyYXJpbHkuCisgICAgdmlydHVhbCB2
b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworCisgICAgLy8gU3VwcG9ydCBmb3Ig
ZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAorICAgIC8v
IGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24g
dGhlCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3Vw
cG9ydHMoKSB0bworICAgIC8vIGRldGVybWluZSB0aGlzLgorICAgIHZpcnR1YWwgRXh0ZW5zaW9u
c0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHRWaXNp
YmlsaXR5KGJvb2wpID0gMDsKIApAQCAtMTI5MSwyMSArMTI3MSw0MyBAQCBwdWJsaWM6CiAgICAg
Ly8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KICAgICB2aXJ0dWFsIHZv
aWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpID0gMDsKIAorICAgIC8vIFJlYWQg
cmVhbCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBzeW50aGV0aWMKKyAgICAv
LyBlcnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgbW92ZWQu
CisgICAgdmlydHVhbCBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpID0gMDsK
KwogICAgIHZpcnR1YWwgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgPSAwOwogCisgICAgLy8gRklYTUU6
IHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgc2hvdWxkIGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBz
dGF0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOworCisgICAg
Ly8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMgaW50ZXJlc3RlZCBp
biBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAorICAgIC8vIHNob3VsZCB0cmFjayB0aGF0IGluIGEg
dmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxkIHJlY2VpdmUKKyAg
ICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0ZSgpLgorICAgIHZp
cnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKKyAgICB2aXJ0dWFsIEdD
R0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7CisKKyAgICAvLyBG
SVhNRTogdGhlc2Ugc2hvdWxkIGJlIHJlbW92ZWQsIHRoZXkncmUgcGFydCBvZiBkcmF3aW5nIGJ1
ZmZlciBhbmQKKyAgICAvLyBkaXNwbGF5IGJ1ZmZlciBhYnN0cmFjdGlvbnMgdGhhdCB0aGUgY2Fs
bGVyIHNob3VsZCBob2xkIHNlcGFyYXRlIHRvCisgICAgLy8gdGhlIGNvbnRleHQuCisgICAgdmly
dHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBi
ZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5CisgICAg
Ly8gcHJlcGFyaW5nIGZvciBkaXNwbGF5LCBzbyB0aGF0IGNhbnZhcyBpbWFnZSBidWZmZXIgYW5k
IHRoZSBsYXllciBhZ3JlZQorICAgIC8vIG9uIHRoZSBjb250ZW50LgorICAgIHZpcnR1YWwgdm9p
ZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRl
Q29udGV4dENoYW5nZWQoKSA9IDA7CisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCiAgICAgLy8gUmV0dXJucyBpbnRlcmZhY2UgZm9yIENWIGludGVyYWN0aW9uIGlmIHRo
ZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRH
TENWKiBhc0NWKCkgPSAwOwogI2VuZGlmCiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEhlbHBl
ciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXpl
ZCB0byAwLgotICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVk
LgotICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQg
c2V0dGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25tZW50ID0gNCkgPSAgMDsKLSNlbmRpZgog
CiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCk7IH0KIApAQCAtMTMzNSwx
MCArMTMzNyw2IEBAIHB1YmxpYzoKICAgICAvLyAgIElOVkFMSURfRU5VTSBpZiBmb3JtYXQvdHlw
ZSBpcyBpbGxlZ2FsLgogICAgIHN0YXRpYyBHQ0dMZW51bSBjb21wdXRlSW1hZ2VTaXplSW5CeXRl
cyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBjb25zdCBQaXhlbFN0b3JlUGFyYW1zJiwgdW5z
aWduZWQqIGltYWdlU2l6ZUluQnl0ZXMsIHVuc2lnbmVkKiBwYWRkaW5nSW5CeXRlcywgdW5zaWdu
ZWQqIHNraXBTaXplSW5CeXRlcyk7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHN0YXRpYyBib29s
IHBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSYgZm9ybWF0LCBHQ0dMZW51bSYgdHlwZSk7Ci0jZW5kaWYgLy8gIVVT
RShBTkdMRSkKLQogICAgIC8vIEV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4gSW1h
Z2VEYXRhIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCiAgICAgLy8gcGFja2luZyB0aGUgcGl4ZWwg
ZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdCBhbmQgdHlwZSwKICAgICAvLyBhbmQg
b2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5QWxwaGEgZmxhZ3MuIFJldHVybnMgdHJ1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVz
R0wuaAppbmRleCBmMzUxY2ZiOGQ4ZmUxNmI3NjhmMjNhNGRhNmJkYTc0NTA1ZGQ2MWY5Li42OTlk
ZTI4YmFlYjkyY2MyNTMzOTRkYmE4MGI3ZTdhNzhlMTNmNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApAQCAtNDgsNiArNDgs
NyBAQCB0eXBlZGVmIGNoYXIgR0NHTGNoYXI7CiB0eXBlZGVmIGxvbmcgbG9uZyBHQ0dMaW50NjQ7
CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwogdHlwZWRlZiBzdHJ1Y3Qg
X19HTHN5bmMqIEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOwogCiB0eXBlZGVmIEdD
R0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGI5MTM0ZGQ3MmNlZTI4ZTZhMWFiNjVlZmYyYzA3
YTZkNTMxNzgwNTEuLmQxNDg5OWYwMTcwM2NlMzE3NDRlYmE4ZTI3Nzk2N2ExZjg5OGJjZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAt
MTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBjdXJyZW50IGltcGxlbWVu
dGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0cmljdGlvbiB0aGF0IHRoZXkgb25s
eSB3b3JrCiAgICAgLy8gd2l0aCB0ZXh0dXJlcyB0aGF0IGFyZSBSR0Igb3IgUkdCQSBmb3JtYXQs
IGFuZCBVTlNJR05FRF9CWVRFIHR5cGUuCi0gICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
b3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCmluZGV4IDFhYjBhMjFmZjk0OTg5OWY5OGJkYTllMDBhMDZmZGZmZGIwZDM2
M2IuLjBiODQwMDkyMTIwNDYxNjQwOTdjOTM0ZTY2ZTUyODkzYmUzMmQxZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZURh
dGE7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
dmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAyODgzNDhl
NTJhMWVlM2ZiOWQxYTE3ZDc3NDY4NGQ2OWQ2YjQxMjM5Li44YjBkNzNlOGQ4MjRmZGI2OWNmZjA2
OThjODJmODlkMDkxODVhNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBt
X3ByaXZhdGUtPnBhaW50KHAsIHIpOwogfQogCi1ib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxheWVyOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRl
eHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1
cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IDJhYjE1ODk5NWQ3ZDJlZWRhZjMwN2M2Nzk1MmMzZmY2YmVk
ZjRjNzEuLmQyNTIwYWNiYmJiMWE2OThjYTNkNDA3MDY2MmYxZDNmZDk2ODcwNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNjYsNyAr
NjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwog
Y2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xhc3MgTGVn
YWN5Q0RNOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZGVzdGluYXRp
b24gdGV4dHVyZSBtYXkgbmVlZCB0byBiZSByZXNpemVkIHRvIHRvIHRoZSBkaW1lbnNpb25zIG9m
IHRoZSBzb3VyY2UgdGV4dHVyZSBvciByZS1kZWZpbmVkIHRvIHRoZSByZXF1aXJlZCBpbnRlcm5h
bEZvcm1hdC4KICAgICAvLyBUaGUgY3VycmVudCByZXN0cmljdGlvbnMgcmVxdWlyZSB0aGF0IGZv
cm1hdCBzaG91ZCBiZSBSR0Igb3IgUkdCQSwgdHlwZSBzaG91bGQgYmUgVU5TSUdORURfQllURSBh
bmQgbGV2ZWwgc2hvdWxkIGJlIDAuIEl0IG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZS4KIAot
ICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CisgICAgYm9v
bCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDdlOTBj
ZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYuLmY5YjkyMDYxOTBkNWFlZDA2ZDBk
ODhjMGM3NDE1Y2UxNjRkYTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xp
bnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxv
YWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4
IDEzZmFmNWRiNjRmZmIyODZiZTZhZDk1Nzk1MDk1ZmNjOTNmMzMzOTQuLjFjOGJjNDI1NTBmMWMx
ZDk1YzMwODJmNjczNzZhNTY5NTA2YmZhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAg
LTE0OCwyMSArMTQ4LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6ZUF2YWls
YWJsZUV4dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNpb25zID0g
dHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNFWFQoaW50LCBp
bnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwg
dm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgZmxvYXQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIGlu
dCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9u
ZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwg
bG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1
bnNpZ25lZCBsb25nIGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1
cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgpAQCAtNDYyLDYgKzQ0Nyw4
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2CiAgICAgICAgIHJldHVybjsKIAogICAgIGdsOjpD
b21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7Cisg
ICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+bV9z
dGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworCiB9CiAKIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQpAQCAtNDcwLDYgKzQ1Nyw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2w6OkNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOworICAgIG1f
Y29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29t
cHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4
IDQ2YWFjOWYyMWVlMjdjYzc1YTA4Y2Y3YzFiNzVhMTBhZTQ1NzI4MjAuLjEyNTY5NTY3YzE3Yzky
NmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICBHQ0dMaW50IGdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNjMsMTEgKzYzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0g
dXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lkIHJlYWRuUGl4ZWxzRVhU
KGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAgIGJvb2wgaXNO
VklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9CiAgICAgYm9vbCBpc0FNRCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KICAgICBib29sIGlzSW50ZWwoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KQEAgLTg4LDM0ICs4MywzNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1
c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dz
LCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNp
emVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIHZvaWQg
dGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50
IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlv
ZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1Yklt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dM
dm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
M0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdD
R0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKworICAgIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBpbnQgKmRh
dGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0SW50
ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7IC8v
IE5PTElOVAogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pIG92ZXJy
aWRlOwpAQCAtMTI0LDE2ICsxMTksMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsgLy8gTk9M
SU5UCiAgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQg
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9h
dCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJv
YnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1
c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA1MDA5
ODljYmE5NjVkN2NkYzk5ZDE1NTA2MDU5OGY3N2VhMDQ1YjQxLi5kZjZmMzRjOWQ2MThkMDdhZGYy
MTk4NWEzMDFjYmU0MTQyOTM5MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cApAQCAtMjA1MCwyNCArMjA1MCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMCiAgICAgbV9z
dGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0
YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBj
b25zdCB2b2lkKiBkYXRhKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
ZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
QEAgLTIyODcsMTYgKzIyNjksNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLAogICAgIHJldHVy
biBnbDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZS51dGY4
KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBSRUxF
QVNFX0xPRyhXZWJHTCwgIlVzZSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFIGlu
c3RlYWQuIik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBBU1NFUlQo
cHJvZ3JhbSk7CkBAIC0yNDU5LDM0ICsyNDMxLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGwK
ICAgICBnbDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNv
bnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
ZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBsZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRzdEJ5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShsZW5ndGgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJh
bWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjkyMSw1OCArMjg2NSw2IEBAIFZlY3Rv
cjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRpY2VzKFBs
YXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwotICAgIFVO
VVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlk
ZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKLXsKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVO
VVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURf
UEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKLSAgICBVTlVTRURf
UEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oeG9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzA2MSwyOSArMjk1Myw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVT
RURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0o
aGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlw
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAg
IFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXND
VigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNzg5ZTI2ZjkyMWExYmZmMTdiOWQ0YjY3
ZTczYTYxZGMwMGU4ZDVkYy4uZjcxMzEyNjVlY2M2ODNkMThjMjk1ODUxZDhiZWZkMzNkY2MxZTQ3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKLSAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyAgICBib29sIGNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDA3OGViYmE0MjhkNzNmNzJiMWQ4NGY2NWM2MTA0M2QzOGQ4NjU0ODYuLjVmMGEy
NDYwNDM2MTc4NjE5NGZhOGUwYzZjY2Q0YzYwMzI0Y2NhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtNDIsOCArNDIsOCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xD
Vi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbXBvcnQgIkltYWdl
Um90YXRpb25TZXNzaW9uVlQuaCIKICNpbXBvcnQgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAg
LTIzMjUsNyArMjMyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKIH0KIAotYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xP
YmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKaW5kZXggMTEyMjVjZWIzMTIyOTQ3OTFlNGU3NTYwNmM3NDIyY2Q5MmY2ZTU5
My4uMzA2NTRlMjY4ZGM0NGUyZTNhMDdlMTNkZmQwOTE1ZTA3N2UzZGY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBk
YXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOworICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHJl
bmRlcmluZyBzeXN0ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0IG9mIGFjY2VsZXJhdGVkIHJlbmRl
cmluZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGRiNGQ0M2M1ZjBlODdh
N2ZhMWYxODEzZGI5MDQ4MWY2MzMyMTdhMzMuLmI0MDI0YTkxNDhlMWFlMjViM2M5NDI3ODM4NDY5
MmFiMDFhZWE2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMzLDggKzMzLDgg
QEAKICNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKICNpbXBvcnQg
IkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENH
LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBv
cnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBp
bWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCi1ib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICAvLyBXZSBoYXZlIGJlZW4gYXNrZWQgdG8gcGFpbnQg
aW50byBhIFdlYkdMIGNhbnZhcywgc28gdGFrZSB0aGF0IGFzIGEgc2lnbmFsIHRvIGNyZWF0ZQog
ICAgIC8vIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9uLCBldmVuIGlmIHRoYXQgbWVhbnMgdGhlIG5h
dGl2ZSB2aWRlbyBjYW4ndCBhbHNvIGJlIGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDExMTA4ZjkzYTY0
Y2E0Mzc1NGE0YmM1OWEzZjIzNDBmMTdkNWE4M2EuLjgzNTM0M2I4ZTc5YjM3NmI3ZjczZDNjNDM3
NGNiNTdhZWZkYTJhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIklPU3Vy
ZmFjZS5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1w
b3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJT1N1cmZhY2VQb29sLmgiCiAjaW1wb3J0ICJJ
bWFnZUJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCAzYTdhMDcyNjA3YmFiNWY2MDk4NzI3MWFhOGU2
M2E2YmVlMTRjZDNiLi40NGZmOTJlYTE0ZmVlZjUzMzllNTI2Mjk4MzQyNzNiYjMwNjZiYmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcApAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKEVHTCkKIAotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5LmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
ZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMC4uN2UwYWQ1NDc4Y2ExNzkx
OWEwZTliMzMxOWNmZjQ2YzJmZmMxMDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMxODIsNyArMzE4Miw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjCiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQotYm9vbCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0
dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRl
eHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5
MDhhZDEwOS4uZTAxNjE1YjBmM2EzNTBkNmYwNzUwODYyZTM2MGE2YjBjZGI3NzQ5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtOTMsNyArOTMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiBjbGFzcyBH
TENvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI7CkBAIC0yMTUsNyAr
MjE1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQotICAgIGJv
b2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgY29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJv
b2wsIGJvb2wpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDViZTVhOWQ2NzNiNmRhMDlkZjIzZDhiNTI0ZmQ4MjNjYjZj
ODkzZGQuLmYxNWI3ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtOTcsNiArOTcsODggQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGUKICNlbmRpZgogCiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3Jt
YXQoR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0
eXBlKQoreworI2RlZmluZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKGludGVybmFsRm9ybWF0
TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJuYWxGb3JtYXRNYWNybzog
XAorICAgICAgICBmb3JtYXQgPSBmb3JtYXRNYWNybzsgXAorICAgICAgICB0eXBlID0gdHlwZU1h
Y3JvOyBcCisgICAgICAgIGJyZWFrOworCisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkgewor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdCLCBVTlNJR05FRF9CWVRF
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBLCBSR0JBLCBVTlNJR05F
RF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0VfQUxQ
SEEsIExVTUlOQU5DRV9BTFBIQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoTFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lHTkVEX0JZVEUpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBIQSwgVU5TSUdORURfQllU
RSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgsIFJFRCwgVU5TSUdORURf
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhfU05PUk0sIFJFRCwg
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2RiwgUkVELCBIQUxG
X0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJGLCBSRUQsIEZM
T0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOFVJLCBSRURfSU5URUdF
UiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhJ
LCBSRURfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjE2VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVEX0lOVEVHRVIsIElOVCk7
CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBSRywgVU5TSUdORURfQllU
RSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4X1NOT1JNLCBSRywgQllU
RSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkYsIFJHLCBIQUxGX0ZM
T0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyRiwgUkcsIEZMT0FU
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhVSSwgUkdfSU5URUdFUiwg
VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4SSwg
UkdfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcx
NlVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkcxNkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lOVEVHRVIsIElOVCk7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdCLCBVTlNJR05FRF9CWVRF
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOCwgUkdCLCBVTlNJR05F
RF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1NjUsIFJHQiwg
VU5TSUdORURfU0hPUlRfNV82XzUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQjhfU05PUk0sIFJHQiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUjExRl9HMTFGX0IxMEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVik7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwgUkdCLCBVTlNJR05FRF9J
TlRfNV85XzlfOV9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2
RiwgUkdCLCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
R0IzMkYsIFJHQiwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QjhVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQjhJLCBSR0JfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsK
KyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkksIFJHQl9JTlRFR0VSLCBT
SE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJVSSwgUkdCX0lO
VEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkdCMzJJLCBSR0JfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0JBOCwgUkdCQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoU1JHQjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdCQSwgQllURSk7CisgICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdCQSwgVU5TSUdORURfU0hP
UlRfNV81XzVfMSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTQsIFJH
QkEsIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQjEwX0EyLCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJHQkEsIEhBTEZfRkxPQVQp
OworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkYsIFJHQkEsIEZMT0FU
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOFVJLCBSR0JBX0lOVEVH
RVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QkE4SSwgUkdCQV9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0IxMF9BMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
Vik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2VUksIFJHQkFfSU5U
RUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQkExNkksIFJHQkFfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQkEzMkksIFJHQkFfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9JTlQpOwor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDE2LCBERVBU
SF9DT01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShERVBUSF9DT01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQp
OworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDI0LCBE
RVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05FTlQsIEZMT0FUKTsKKyAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVOQ0lMLCBERVBUSF9TVEVO
Q0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoREVQVEgyNF9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURfSU5UXzI0XzgpOwor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJGX1NURU5DSUw4LCBERVBU
SF9TVEVOQ0lMLCBGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOworICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIEV4dGVuc2lvbnNH
TDo6U1JHQl9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9B
TFBIQV9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisjdW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gIVVTRShBTkdMRSkKKworCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHko
Ym9vbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMjQ0Mjg5ZDVi
ZWQyMGI5MGMwZTY2YzNjMzc1NDM1MTJmMjQ5MDlhYi4uNzc1ZjkwNDA2ZjQyYTYwOTFkZGMzZmVh
MWU1MGI3YzJiMGFlNGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTEyOSw3ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRpcmVjdChQ
bGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCi0gICAgYm9vbCB0ZXhJbWFnZTJE
UmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQg
PSA0KSBmaW5hbDsKKyAgICAvLyBIZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBpeGVsPT0wIGNh
c2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6ZWQgdG8gMC4KKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBu
byBHTCBlcnJvciBpcyBzeW50aGVzaXplZC4KKyAgICAvLyBCeSBkZWZhdWx0LCBhbGlnbm1lbnQg
aXMgNCwgdGhlIE9wZW5HTCBkZWZhdWx0IHNldHRpbmcuCisgICAgYm9vbCB0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0
KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CkBA
IC0xNjMsOCArMTY2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbG9yTWFzayhHQ0dMYm9vbGVh
biByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBh
bHBoYSkgZmluYWw7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QpIGZp
bmFsOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkKiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKKyNpZiAhVVNF
KEFOR0xFKQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisjZW5kaWYKICAgICB2b2lkIGNv
cHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKICAgICB2b2lkIGNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0gbW9kZSkg
ZmluYWw7CkBAIC0yOTMsNyArMjk4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aWV3cG9ydChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBm
aW5hbDsKIAotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZv
aWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CkBAIC0zMDcsMTEg
KzMxMiwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyA9PT09PT09PT09IFdlYkdMMiBlbnRyeSBwb2lu
dHMuCiAKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBk
YXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgp
IGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBsZW5ndGgpIGZpbmFsOwotCisjaWYgIVVTRShBTkdMRSkKKyAgICB2b2lkIGJ1
ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2Fn
ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOworICAgIHZvaWQgYnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qg
dm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOworICAg
IHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0
ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWlu
dCBsZW5ndGgpOworI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zm
c2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxl
bmd0aCkgZmluYWw7CisKICAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNj
ZXNzKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQp
IGZpbmFsOwogCkBAIC00MDcsMTUgKzQxNCwxNiBAQCBwdWJsaWM6CiAKICAgICBHQ0dMdWludCBn
ZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
UGFyYW1ldGVyCi0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCogcGFyYW1zKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
TmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2Nr
QmluZGluZykgZmluYWw7CiAKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoT3ZlcnJpZGUpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKIAotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsK
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSBmaW5hbDsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGhPdmVycmlkZSk7CisjZW5kaWYKIAogICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgZmluYWw7CkBAIC00MzEsMTYgKzQzOSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgZmlu
YWw7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KSBmaW5hbDsKKyNpZiAhVVNF
KEFOR0xFKQorICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZz
ZXQpOworI2VuZGlmCiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAgIHZvaWQgcGFpbnRU
b0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsK
IAotICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBtYXJrTGF5ZXJDb21w
b3NpdGVkKCk7Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIG1h
cmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgp
IGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwogCkBAIC00
NDgsMTkgKzQ1OCwxOSBAQCBwdWJsaWM6CiAgICAgLy8gcmVzZXQgbWV0aG9kIGlzIHByZXNlbnQg
dG8ga2VlcCBjYWxsaW5nIGNvZGUgc2ltcGxlciwgc28gaXQKICAgICAvLyBkb2Vzbid0IGhhdmUg
dG8ga25vdyB3aGljaCBidWZmZXJzIHdlcmUgYWxsb2NhdGVkLgogICAgIHZvaWQgcmVzZXRCdWZm
ZXJzVG9BdXRvQ2xlYXIoKTsKLSAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpOwotICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdDsK
KyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOworICAg
IEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNw
YXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCk7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAK
LSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7Ci0g
ICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsK
LSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwor
ICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5h
bDsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpIGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikgZmluYWw7CiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQotICAg
IHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSBmaW5hbDsKKyAgICB2b2lkIHBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBQTEFURk9STShNQUMpCkBAIC00ODcsMTAgKzQ5Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKLQotICAgIC8vIFJlYWQgcmVh
bCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBzeW50aGV0aWMKLSAgICAvLyBl
cnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgbW92ZWQuCi0g
ICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBib29sIG1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwogCiAgICAgLy8gU3VwcG9ydCBmb3Ig
ZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAogICAgIC8v
IGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24g
dGhlCkBAIC01MTMsNiArNTIwLDEwIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRHTENW
KiBhc0NWKCkgZmluYWw7CiAjZW5kaWYKIAorI2lmICFVU0UoQU5HTEUpCisgICAgc3RhdGljIGJv
b2wgcG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKTsKKyNlbmRpZiAvLyAh
VVNFKEFOR0xFKQorCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0gRGVzdGlu
YXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQg
PSBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggOTg0ZjYyZDBiNTRkZDhhOGFlYTM5N2IwODE3N2ViOGI0NmM5ZmY3MS4uYjBj
MWYxZGZkNDNkNDE1MDQyN2ZmNTIxYWNmNjg0MzYyNzI0MDA1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yOTQzLDE0ICsyOTQzLDYgQEAg
R0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xpbnQqIHBhcmFtcykKLXsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAg
IFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7
CkBAIC0yOTc1LDEwICsyOTY3LDYgQEAgR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFMKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMaW50KikK
LXsKLX0KLQogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQogewogICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDc5YTIxMTRiYTI0
OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUuLmUwOWFmMGRjMzJiYjFiYmE1ZWJkODZlNGRj
MDY3MGEwMmZmN2NkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgwNSw3
ICs4MDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0
LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwg
Ym9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
ZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oCmluZGV4IDJhM2MyNjQ1NWNhNmY1NjVhZWM0MjM0OWIyMTFiNTE4YTBlMjA3
ODguLmYzNjM3MjUwOWVhOWU0ZjhlMWE3ZDhmN2Y1Mjc2M2MzNGYxMWU0YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7Ci0gICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CisgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="430762"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414021</attachid>
            <date>2020-11-13 02:35:24 -0800</date>
            <delta_ts>2020-11-13 03:48:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201113123521.patch</filename>
            <type>text/plain</type>
            <size>173434</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E1MWVhYzgyY2VjOGMw
MDMxODJkMzhiM2FjNzBkYzRhNzA4MzUwMi4uNjBlMzIwZWY2ZWZkYTQxZjE4ZDk4ZTRmYzIxN2U5
YzExMmQ0ZmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMS0xMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTEtMTMgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQy
ZTg0NmMxNTgwY2U3ZjdmYmUzZjI1YTE4MTUxYjQ4YTU1NGU2MTguLjQ5ZTE0ODc0ZWE5ODlmMWUz
NDUwMjc3ZTE4NmU2Mzg2OTljZTZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTEtMTIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTExLTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFNlY0l0ZW1TaGltLmR5bGliIGZyb20gbmV0d29yayBzZXJ2aWNlIGxpbmsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGUyNDQyNDI3ODRkMDUwMWNk
YzRiYWRhNDRiNzU2M2UxMDZkYjFlYTMuLjY0MDI4ODU3ZDY0ZTBmNDM2N2M1NmM3Nzk5NDllM2Rk
MmIwNTE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
MzAwLDcgKzMwMCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgZGVzdFJlY3QpOwogfQogCi1ib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jv
b2wgSFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggODFmMDgzYTUwYzY0NzYyYmUyOTVh
M2E2MzEyNDQ2ZDZiZjJiOTM2My4uZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYxNmViOTJmMGJkZWZh
ZThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1
cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBs
YXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CisgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
RGlzcGxheVBvc3RlckltYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNmUwY2ZmNjgzZjg3
ZjI4MzZjMjBkNGJkMTMxMWY1ZGRmOGYyYjM3NS4uODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4
NGRlODI4NTgxN2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZShDYW52YXNCYXMKICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5p
cXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXV0byBy
ZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+
KG5ldyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0
cmlidXRlcykpOwogICAgIC8vIFRoaXMgaXMgdmlydHVhbCBhbmQgY2FuJ3QgYmUgY2FsbGVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KQEAgLTEwNSw3ICsxMDUsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgR3JhcGhpY3ND
b250ZQogewogfQogCi1XZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMs
IFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcykKICAgICA6IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoY2FudmFz
LCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYmVjZDI5M2IxZDZkMDZlYjU4MmE1ZTBhNDEzMDBmMmNkYWU5MjVkZS4u
YjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVm
PEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCiAg
ICAgfldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKTsKIApAQCAtMjY1LDcgKzI2NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQo
Q2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
LCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7
CiAKICAgICBib29sIGlzV2ViR0wyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oCmluZGV4IGFlNjk1
NDJlZjc2ZjBkZWUyNGI3YTMyOWRmYzIxYTRmOWE4ZTk2OWIuLjRjNTg0NjU3YjZjZWViYjIxMTNi
NTVhYThkMGM3MDc4YTFhMzMxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQWN0aXZlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQWN0aXZlSW5mby5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCmluZGV4IDFlY2MzY2E0ZmZjZjFlN2VhZjFlZTllZGQzMmVkYjkyMWUyZTMwM2IuLjdi
NTc3YTQ5NDMzMmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViR0xCdWZm
ZXI6On5XZWJHTEJ1ZmZlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdM
QnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lk
IFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAg
ICAgY29udGV4dDNkLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1YTgwZjkzYmZkMWQ0NDhkNTJmMDhhNjYwZmY2
NmJjOWFjN2Q2ZDIuLjFlNmJhNzg2MzlmZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjcsNyArNjcsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCmluZGV4IDNhODIwZGViODViNDU3YjQwMDI0MzYw
ZjcwNGEwYzRhOTljMDQ5NGYuLmQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91
cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSAiV2Vi
R0xTaGFyZWRPYmplY3QuaCIKIApAQCAtNDksNyArNDksNyBAQCBib29sIFdlYkdMQ29udGV4dEdy
b3VwOjpoYXNBQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NvbnRleHRzLmlzRW1wdHko
KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIFdlYkdMQ29udGV4dEdyb3VwOjpnZXRB
R3JhcGhpY3NDb250ZXh0R0woKQorR3JhcGhpY3NDb250ZXh0R0wmIFdlYkdMQ29udGV4dEdyb3Vw
OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKQogewogICAgIEFTU0VSVCghbV9jb250ZXh0cy5pc0Vt
cHR5KCkpOwogICAgIHJldHVybiAqKCptX2NvbnRleHRzLmJlZ2luKCkpLT5ncmFwaGljc0NvbnRl
eHRHTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3Vw
LmgKaW5kZXggNTIxMjMwZGU1YThkOGQyNTFhNTcxZDZiN2FjNDM5NDlhNWE2NGZkZS4uODU1Y2U3
MjM5ODZmZTA3NzU5OGYyNDY4MWFlODA4NmM4MWVkZmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYpOwogCiAgICAgYm9v
bCBoYXNBQ29udGV4dCgpIGNvbnN0OwotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBnZXRB
R3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCYgZ2V0QUdyYXBoaWNz
Q29udGV4dEdMKCk7CiAgICAgTG9jayYgb2JqZWN0R3JhcGhMb2NrRm9yQUNvbnRleHQoKTsKIAog
ICAgIHZvaWQgbG9zZUNvbnRleHRHcm91cChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0
Q29udGV4dE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAKaW5kZXggYTliODQzMDU3YTk2NWY5Nzk3MDU0NWE4N2E3NGZhNzc5ZjJh
YzkyMC4uN2M5MTlmMmI2NjU2YjY3YjE2Y2E2MzQwYjBiMmE0YjY0NWQwNDYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFdURjo6TG9jayYgV2ViR0xDb250ZXh0T2JqZWN0OjpvYmplY3RHcmFwaExv
Y2tGb3JDb250ZXh0KCkKICAgICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIFdlYkdMQ29udGV4dE9iamVjdDo6Z2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dEdMKiBXZWJHTENvbnRleHRP
YmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGV4dCA/IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKSA6IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4
MzVkODBhYTdhOTcxZjY5MzE4ZmNkZWMxNDA3NGVlMGUyNTNjMzUuLmRiZmRkNmJmYzBlZjQ0ZWI4
ODJlYjljNTliMDA4ZDI5ODExMjY0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIC8vIFdlYkdM
Q29udGV4dE9iamVjdCB0aGUgYmFzZSBjbGFzcyBmb3Igb2JqZWN0cyB0aGF0IGFyZSBvd25lZCBi
eSBhIHNwZWNpZmljCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG1fY29udGV4dDsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0R0wq
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCBhZjJlZDkwOTZjMWJl
ZWY4YjAxNjIwNWYyNTA5ZTU5YTExYzU0Y2ZmLi5hNjkxNTMyM2E4NDk0NGU1OWJjMTcyZDNmNWI5
NDMzNzI2ODE0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2Vi
R0xEZXB0aFRleHR1cmVOYW1lOwogfQogCi1ib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQpCitib29sIFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5z
aW9uc0dMJiBleHRlbnNpb25zID0gY29udGV4dC5nZXRFeHRlbnNpb25zKCk7CiAgICAgcmV0dXJu
IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCmluZGV4IDYxNjEwMGE3YWIw
OGIxOGIxYmQ5YTlhYzgzNmJjZTk3MzJkYjgxMjQuLmVlMjBjMmViOTdiYmQwNmZkMDVmODJkZjI5
MTlkNmM5NzQzYjlmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
R0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMRGVwdGhUZXh0dXJlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggYjVjNDExMjYxYTFkMWQwNTg3ZTM3YzM2NjA4MmNlYmM0ZTBjYzljOS4uOWNiMGY4
NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGJ1ZmZlcnMpCiAvLyBzdGF0aWMKIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVz
V2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViZ2xDb250ZXh0
KQogewotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KICAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggZmUxYTg3ZTViZTJiMGQxOTM4YmRkNDY3
YTEzZjdhZmYyNGU3NDI4ZS4uMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKQEAgLTM3LDYgKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCIKKyNlbmRpZgogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpA
QCAtNTcsOSArNjAsOSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBv
bkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwotICAgICAg
ICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVy
cmlkZTsKICAgICAgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFj
dExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBXZWJHTFJl
bmRlcmJ1ZmZlckF0dGFjaG1lbnQoKSB7IH07CkBAIC0xMjAsMTggKzEyMywxOCBAQCBuYW1lc3Bh
Y2UgewogICAgICAgICAgICAgbV9yZW5kZXJidWZmZXItPnNldEluaXRpYWxpemVkKCk7CiAgICAg
fQogCi0gICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICBtX3JlbmRlcmJ1ZmZlci0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQp
OwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjphdHRhY2go
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6YXR0
YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCA9IG9i
amVjdE9yWmVybyhtX3JlbmRlcmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGNvbnRleHQtPmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkJVRkZFUiwgb2JqZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMUmVuZGVyYnVm
ZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVu
ZGVyYnVmZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAjaWYgIVVTRShB
TkdMRSkKICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCkgewpAQCAtMTYzLDkgKzE2Niw5IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBib29sIGlzSW5p
dGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdm9pZCBzZXRJbml0aWFsaXplZCgp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGF0dGFj
aChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRl
eHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXRvciYpIG92
ZXJyaWRlOwogCiAgICAgICAgIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQoKSB7IH07CkBAIC0yMzIs
MTIgKzIzNSwxMiBAQCBuYW1lc3BhY2UgewogICAgICAgICAvLyBUZXh0dXJlcyBhcmUgYXNzdW1l
ZCB0byBiZSBpbml0aWFsaXplZC4KICAgICB9CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFj
aG1lbnQ6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50
OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgbV90ZXh0dXJlLT5vbkRldGFjaGVkKGxvY2tl
ciwgY29udGV4dCk7CiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50Ojph
dHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OmF0
dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QgPSBv
YmplY3RPclplcm8obV90ZXh0dXJlLmdldCgpKTsKICAgICAgICAgaWYgKG1fdGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzNEIHx8IG1fdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFXzJEX0FSUkFZKQpAQCAtMjQ2LDcgKzI0OSw3IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIG1fdGFyZ2V0LCBvYmplY3QsIG1fbGV2ZWwpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xU
ZXh0dXJlQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdM
VGV4dHVyZUF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCiAgICAgewogI2lmIFVTRShBTkdM
RSkKICAgICAgICAgLy8gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGF0dGFjaG1lbnQgaXMg
dmFsaWQgaW4gRVMzLgpAQCAtNTQ3LDcgKzU1MCw3IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZm
ZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKIH0KIAotYm9vbCBXZWJHTEZy
YW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBj
b25zdCBjaGFyKiogcmVhc29uKQorYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFw
aGljc0NvbnRleHRHTCogY29udGV4dDNkLCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlm
IChjaGVja1N0YXR1cyhyZWFzb24pICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYzLDcgKzU2Niw3IEBAIGJvb2wg
V2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGF0
dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+aXNWYWxpZCgpOwogfQogCi12b2lkIFdlYkdMRnJhbWVi
dWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3Qp
Cit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9i
amVjdCBvYmplY3QpCiB7CiAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogbV9hdHRhY2htZW50
cy52YWx1ZXMoKSkKICAgICAgICAgYXR0YWNobWVudC0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRl
eHQzZCk7CkBAIC01NzIsNyArNTc1LDcgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ28KIH0KIAog
I2lmICFVU0UoQU5HTEUpCi1ib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2ht
ZW50cyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZzNkLCBjb25zdCBjaGFyKiogcmVhc29uKQor
Ym9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250
ZXh0R0wqIGczZCwgY29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoIWNvbnRleHQoKSkg
ewogICAgICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJlIGNh
bGxpbmcgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaAppbmRleCBmODhiMDZhNWU0YzY0NTI1YzJiMjYyZmQ5YjhlMzkyYTk5MDVkNzIzLi5hMTQw
ZGJkM2JlMDI5ZWJmODJiMDljYjk5MWEyYWVhZjE3NjhkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC02Miw5ICs2Miw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5pdGlhbGl6ZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0
YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSA9IDA7
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm4gZmFsc2UgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGU7IG90aGVyd2lzZSBpbml0
aWFsaXplCiAgICAgLy8gdGhlIGJ1ZmZlcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5pdGlhbGl6
ZWQgYW5kCiAgICAgLy8gbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzIGlzIHRydWUuCi0gICAg
Ym9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGNvbnN0IGNoYXIqKiByZWFz
b24pOworICAgIGJvb2wgb25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiog
cmVhc29uKTsKIAogICAgIC8vIFNvZnR3YXJlIHZlcnNpb24gb2YgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdoZW4KICAgICAvLyBGUkFNRUJVRkZFUl9DT01QTEVURSBp
cyByZXR1cm5lZCwgaXQgaXMgc3RpbGwgcG9zc2libGUgZm9yCkBAIC0xMTksMTMgKzExOSwxMyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IAogICAgIFdlYkdMQXR0YWNobWVudCogZ2V0QXR0YWNobWVudChHQ0dMZW51bSkgY29uc3Q7CiAK
ICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIFJldHVybiBmYWxzZSBpZiBmcmFtZWJ1ZmZlciBpcyBp
bmNvbXBsZXRlLgotICAgIGJvb2wgaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CisgICAgYm9vbCBpbml0aWFsaXplQXR0
YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKICNlbmRp
ZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGN1cnJlbnRseSBib3VuZCB0
byB0aGUgZ2l2ZW4gdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwCmluZGV4IGFiNWMxNGY1NmIxOTI4YjE1ZWVkN2Y2ZjU2MTMwNGQyMDdkYWE4MzAuLjE5
MTc4NmFiOTY4YmM3MDQ3NWMzY2ZjNDc0NGM3ZmQ5NjBlNzE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3RvcigpCiAgICAgfQogfQogCi12b2lkIFdlYkdMT2JqZWN0Ojpk
ZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVjdChjb25z
dCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkKQog
ewogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAgICAgaWYgKCFtX29iamVjdCkKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBXZWJHTE9iamVjdDo6ZGV0YWNoKCkKICAgICBtX2F0dGFjaG1lbnRDb3VudCA9
IDA7IC8vIE1ha2Ugc3VyZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVsZXRlZC4KIH0KIAotdm9pZCBX
ZWJHTE9iamVjdDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTE9iamVjdDo6b25EZXRh
Y2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29u
dGV4dDNkKQogewogICAgIGlmIChtX2F0dGFjaG1lbnRDb3VudCkKICAgICAgICAgLS1tX2F0dGFj
aG1lbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4
IGYwYWEyMTM3YTNlYWU1Zjk3ZjhhZDliYjkxZDkwMzNlMDA5ZjE2YTEuLmNhZDQ3OWNlMjc3MTBj
ODk0MTNlZmQ5ZGFkYzZjYmMzODNkZDJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBMb2NrOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U7CiAKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IEFic3RyYWN0TG9ja2VyIGFyZ3VtZW50IGVuZm9yY2VzIGF0IGNvbXBpbGUgdGltZSB0aGF0IHRo
ZSBvYmplY3RHcmFwaExvY2sKICAgICAvLyBpcyBoZWxkLiBUaGlzIGlzbid0IG5lY2Vzc2FyeSBm
b3IgYWxsIG9iamVjdCB0eXBlcywgYnV0IGVub3VnaCBvZiB0aGVtIHRoYXQKICAgICAvLyBpdCdz
IGRvbmUgZm9yIGFsbCBvZiB0aGVtLgotICAgIHZvaWQgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCop
OwogCiAgICAgdm9pZCBvbkF0dGFjaGVkKCkgeyArK21fYXR0YWNobWVudENvdW50OyB9Ci0gICAg
dm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCopOworICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIC8vIFRoaXMgaW5kaWNhdGVzIHdoZXRo
ZXIgdGhlIGNsaWVudCBzaWRlIGlzc3VlIGEgZGVsZXRlIGNhbGwgYWxyZWFkeSwgbm90CiAgICAg
Ly8gd2hldGhlciB0aGUgT3BlbkdMIHJlc291cmNlIGlzIGRlbGV0ZWQuCkBAIC04MiwxMyArODIs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRGVzdHJ1Y3RvcigpOwogCiAgICAgLy8gZGVs
ZXRlT2JqZWN0SW1wbCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSB0byBkZWxldGUgdGhlIE9w
ZW5HTCByZXNvdXJjZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBX
VEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsK
IAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fb2JqZWN0IHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5kZXggNTA2NjBjNzVjNTBh
ZjEzYzU5NDUxMjE1OGRkNWNiYTMxMjM3ZmRkNC4uNmQ1YzExZDQwZGE4MTE1NTlhNmU5YTk1MDhl
Njc1MTc2YTBhOWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBX
ZWJHTFByb2dyYW06Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJikKQEAgLTk1LDcgKzk5LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgV2ViR0xQcm9n
cmFtOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQordm9p
ZCBXZWJHTFByb2dyYW06OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmop
CiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVQcm9ncmFtKG9iaik7CiAgICAgaWYgKG1fdmVydGV4
U2hhZGVyKSB7CkBAIC0yMDgsNyArMjEyLDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXQKICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobV9mcmFnbWVudFNoYWRlci5nZXQoKSk7CiB9CiAKLXZv
aWQgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0
cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3Rp
dmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIApAQCAtMjE3LDcgKzIyMSwxMSBAQCB2b2lkIFdl
YkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZAogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLnJlc2l6ZShzdGF0
aWNfY2FzdDxzaXplX3Q+KG51bUF0dHJpYnMpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUF0dHJpYnM7ICsraSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBp
bmZvOwotICAgICAgICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYkltcGwob2JqZWN0KCksIGks
IGluZm8pOworI2lmIFVTRShBTkdMRSkKKyAgICAgICAgY29udGV4dDNkLT5nZXRBY3RpdmVBdHRy
aWIob2JqZWN0KCksIGksIGluZm8pOworI2Vsc2UKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+KGNvbnRleHQzZCktPmdldEFjdGl2ZUF0dHJpYkltcGwob2JqZWN0
KCksIGksIGluZm8pOworI2VuZGlmCiAgICAgICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zW2ld
ID0gY29udGV4dDNkLT5nZXRBdHRyaWJMb2NhdGlvbihvYmplY3QoKSwgaW5mby5uYW1lKTsKICAg
ICB9CiB9CkBAIC0yMzAsNyArMjM4LDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKCkKICAgICBpZiAoIW9iamVjdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwor
ICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgR0NHTGludCBsaW5rU3Rh
dHVzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKaW5kZXgg
OGY3MGQwZDJiMGU0NzU1ZjUyZjRlYTlhM2JiZGM0OWQ4NDM4ODMzNy4uNWEzNTBjYjEzYWY4MjY5
NDE1MWM2NjAwOWIwYTJjNjcyNWJkZWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
ZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJM
b2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKKyAgICB2b2lkIGNhY2hlQWN0aXZl
QXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKik7CiAgICAgdm9pZCBjYWNoZUluZm9J
Zk5lZWRlZCgpOwogCiAgICAgVmVjdG9yPEdDR0xpbnQ+IG1fYWN0aXZlQXR0cmliTG9jYXRpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcAppbmRleCAxNjYyMGJk
OGQ4NTgyNGI5NWU1NzM4ZDU2MDI1ZjExYTljYmVmODYwLi42MTI1ZGNiZjRhODQ4Yjk5OTdlN2Rj
YmRlYmIzZGIyZGVjNWYwNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1
ZXJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4
dEdMKCktPmNyZWF0ZVF1ZXJ5KCkpOwogfQogCi12b2lkIFdlYkdMUXVlcnk6OmRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRl
UXVlcnkob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApp
bmRleCA1YTZjMDM2MWE1OTgzYjcyZTRiNDZmOGU4MjQ5OGNlYzYxOWRlMTY1Li45OTJmN2M4Nzhl
ODgwODhlNDNhZGMxN2RmOTIxNmQ5NTJhZjE5Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xRdWVyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2
b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBtX2lzUmVzdWx0
QXZhaWxhYmxlIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAppbmRleCBk
NDBkNGUwYjg1NjFhZjU1YmVmYWU3ZTUxMmYwMDYxNDI1MTA5N2Y0Li5mZGU5OTk4ZTBmYTE3ODlj
NjBkNzhmOGI0YzFlN2VmZDQ2N2ZiMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFdlYkdMUmVuZGVy
YnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgp
CiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVSZW5kZXJidWZm
ZXIoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQ
bGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xSZW5kZXJidWZmZXI6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4
dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVJl
bmRlcmJ1ZmZlcihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggNGE3ZmE2YzlhMjM2MTJlNDFkMjM1ZGVkYTRkY2MxMGM0
MmNlYzA3MS4uMTI0YjQzOGNjNTljZmRlY2YzY2M5NGRmNTJiMTY4M2IxMGNmNDlkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDM1NTY2ZWI4ZGE1N2U3ZTM2MmI4NDBmZTg2NGYz
NTkxNzY2ZDJiMDQuLmQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtODksNyArODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdD
b250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJgogICAgIHJl
dHVybiByZW5kZXJpbmdDb250ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52
YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZh
cywgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoY2FudmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKSk7CiAgICAgLy8gVGhpcyBp
cyB2aXJ0dWFsIGFuZCBjYW4ndCBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgpAQCAtMTA1
LDcgKzEwNSw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KENhbnZhc0Jhc2UmIGNhbnZhcywgR3JhcGhpY3NDb250ZXh0CiB7CiB9CiAKLVdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRl
cykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NDVkNGJiMTA1MTNkMmRi
NGY1YTQzZTk0OTE3YTY4MjFkYjI2MmI3Li5hNzEwYTBmMWU2Mjk4MmViMjBjMDc5NTg5ZmU2NTQy
ZmVlZWNmZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQgZmluYWwgOiBwdWJsaWMgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHQpOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVh
dGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzKTsKIAogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4m
JiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOWE4NzY5M2RhMTc5OThmN2E2YjI4MmRhYmZkMWQ3
MWZlYzdiNTY1MS4uOTAyY2FiYmMwNzBkM2M3NWQ0NmJjMmQyNzZjNmNkMjVlOWEyODUxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
ICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02MTcsNyArNjE4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZGlkQXBwbHkgeyBmYWxzZSB9OwogfTsKIAotc3RhdGljIGJv
b2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4mIGNvbnRleHQpCitzdGF0aWMgYm9vbCBpc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQo
Y29uc3QgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiYgY29udGV4dCkKIHsKICAgICByZXR1cm4g
Y29udGV4dC0+cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgPT0gV2ViR0xQb3dlclBy
ZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKIH0KQEAgLTc1Myw3ICs3NTQsNyBAQCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2Um
IGNhbnZhcywgV2ViR0xDbwogICAgICAgICBtX2NoZWNrRm9yQ29udGV4dExvc3NIYW5kbGluZ1Rp
bWVyLnN0YXJ0T25lU2hvdChjaGVja0NvbnRleHRMb3NzSGFuZGxpbmdEZWxheSk7CiB9CiAKLVdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFz
QmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFw
aGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCiAgICAgOiBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQogICAgICwg
bV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3Jlc3RvcmVUaW1lcihjYW52YXMu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6Om1heWJlUmVzdG9yZUNvbnRleHQpCkBAIC0xNzg2LDcgKzE3ODcsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZQogICAgIGlmICghdmFsaWRhdGVOUE9UVGV4dHVyZUxldmVsKHdpZHRoLCBo
ZWlnaHQsIGxldmVsLCAiY29tcHJlc3NlZFRleEltYWdlMkQiKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBib3JkZXIsIGRhdGEuYnl0
ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOwogICAgIGlmIChtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgIC8vIFRoZSBjb21wcmVzc2Vk
VGV4SW1hZ2UyRCBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIFdlYkdMVGV4dHVyZSBpdCBkb2Vz
bid0IGhhdmUgdGhlIGRhdGEgZm9yIHRoaXMgbGV2ZWwuCkBAIC0xODI5LDcgKzE4MzAsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
RGltZW5zaW9ucygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleC5nZXQoKSkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihncmFwaGljc0NvbnRleHRHTCgpKS0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsK
ICAgICB0ZXgtPnNldENvbXByZXNzZWQoKTsKICNlbmRpZgogfQpAQCAtMzIwNSw3ICszMjA2LDcg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwogI2Vs
c2UKLSAgICAgICAgbV9jb250ZXh0LT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJv
Z3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0KS0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJv
bENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwogI2VuZGlmIC8vIFVTRShB
TkdMRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6CkBAIC0zNTQ5LDkgKzM1
NTAsMTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShX
ZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICBzd2l0Y2ggKGJhc2VUeXBlKSB7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ6IHsKICAgICAgICAgR0NHTGZsb2F0
IHZhbHVlWzE2XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nZXRuVW5pZm9ybWZ2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCAxNiAqIHNpemVv
ZihHQ0dMZmxvYXQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVl
KTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBd
OwpAQCAtMzU1OSw5ICszNTYyLDExIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOVDogewogICAgICAgICBHQ0dMaW50IHZhbHVl
WzRdID0gezB9OworI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VY
VFN1cHBvcnRlZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5V
bmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGlu
dCksIHZhbHVlKTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAg
ICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CkBAIC0zNTc2
LDkgKzM1ODEsMTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICB9CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6Qk9PTDogewogICAgICAgICBHQ0dMaW50IHZhbHVlWzRdID0gezB9
OworI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRl
ZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZF
WFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCksIHZhbHVl
KTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVu
Z3RoID4gMSkgewogICAgICAgICAgICAgVmVjdG9yPGJvb2w+IHZlY3RvcihsZW5ndGgpOwpAQCAt
MzYxOSw3ICszNjI2LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0wKICNpZiBVU0UoQU5HTEUp
CiAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3JhcGhpY3ND
b250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbHNlCi0gICAg
bV9jb250ZXh0LT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3Qo
KSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsK
KyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dCktPmdl
dE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogI2VuZGlmCiAgICAg
Zm9yIChHQ0dMaW50IGkgPSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkrKykgewogICAgICAgICBH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpAQCAtMzg5Myw4ICszOTAwLDggQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJbnZhbGlk
YXRpbmdBdHRyaWJMb2NhdGlvbnMoV2UKICAgICB9CiAKICNpZiAhVVNFKEFOR0xFKQotICAgIGlm
ICghbV9jb250ZXh0LT5wcmVjaXNpb25zTWF0Y2gob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlci5n
ZXQoKSksIG9iamVjdE9yWmVybyhmcmFnbWVudFNoYWRlci5nZXQoKSkpCi0gICAgICAgIHx8ICFt
X2NvbnRleHQtPmNoZWNrVmFyeWluZ3NQYWNraW5nKG9iamVjdE9yWmVybyh2ZXJ0ZXhTaGFkZXIu
Z2V0KCkpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0KCkpKSkgeworICAgIGlmICgh
c3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQpLT5wcmVjaXNp
b25zTWF0Y2gob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlci5nZXQoKSksIG9iamVjdE9yWmVybyhm
cmFnbWVudFNoYWRlci5nZXQoKSkpCisgICAgICAgIHx8ICFzdGF0aWNfY2FzdDxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCo+KG1fY29udGV4dCktPmNoZWNrVmFyeWluZ3NQYWNraW5nKG9iamVjdE9y
WmVybyh2ZXJ0ZXhTaGFkZXIuZ2V0KCkpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0
KCkpKSkgewogICAgICAgICBwcm9ncmFtLT5zZXRMaW5rU3RhdHVzKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQyNTcsNyArNDI2NCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoCiAgICAgfQogCiAjZGVmaW5lIElOVEVSTkFMX0ZPUk1BVF9DSEVDSyh0eXBlTWFj
cm8sIHBpeGVsVHlwZU1hY3JvKSBcCi0gICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFj
cm8pIHsgXAorICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMOjp0eXBlTWFjcm8gfHwg
cGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJlYWRQaXhl
bHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5hbCBmb3JtYXQiKTsgXAogICAgICAgICBy
ZXR1cm47IFwKICAgICB9IFwKQEAgLTQyNjgsNyArNDI3NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoCiAgICAgQ0hFQ0tfQ09NUE9ORU5UX0NPVU5UCiAKICNkZWZpbmUgSU5URVJOQUxfRk9S
TUFUX0lOVEVHRVJfQ0hFQ0sodHlwZU1hY3JvLCBwaXhlbFR5cGVNYWNybykgXAotICAgIGlmICh0
eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5
cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKKyAgICBpZiAodHlwZSAhPSBHcmFwaGlj
c0NvbnRleHRHTDo6dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5
cGVNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJu
YWwgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCkBAIC00Mjc4LDEzICs0
Mjg1LDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAgICAgfSBcCiAgICAgQ0hFQ0tfQ09N
UE9ORU5UX0NPVU5UCiAKLSNkZWZpbmUgQ0FTRV9QQUNLRURfSU5URVJOQUxfRk9STUFUX0NIRUNL
KGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlME1hY3JvLCBwaXhlbFR5cGUw
TWFjcm8sIHR5cGUxTWFjcm8sIHBpeGVsVHlwZTFNYWNybykgY2FzZSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgIGlmICghKHR5cGUgPT0gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnR5cGUwTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6
OnBpeGVsVHlwZTBNYWNybykgXAotICAgICAgICAmJiAhKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnR5cGUxTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6OnBpeGVsVHlw
ZTFNYWNybykpIHsgXAorI2RlZmluZSBDQVNFX1BBQ0tFRF9JTlRFUk5BTF9GT1JNQVRfQ0hFQ0so
aW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwTWFjcm8sIHBpeGVsVHlwZTBN
YWNybywgdHlwZTFNYWNybywgcGl4ZWxUeXBlMU1hY3JvKSBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisgICAgaWYgKCEodHlwZSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6dHlwZTBNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4ZWxUeXBlME1h
Y3JvKSBcCisgICAgICAgICYmICEodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6dHlwZTFNYWNy
byAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4ZWxUeXBlMU1hY3JvKSkgeyBcCiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJy
ZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJuYWwgZm9ybWF0Iik7IFwKICAg
ICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCi0gICAgaWYgKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Zm9ybWF0TWFjcm8pIHsgXAorICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3ND
b250ZXh0R0w6OmZvcm1hdE1hY3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAiSW52YWxpZCBmb3Jt
YXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwKQEAgLTQ2OTksNyArNDcwNiw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlU291
cmNlSGVscGVyKFRleEltYWdlRnVuY3RpCiAgICAgICAgICAgICAgICAgLy8gVGhlIFVOU0lHTkVE
X0lOVF8xMEZfMTFGXzExRl9SRVYgdHlwZSBwYWNrL3VucGFjayBpc24ndCBpbXBsZW1lbnRlZC4K
ICAgICAgICAgICAgICAgICB0eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4
ZWxzLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RGF0YUZvcm1hdDo6UkdCQTgsIGFk
anVzdGVkU291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZvcm1hdCwg
dHlwZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBkYXRhKSkgewor
ICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4ZWxzLmdldCgp
LCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTgsIGFkanVzdGVkU291cmNlSW1h
Z2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tG
bGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBkYXRhKSkgewogICAgICAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAidGV4
SW1hZ2UyRCIsICJiYWQgaW1hZ2UgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgICAgICB9CkBAIC01MDEzLDcgKzUwMjAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgRwogICAgIEFTU0VSVCh0ZXgpOwogICAgIEFTU0VSVCh2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2
ZWwod2lkdGgsIGhlaWdodCwgbGV2ZWwsICJ0ZXhJbWFnZTJEIikpOwogICAgIGlmICghcGl4ZWxz
KSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQorICAgICAgICBpZiAoIXN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+dGV4SW1hZ2UyRFJlc291cmNl
U2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQodmFsaWRhdGVTZXR0YWJsZVRleEludGVybmFs
Rm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3JtYXQpKTsKQEAgLTU0ODUsOCArNTQ5Miw4
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0
QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvCiAgICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9y
bWF0KTsKICNlbHNlCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvbWJpbmF0aW9uIG9mIGludGVy
bmFsZm9ybWF0LCBmb3JtYXQsIGFuZCB0eXBlIGlzIHN1cHBvcnRlZC4KLSNkZWZpbmUgSU5URVJO
QUxfRk9STUFUX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwLCB0
eXBlMSwgdHlwZTIsIHR5cGUzLCB0eXBlNCkgY2FzZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmZvcm1hdE1hY3JvKSB7IFwKKyNkZWZpbmUgSU5URVJOQUxfRk9STUFUX0NBU0Uo
aW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwLCB0eXBlMSwgdHlwZTIsIHR5
cGUzLCB0eXBlNCkgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6aW50ZXJuYWxGb3JtYXRNYWNybzog
XAorICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OmZvcm1hdE1hY3JvKSB7IFwK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGZvcm1hdCBmb3IgaW50ZXJuYWxmb3JtYXQi
KTsgXAogICAgICAgICByZXR1cm4gZmFsc2U7IFwKICAgICB9IFwKQEAgLTU2MjUsNyArNTYzMiw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAgR0NHTGludCBjbGlwcGVkWCwgY2xpcHBl
ZFk7CiAgICAgR0NHTHNpemVpIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodDsKICAgICBpZiAo
Y2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJvdW5kUmVhZEZyYW1lYnVmZmVyV2lkdGgo
KSwgZ2V0Qm91bmRSZWFkRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFks
ICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewotICAgICAgICBtX2NvbnRleHQtPnRl
eEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCiAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIG1fdW5w
YWNrQWxpZ25tZW50KTsKICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhl
aWdodCA+IDApIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgY2xpcHBlZFggLSB4LCBjbGlwcGVkWSAtIHksCkBAIC02NDA2LDggKzY0MTMs
OCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZhbGxiYWNrQmxhY2tU
ZXh0dXJlczF4MSgpCiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNUZXhJbnRl
cm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZChHQ0dMZW51bSB0ZXhJbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gY29sb3JCdWZmZXJGb3JtYXQpCiB7Ci0gICAgYXV0byBuZWVkID0g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQodGV4SW50ZXJu
YWxGb3JtYXQpOwotICAgIGF1dG8gaGF2ZSA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRD
aGFubmVsQml0c0J5Rm9ybWF0KGNvbG9yQnVmZmVyRm9ybWF0KTsKKyAgICBhdXRvIG5lZWQgPSBH
cmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdCh0ZXhJbnRlcm5hbEZvcm1h
dCk7CisgICAgYXV0byBoYXZlID0gR3JhcGhpY3NDb250ZXh0R0w6OmdldENoYW5uZWxCaXRzQnlG
b3JtYXQoY29sb3JCdWZmZXJGb3JtYXQpOwogICAgIHJldHVybiAobmVlZCAmIGhhdmUpID09IG5l
ZWQ7CiB9CiAKQEAgLTc0ODQsNyArNzQ5MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFob3N0V2luZG93KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShtX2F0dHJpYnV0ZXMsIGhvc3RXaW5kb3cp
KTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZShtX2F0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpKTsKICAgICBpZiAoIWNv
bnRleHQpIHsKICAgICAgICAgaWYgKG1fY29udGV4dExvc3RNb2RlID09IFJlYWxMb3N0Q29udGV4
dCkKICAgICAgICAgICAgIG1fcmVzdG9yZVRpbWVyLnN0YXJ0T25lU2hvdChzZWNvbmRzQmV0d2Vl
blJlc3RvcmVBdHRlbXB0cyk7CkBAIC03NzYwLDcgKzc3NjcsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
c2l6ZWkgYwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICBpZiAoaXNX
ZWJHTDIoKSkKLSAgICAgICAgbV9jb250ZXh0LT5wcmltaXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVz
dGFydEluZGV4KHR5cGUpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5wcmltaXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFy
dEluZGV4KHR5cGUpKTsKICNlbmRpZgogCiAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0
YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDR0xpbnRwdHI+KG9mZnNldCks
IHByaW1jb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMjkxYjlhZWRmMzM4NDE2ZWJhZWRiMzg5YTc5
NWEyOWZhOGFkZGJlYi4uYTcxZDAzNmFhMGRlYTUyYjQ1NzkwOWZiZmZkYzNhZGY4MGY1MTBjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVD
aGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiR1BV
QmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCkBAIC0xMjQsNyArMTI0LDcgQEAgdXNpbmcgV2ViR0xDYW52YXMgPSBXVEY6OlZhcmlh
bnQ8UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwgUmVmUHRyPE9mZnNjcmVlbkNhbnYKIHVzaW5n
IFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4+Owog
I2VuZGlmCiAKLWNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkNsaWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgcHJpdmF0ZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgeworY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50
LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwcml2YXRlIEFjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IGNyZWF0ZShDYW52YXNCYXNlJiwgV2ViR0xDb250
ZXh0QXR0cmlidXRlcyYsIGNvbnN0IFN0cmluZyYpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvc2VDb250ZXh0SW1wbChMb3N0Q29udGV4dE1vZGUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xDb250ZXh0R3JvdXAq
IGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3VwLmdldCgpOyB9CiAg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC00
MjcsNyArNDI3LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZShDYW52YXNCYXNlJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiYmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMpOwogCiAgICAgZnJpZW5kIGNsYXNzIEVYVFRleHR1cmVDb21wcmVzc2lv
blJHVEM7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRHJhd0J1ZmZlcnM7CkBAIC01MjcsNyArNTI3
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbmVlZHNQcmVwYXJhdGlvbkZvckRpc3BsYXkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgp
IGZpbmFsOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7
CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdl
YkdMQ29udGV4dEdyb3VwPiBtX2NvbnRleHRHcm91cDsKICAgICBMb2NrIG1fb2JqZWN0R3JhcGhM
b2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAppbmRl
eCBiNzIwNDI1ODIzZTM2MzU2ZWEyZjcwNDU3MDhjZTUxNDE1YWNiMDc1Li5iMGI3ZGRkOWM0M2Nm
MjAwNTk1NDhmMDQ4ZDM5YzAzMTQ0ODgwM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU2FtcGxlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViR0xTYW1wbGVyOjpXZWJH
TFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdChj
dHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlU2FtcGxlcigpKTsKIH0KIAotdm9pZCBXZWJH
TFNhbXBsZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3Zv
aWQgV2ViR0xTYW1wbGVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7
CiAgICAgY29udGV4dDNkLT5kZWxldGVTYW1wbGVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCmluZGV4IDliMTE4M2U1ZDczZGUyNjA1ZTcxZDQ5
ODcwYTY4NDA5MGMyMTE1ZTAuLjRlMTBkNzcxNzM1MDEwOWM4OGExOTljNTFlN2YyMWFkODA1YTgy
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFNhbXBsZXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0
Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
ZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggYzcwZDBhNDZkNmM5YjhlNGZmZDgyMDU1YTMx
MjJkYjBiZDE2MTE0NC4uN2YyMjE5YjRiMjU3N2U4NzU2N2U2Njg0MTQ2NzlmMTQxYzQxZDJiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBXZWJHTFNoYWRlcjo6fldlYkdMU2hhZGVyKCkKICAgICBydW5EZXN0cnVjdG9yKCk7
CiB9CiAKLXZvaWQgV2ViR0xTaGFkZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xTaGFkZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVNoYWRlcihvYmplY3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKaW5kZXggN2I0NzMzYWJjZTdl
YzRhZWM0N2E0ZmQ1MDI5ZjE0MjA2YzhmZjg3OS4uOTM0YjNkYzE4YWYzNDdjM2Q1MGZhZTRiMDY1
Yzk4MjlmMGJkOTliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xTaGFkZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdDR0xlbnVtKTsKIAotICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwo
Y29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCkgZmluYWw7CiAKICAgICBHQ0dMZW51bSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fc291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0LmgKaW5kZXggN2FiNDIyMGFlMTBkMTc3ZDUxOGUyODExYThmMWFkMzA3
ODdkYmUzOS4uNTk3ZDNmMDBiNGMzZjYzOTQyZTFkMzZjZmEwZTRkMTFiZTIyMTc0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lv
bkZvcm1hdC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3Bw
CmluZGV4IDcxODI2YTRmNTMwNzZhZmI4MWQxZGZmN2Q2ZmIzOTBkMGVhYjAzYjMuLjkzNmM5ODFj
OTkyOTBkOGU3Y2VmOThiMTNiNTY5M2NiZWIyMzc5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9v
bCBXZWJHTFNoYXJlZE9iamVjdDo6aGFzR3JvdXBPckNvbnRleHQoKSBjb25zdAogICAgIHJldHVy
biBtX2NvbnRleHRHcm91cCAmJiBtX2NvbnRleHRHcm91cC0+aGFzQUNvbnRleHQoKTsKIH0KIAot
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIFdlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3ND
b250ZXh0R0woKSBjb25zdAorR3JhcGhpY3NDb250ZXh0R0wqIFdlYkdMU2hhcmVkT2JqZWN0Ojpn
ZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHRHcm91
cCA/ICZtX2NvbnRleHRHcm91cC0+Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKaW5k
ZXggYmRjZWM2ZTAyZTRhZjZmMjI3ODNhM2U2MTEzOWMyMDQ0MTYwYTJmNS4uNWQxM2FmYTM4NDZh
YTIxNTMwYzBhYmQ1MzkwYWExZTc5OGU5ZTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIExvY2s7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7
CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMQ29udGV4dEdyb3VwOwogY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIApAQCAtNjYsNyArNjYsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBtX2Nv
bnRleHRHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4
IDE3OWQ0ODZhYjIyMjBmNGU5NTJiNDE3ZGQ3NGQ2NzUyMGY1MGU1YjkuLjRhNDIwYmYwYTExNmNj
Y2FiNWRiODdhMjZkOGJhMjQyODI4ZjJkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTeW5jLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJHTFN5bmM6OldlYkdMU3luYyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgc2V0T2JqZWN0KC0xKTsKIH0KIAotdm9p
ZCBXZWJHTFN5bmM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkK
K3ZvaWQgV2ViR0xTeW5jOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAgY29udGV4dDNkLT5kZWxldGVTeW5jKG1f
c3luYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IGMzZDMyNjRi
ODYwZGU5ZjdkZTczNDM1MGIzMTA4ZWY5ZDNhN2MwMmYuLjYwYWIwNmE5MjNmNWUwOTI2Y2M5YmY4
NWIwYTA1MWYyZTRkYTgwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5o
CkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgR0NHTGludCBtX3N5bmNTdGF0dXMgPSB7
IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEIH07CiAgICAgR0NHTHN5bmMgbV9zeW5jOwog
Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAg
IHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUu
Y3BwCmluZGV4IGEzOTg2ZGE1MDJiOWU0ZTBjYjZlNjA4NDg4ZTI2MDllYmZmMzFlZDguLjBhN2Ew
MWQyOTViMTUxYWI1NWIyOTRiMzcwODJmZTM4MjE2YWEwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdlYkdM
VGV4dHVyZTo6c2V0VGFyZ2V0KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBtYXhMZXZlbCkKICNl
bmRpZiAvLyBVU0UoQU5HTEUpCiB9CiAKLXZvaWQgV2ViR0xUZXh0dXJlOjpkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVGV4dHVyZTo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRl
VGV4dHVyZShvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1
cmUuaAppbmRleCBkZTI5ZjhiODc1N2U3OTFjZGE5OWU4ZTAxOWViN2RiOGE1OWUyYjE4Li5hODVh
Yzc4OGU3ZjE3OTc2YmVhNTQ2N2MzZDIwMWRjODhmZmQ2ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1RleHR1
cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5kZXggMDI2
ZWJiN2EyYzEzMjJiYzljYmEwNWM4OTE0ODg5Y2UzYTgzNjhmZS4uYTQ1NDliZDk1ODhjM2QzOWVm
ZTEzYmUxNDk0ZWIyNmQ3YjBlOThjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTDJSZW5kZXJp
bmdDb250ZXh0JiBjdHgpCiAgICAgbV9ib3VuZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cnMucmVzaXplKGN0eC5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicygpKTsKIH0K
IAotdm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZv
cm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4
dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKaW5kZXggN2I5OTRiMzA2ZGU0NDZhYWZl
MWZjZDcwZGZiYjA3YmViNWRmNTI5Yi4uN2JjMjEzMjk5ODJiM2VjMzk3M2Q5ZGExODcwNjA4YmE1
NDQwNjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYpOwogCi0gICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICAKICAgICBib29sIG1fYWN0
aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKaW5k
ZXggNGViZGViY2FhNzNhZTU4Mjg0ZTdmYTFkNTc0YzQxYTUyYzZiNzA1OC4uZDBlZWQ3YTQ1YTlj
YmIzMjhiNGMzNjI4YWYxM2YwYzg4Y2JmNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXgKICAgICBzZXRPYmplY3QodGhpcy0+Y29udGV4dCgp
LT5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVWZXJ0ZXhBcnJheSgpKTsKIH0KIAotdm9pZCBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3Jt
R0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBj
b250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIHN3aXRjaCAobV90eXBl
KSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCmluZGV4IDQ3NGZiZDQzNTRhOGJjOTEw
NDQxNGQzM2I2NmNkNmUzNGZlMTVmNjAuLmY3YjM2YTlmOThmMmVkNGRmMTUyZjdjY2EzOGE2Y2Rj
NzBiY2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldlYkdMVmVydGV4QXJyYXlPYmplY3QoKTsKIHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
QmFzZS5oCmluZGV4IDFjNmI2NzJhMDdmYTJmNDE1YTc2YzkzODNiNDQwZjE3MmEyYjE4MzQuLjVh
OTM2YjI4NGZjMWZkZGY2YWZlZGU3NWVmZGM4NjE1ZTc3MmRmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaApA
QCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2lu
Y2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0T2JqZWN0LmgiCiAK
QEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2UoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZv
aWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CisgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsKIAogICAgIFR5cGUgbV90
eXBlOwogICAgIGJvb2wgbV9oYXNFdmVyQmVlbkJvdW5kIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5j
cHAKaW5kZXggNWZlODFkYmZmODhiYTRmYzZhYmI4OGUyM2E5NzgzZWU4YzFhYzFkMy4uZGU0YWY3
ZTdhNmE1OTFkNjI4NDU5MTZjOTM4Y2RjZjRjY2MyMGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMoKQogICAgIHJ1bkRlc3RydWN0b3IoKTsKIH0KIAotdm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1H
TE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRl
eHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAppbmRleCAwYzE1
OWVhY2U5MjZiMDk1ZGI1ZWE2MzJkZTNhYTYxNDI1YzA3NmVmLi42MmM4ZjdjMzJmZTU2NWI2YjU3
MmI3ZjBkZTEyMWY4M2Q2YTM5MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCk7CiBwcml2YXRl
OgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggNjkzNzc4ZGY2ZTAyMGNiMDE4MDFlNzVjOGUz
OTk1M2Q5ZjE3MjYyYy4uN2EwNDIwZDdmZmFmZDY0OGU0YjZkNTcxNDhjZDAyNDdiMzg0ZWY4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dy
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9n
cmFtLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAjaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXZWJHTFByb2dy
YW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSAi
V2ViR0xTaGFkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCBmOTYwZjgwNDAyMTNhMWIyMDMzODEyODcy
MjEwZmRhZmQ2NjJmMDc2Li45MzA4MDA3ZDk3MjI3NDk2NTVjYWMzODUyYWE4ZmRjOGRhYjQ0ZmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0yNTEsNyArMjUxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29s
IGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYgY29udGV4dCwgR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5jb3B5VG9QbGF0Zm9ybVRl
eHR1cmUoY29udGV4dCwgdGFyZ2V0LCBkZXN0aW5hdGlvblRleHR1cmUsIGludGVybmFsZm9ybWF0
LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDBmNWRiYmFiZmIxNDhkZjBhZDIzMjdlMDRl
ZDMxMGZkNzE4ZTFlYzkuLjM0ZjE3ZWM2MWIzMzEwMzcxYzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CkBAIC0yNjYsNiArMjY2LDggQEAgcHVibGljOgogICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMTVf
RVhUID0gMHg4Q0VGCiAgICAgfTsKIAorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KKwogICAgIC8vIEdMX0FSQl9yb2J1c3Ru
ZXNzCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhl
IEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9sbG93aW5n
IHdheToKQEAgLTI3Myw3ICsyNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBpdCBzaG91bGQgY29udGludWUKICAgICAv
LyByZXR1cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3RvcmluZyB0aGUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgaXMgaGFuZGxlZAogICAgIC8vIGV4dGVybmFsbHkuCi0gICAgdmlydHVhbCBpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxv
bmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAs
IGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyBmaWx0ZXIpID0gMDsKQEAgLTI5MCwxMSArMjkyLDYgQEAgcHVibGljOgogICAgIC8vIEdMX0FO
R0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSAgICAvLyBF
WFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgotICAgIHZpcnR1
YWwgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2
RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZs
b2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBpbnQgKnBhcmFt
cykgPSAwOwotCiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CkBAIC0zMDgsNiArMzA1LDg0
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKKyAgICAv
LyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQorICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFy
YW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwb2ludGVyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBh
cmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZv
aWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9p
ZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2Vy
aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7IC8vIE5PTElO
VAorICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NHZS
b2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdl
cjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsgLy8g
Tk9MSU5UCisgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQq
IHBhcmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGJvb2xlYW4qIGRhdGEpID0gMDsgLy8gTk9MSU5UCisgICAgdmlydHVhbCB2b2lkIGdldE11
bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xz
aXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFk
aW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3Rp
NjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVp
bnQ2NCogcGFyYW1zKSA9IDA7CisKKyAgICAvLyBPdGhlciBmdW5jdGlvbnMuCisjaWYgIVVTRShB
TkdMRSkKKyAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQgorICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyNlbmRp
ZgorCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c0FNRCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlbCgpID0gMDsKQEAgLTMxOSw3NSAr
Mzk0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlv
bkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4
aW11bVRleHR1cmVTaXplKCkgPSAwOwogCi0gICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9t
ZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAq
ZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcG9pbnRlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5H
TEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxz
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpw
YXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBp
bnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhl
bHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldElu
dGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4
QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
aW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGlu
dCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBp
bmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZh
bCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1u
cywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9n
cmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBH
Q0dMdWludCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCmluZGV4IDEwYjU5OTcwMjM2ODc3NzFjNmVmNDE3
MDk0NTMzNjBmNWMzMTliMGEuLmRjYmM4YmI0MDg1ZWJiY2Q2Y2MzYzUzOTM3ZGU0Mzc3NDcyYjg1
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmNwcApAQCAtMTcxOSw3ICsxNzE5LDcgQEAgQUxXQVlTX0lOTElORV9FWENFUFRf
TVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydCgpCiAgICAgfQogCiAgICAgLy8gT25s
eSB0ZXh0dXJlcyB1cGxvYWRlZCBmcm9tIERPTSBlbGVtZW50cyBvciBJbWFnZURhdGEgY2FuIGFs
bG93IERzdEZvcm1hdCAhPSBTcmNGb3JtYXQuCi0gICAgY29uc3QgYm9vbCBzcmNGb3JtYXRDb21l
c0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3Jj
Rm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zvcm1hdCk7CisgICAgY29u
c3QgYm9vbCBzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFwaGlj
c0NvbnRleHRHTDo6c3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zv
cm1hdCk7CiAgICAgaWYgKCFzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEg
JiYgU3JjRm9ybWF0ICE9IERzdEZvcm1hdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTczMyw3ICsxNzMzLDcgQEAgQUxXQVlTX0lOTElORV9F
WENFUFRfTVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydCgpCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICgoIUdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpoYXNBbHBoYShTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aGFzQ29sb3IoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6Omhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhhT3AgIT0gR3JhcGhpY3NDb250ZXh0R0w6
OkFscGhhT3A6OkRvTm90aGluZykgeworICAgIGlmICgoIUdyYXBoaWNzQ29udGV4dEdMOjpoYXNB
bHBoYShTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRleHRHTDo6aGFzQ29sb3IoU3JjRm9ybWF0
KSB8fCAhR3JhcGhpY3NDb250ZXh0R0w6Omhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhhT3Ag
IT0gR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRvTm90aGluZykgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKaW5kZXggZjRjZGQ2
ZTdmZTg3NzZjODhiNmY5NjZiY2I0MDRkZDY0MDgzOTA4MC4uYzZmNTEyNmVkZTVjYmQ2Yzc1MzI5
MzhiY2NlODZjOTM3NjU0MzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IDA4YWIzYjIyMDBmYTlkMmQ3ZDViYTVlNWJiM2E1OGFkY2MxMjU2YzMu
LjQ1MzlmYmI2ZGJmM2VjNzgzYzYxMzM4NmVhMjU0OTRmNGViNmIxYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05NCw3
ICs5NCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE1lZGlh
UGxheWVyOwogY2xhc3MgUm91bmRlZFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUGF0aDsKIGNsYXNzIFRleHRSdW47
CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBhMTZmNThkYjNh
NDBhNGFlNTdmZjlhN2FjMTE1OGQ3ODcxYTNlZmYzLi5kZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRj
NTA5NTUxNTg4YTE5NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC03MzQsODcgKzczNCw2IEBAIEdDR0xl
bnVtIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UjsKIH0KIAotI2lmICFVU0UoQU5HTEUpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMOjpwb3NzaWJs
ZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0NHTGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpCi17Ci0jZGVmaW5lIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGVNYWNy
bykgY2FzZSBpbnRlcm5hbEZvcm1hdE1hY3JvOiBcCi0gICAgICAgIGZvcm1hdCA9IGZvcm1hdE1h
Y3JvOyBcCi0gICAgICAgIHR5cGUgPSB0eXBlTWFjcm87IFwKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KSB7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCLCBSR0IsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQkEsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKExVTUlOQU5DRV9BTFBIQSwgTFVNSU5BTkNFX0FMUEhBLCBVTlNJR05F
RF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0UsIExV
TUlOQU5DRSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoQUxQSEEsIEFMUEhBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSOCwgUkVELCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSOF9TTk9STSwgUkVELCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSMTZGLCBSRUQsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFIzMkYsIFJFRCwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFI4VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOEksIFJFRF9JTlRFR0VSLCBCWVRFKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVE
X1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZJLCBSRURfSU5U
RUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMlVJLCBS
RURfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSMzJJLCBSRURfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSRzgsIFJHLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSRzhfU05PUk0sIFJHLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSRzE2RiwgUkcsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHMzJGLCBSRywgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHOFVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhJLCBSR19JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX1NI
T1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2SSwgUkdfSU5URUdF
UiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJVSSwgUkdf
SU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSRzMySSwgUkdfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFNSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQjU2NSwgUkdCLCBVTlNJR05FRF9TSE9SVF81XzZfNSk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOF9TTk9STSwgUkdCLCBCWVRFKTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTFGX0cxMUZfQjEwRiwgUkdCLCBVTlNJ
R05FRF9JTlRfMTBGXzExRl8xMUZfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0I5X0U1LCBSR0IsIFVOU0lHTkVEX0lOVF81XzlfOV85X1JFVik7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZGLCBSR0IsIEhBTEZfRkxPQVQpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMyRiwgUkdCLCBGTE9BVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOFVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURf
QllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOEksIFJHQl9JTlRF
R0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNlVJLCBS
R0JfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQjE2SSwgUkdCX0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0IzMlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMkksIFJHQl9JTlRFR0VSLCBJTlQpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4LCBSR0JBLCBVTlNJR05FRF9C
WVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOF9BTFBIQTgsIFJH
QkEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QkE4X1NOT1JNLCBSR0JBLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0I1X0ExLCBSR0JBLCBVTlNJR05FRF9TSE9SVF81XzVfNV8xKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBNCwgUkdCQSwgVU5TSUdORURfU0hPUlRfNF80XzRfNCk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBfQTIsIFJHQkEsIFVOU0lH
TkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCQTE2RiwgUkdCQSwgSEFMRl9GTE9BVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkdCQTMyRiwgUkdCQSwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQkE4VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThJLCBSR0JBX0lOVEVHRVIsIEJZVEUpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0EyVUksIFJHQkFfSU5URUdF
UiwgVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0JBMTZVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2SSwgUkdCQV9JTlRFR0VSLCBTSE9S
VCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMySSwgUkdCQV9JTlRF
R0VSLCBJTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMlVJLCBS
R0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoREVQVEhfQ09NUE9ORU5UMTYsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVCwgREVQ
VEhfQ09NUE9ORU5ULCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMjQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfSU5U
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQzMkYs
IERFUFRIX0NPTVBPTkVOVCwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKERFUFRIX1NURU5DSUwsIERFUFRIX1NURU5DSUwsIFVOU0lHTkVEX0lOVF8yNF84KTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSDI0X1NURU5DSUw4LCBERVBUSF9T
VEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoREVQVEgzMkZfU1RFTkNJTDgsIERFUFRIX1NURU5DSUwsIEZMT0FUXzMyX1VOU0lHTkVE
X0lOVF8yNF84X1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5z
aW9uc0dMOjpTUkdCX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgVU5TSUdORURfQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0FM
UEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgVU5TSUdORURfQllURSk7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSN1bmRlZiBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZiAvLyAhVVNF
KEFOR0xFKQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdMOjpwYWNrSW1hZ2VEYXRhKEltYWdlKiBp
bWFnZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgZmxpcFksIEFscGhhT3AgYWxwaGFPcCwgRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIHVu
c2lnbmVkIHNvdXJjZUltYWdlV2lkdGgsIHVuc2lnbmVkIHNvdXJjZUltYWdlSGVpZ2h0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VJbWFnZVN1YlJlY3RhbmdsZSwgaW50IGRlcHRoLCB1bnNpZ25lZCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsIGludCB1bnBhY2tJbWFnZUhlaWdodCwgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQogewogICAgIGlmICghaW1hZ2UgfHwgIXBpeGVscykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDAw
N2M5M2MxMGQxN2Y2ODJjMmE1ODZiZjcxMDExOWFhZWNjMTRlNDUuLmQ5ZTU4OGFmYTMwZGJhNzMw
OTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTE5LDcgKzkxOSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRk
KCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsgbV9j
bGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAgLy8gPT09PT09PT09PSBXZWJHTCAxIGVu
dHJ5IHBvaW50cy4KKyAgICAvLyBXZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgdW5kZXJzdGFuZHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlVGV4dHVyZShH
Q0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFNoYWRlcihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKSA9IDA7CkBAIC0x
MDk5LDUzICsxMDk5LDI5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9
IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBidWZm
ZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRh
dGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgR0NHTGVudW0gdXNhZ2UpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NH
THZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
LCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHZvaWQqIGRhdGEpID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykg
PSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBw
cmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dM
dWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAwOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsg
fQotICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KLSAgICAvLyBDb25jZXNzaW9u
IHRvIENhbnZhcyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVkcyB0byBkeW5hbWljYWxseSBzZXQK
LSAgICAvLyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1ZSBpbiBvcmRlciB0byBhdm9pZCBp
bXBsaWNpdCBjbGVhcnMuCi0gICAgLy8gSW1wbGVtZW50YXRpb25zIGdlbmVyYWxseSBkbyBub3Qg
c3VwcG9ydCB0b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmlseS4KLSAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0KICAgICAvLyBWZXJ0ZXhBcnJheU9qZWN0
IGNhbGxzCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0
KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QpID0gMDsKIAotI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCi0gICAgdmly
dHVhbCB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCkgPSAwOwotI2VuZGlmCi0K
LSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0
LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2Fy
aWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNh
bGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCi0gICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0g
ICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSA9IDA7Ci0KICAgICAvLyA9
PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCi0gICAgdmlydHVhbCB2b2lkIGJ1ZmZl
ckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNl
dCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSBy
ZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBH
Q0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJp
dGZpZWxkIGFjY2VzcykgPSAwOworICAgIHZpcnR1YWwgR0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgs
IEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xib29sZWFuIHVubWFw
QnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFt
ZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CkBA
IC0xMjQzLDE5ICsxMjE5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBHQ0dMdWludCBnZXRV
bmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
dW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFt
ZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCi0gICAgLy8gdGV4U3ViSW1hZ2UyRCB3aXRo
IHBpeGVsIHBhY2sgYnVmZmVyLCBhbmQgc3JjRGF0YStvZmZzZXQsIGFyZQotICAgIC8vIHN1cHBv
cnRlZCBvbmx5IHZpYSBBTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeS4KLQotICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNE
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7Ci0KICAgICB2aXJ0dWFs
IHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKQEAgLTEyNzAs
MTAgKzEyMzYsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0
KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KSA9IDA7CisgICAgLy8g
T3RoZXIgZnVuY3Rpb25zLgogCi0gICAgLy8gPT09PT09PT09PSBOb24tV2ViR0wgYmFzZWQgZW50
cnkgcG9pbnRzLgorICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KKyAgICB2b2lkIHNldENvbnRleHRBdHRy
aWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRy
cyA9IGF0dHJzOyB9CisKKyAgICAvLyBGSVhNRTogVGhlIGNhbGxpbmcgc2l0ZSBzaG91bGQgYmUg
Zml4ZWQsIHRoaXMgYnJlYWtzIHRoZSBXZWJHTCBzcGVjCisgICAgLy8gd3J0IHByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9PSBmYWxzZSBiZWhhdmlvci4KKyAgICAvLyBDb25jZXNzaW9uIHRvIENhbnZh
cyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVkcyB0byBkeW5hbWljYWxseSBzZXQKKyAgICAvLyBw
cmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1ZSBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCBj
bGVhcnMuCisgICAgLy8gSW1wbGVtZW50YXRpb25zIGdlbmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0
b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmlseS4KKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJl
c2VydmVEcmF3aW5nQnVmZmVyKCk7CisKKyAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CisgICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKKyAgICAvLyBj
dXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCisg
ICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisgICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdldEV4dGVu
c2lvbnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkg
PSAwOwogCkBAIC0xMjkxLDIxICsxMjcxLDQzIEBAIHB1YmxpYzoKICAgICAvLyBnZXRFcnJvciBp
biB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLgogICAgIHZpcnR1YWwgdm9pZCBzeW50aGVzaXpl
R0xFcnJvcihHQ0dMZW51bSBlcnJvcikgPSAwOwogCisgICAgLy8gUmVhZCByZWFsIE9wZW5HTCBl
cnJvcnMsIGFuZCBtb3ZlIHRoZW0gdG8gdGhlIHN5bnRoZXRpYworICAgIC8vIGVycm9yIGxpc3Qu
IFJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlcnJvciBpcyBtb3ZlZC4KKyAgICB2aXJ0dWFs
IGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgPSAwOworCiAgICAgdmlydHVh
bCB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKKyAgICAvLyBGSVhNRTogc2hvdWxkIGJlIHJl
bW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFuZ2VkIHN0YXRlLgorICAgIHZp
cnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhl
c2Ugc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBpcyBpbnRlcmVzdGVkIGluIGJ1ZmZlciBjbGVh
ciBzdGF0dXMgYW5kCisgICAgLy8gc2hvdWxkIHRyYWNrIHRoYXQgaW4gYSB2YXJpYWJsZSB0aGF0
IHRoZSBjYWxsZXIgaG9sZHMuIENhbGxlciBzaG91bGQgcmVjZWl2ZQorICAgIC8vIHRoZSB2YWx1
ZSBmcm9tIHJlc2hhcGUoKSBhbmQgZGlkQ29tcG9zaXRlKCkuCisgICAgdmlydHVhbCBib29sIGxh
eWVyQ29tcG9zaXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgPSAwOworICAgIHZpcnR1YWwgR0NHTGJpdGZpZWxkIGdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0ID0gMDsKKworICAgIC8vIEZJWE1FOiB0aGVzZSBz
aG91bGQgYmUgcmVtb3ZlZCwgdGhleSdyZSBwYXJ0IG9mIGRyYXdpbmcgYnVmZmVyIGFuZAorICAg
IC8vIGRpc3BsYXkgYnVmZmVyIGFic3RyYWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhv
bGQgc2VwYXJhdGUgdG8KKyAgICAvLyB0aGUgY29udGV4dC4KKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikgPSAwOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRo
ZSBsYXllciBzaG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKKyAgICAvLyBwcmVwYXJpbmcg
Zm9yIGRpc3BsYXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFn
cmVlCisgICAgLy8gb24gdGhlIGNvbnRlbnQuCisgICAgdmlydHVhbCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdl
ZCgpID0gMDsKKwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICAv
LyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1YgaW50ZXJhY3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxp
dHkgaXMgcHJlc2VudC4KICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9
IDA7CiAjZW5kaWYKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgLy8gSGVscGVyIHRvIHRleEltYWdl
MkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCi0gICAg
Ly8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMgc3ludGhlc2l6ZWQuCi0gICAgLy8gQnkg
ZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVuR0wgZGVmYXVsdCBzZXR0aW5nLgotICAg
IHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KSA9ICAwOwotI2VuZGlmCiAKICAgICBJbnRTaXpl
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsgfQogCkBAIC0xMzM1LDEwICsxMzM3LDYgQEAg
cHVibGljOgogICAgIC8vICAgSU5WQUxJRF9FTlVNIGlmIGZvcm1hdC90eXBlIGlzIGlsbGVnYWwu
CiAgICAgc3RhdGljIEdDR0xlbnVtIGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIGNvbnN0IFBpeGVsU3RvcmVQYXJhbXMmLCB1bnNpZ25lZCogaW1hZ2VT
aXplSW5CeXRlcywgdW5zaWduZWQqIHBhZGRpbmdJbkJ5dGVzLCB1bnNpZ25lZCogc2tpcFNpemVJ
bkJ5dGVzKTsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgc3RhdGljIGJvb2wgcG9zc2libGVGb3Jt
YXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKTsKLSNlbmRpZiAvLyAhVVNFKEFOR0xFKQotCiAg
ICAgLy8gRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBnaXZlbiBJbWFnZURhdGEgaW50byB0
aGUgcGFzc2VkIFZlY3RvciwKICAgICAvLyBwYWNraW5nIHRoZSBwaXhlbCBkYXRhIGFjY29yZGlu
ZyB0byB0aGUgZ2l2ZW4gZm9ybWF0IGFuZCB0eXBlLAogICAgIC8vIGFuZCBvYmV5aW5nIHRoZSBm
bGlwWSBhbmQgcHJlbXVsdGlwbHlBbHBoYSBmbGFncy4gUmV0dXJucyB0cnVlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IGYz
NTFjZmI4ZDhmZTE2Yjc2OGYyM2E0ZGE2YmRhNzQ1MDVkZDYxZjkuLjY5OWRlMjhiYWViOTJjYzI1
MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC00OCw2ICs0OCw3IEBAIHR5cGVkZWYg
Y2hhciBHQ0dMY2hhcjsKIHR5cGVkZWYgbG9uZyBsb25nIEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7CiB0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0NH
THN5bmM7Cit0eXBlZGVmIHZvaWQgR0NHTHZvaWQ7CiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZv
cm1HTE9iamVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKaW5kZXggYjkxMzRkZDcyY2VlMjhlNmExYWI2NWVmZjJjMDdhNmQ1MzE3ODA1MS4u
ZDE0ODk5ZjAxNzAzY2UzMTc0NGViYThlMjc3OTY3YTFmODk4YmNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IGN1cnJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRo
aXMgbWV0aG9kIGhhdmUgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhleSBvbmx5IHdvcmsKICAgICAv
LyB3aXRoIHRleHR1cmVzIHRoYXQgYXJlIFJHQiBvciBSR0JBIGZvcm1hdCwgYW5kIFVOU0lHTkVE
X0JZVEUgdHlwZS4KLSAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVt
LCBib29sLCBib29sKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKICAgICAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggMWFiMGEyMWZmOTQ5ODk5Zjk4YmRhOWUwMGEwNmZkZmZkYjBkMzYzYi4uMGI4NDAwOTIx
MjA0NjE2NDA5N2M5MzRlNjZlNTI4OTNiZTMyZDFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTM4LDcgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNs
YXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGRlc3RGb3JtYXQpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0s
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJv
b2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDI4ODM0OGU1MmExZWUzZmI5ZDFh
MTdkNzc0Njg0ZDY5ZDZiNDEyMzkuLjhiMGQ3M2U4ZDgyNGZkYjY5Y2ZmMDY5OGM4MmY4OWQwOTE4
NWE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgcCwgY29uc3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFp
bnQocCwgcik7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxp
cFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggMmFiMTU4OTk1ZDdkMmVlZGFmMzA3YzY3OTUyYzNmZjZiZWRmNGM3MS4uZDI1MjBh
Y2JiYmIxYTY5OGNhM2Q0MDcwNjYyZjFkM2ZkOTY4NzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBDRE1JbnN0
YW5jZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBMZWdhY3lDRE07CkBAIC00
MzEsNyArNDMxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG1h
eSBuZWVkIHRvIGJlIHJlc2l6ZWQgdG8gdG8gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHNvdXJjZSB0
ZXh0dXJlIG9yIHJlLWRlZmluZWQgdG8gdGhlIHJlcXVpcmVkIGludGVybmFsRm9ybWF0LgogICAg
IC8vIFRoZSBjdXJyZW50IHJlc3RyaWN0aW9ucyByZXF1aXJlIHRoYXQgZm9ybWF0IHNob3VkIGJl
IFJHQiBvciBSR0JBLCB0eXBlIHNob3VsZCBiZSBVTlNJR05FRF9CWVRFIGFuZCBsZXZlbCBzaG91
bGQgYmUgMC4gSXQgbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlLgogCi0gICAgYm9vbCBjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKKyAgICBib29sIGNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggN2U5MGNkZGRmYzg3MDFiYmNk
YTcyZDk0YWU0ZGI4ZjBkYTAxMGRiZi4uZjliOTIwNjE5MGQ1YWVkMDZkMGQ4OGMwYzc0MTVjZTE2
NGRhNTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQotICAgIHZpcnR1
YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXll
cjo6UHJlbG9hZCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMTNmYWY1ZGI2NGZm
YjI4NmJlNmFkOTU3OTUwOTVmY2M5M2YzMzM5NC4uMWM4YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3
NmE1Njk1MDZiZmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMTQ4LDIxICsxNDgs
NiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9u
cygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVsc0VYVChpbnQsIGludCwgR0NHTHNpemVp
LCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCB2b2lkICopCi17Ci0g
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19
Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIGlu
dCwgR0NHTHNpemVpLCBmbG9hdCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgaW50ICopCi17Ci0gICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25n
IHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBs
b25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcg
ZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQ
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCkBAIC00NjIsNiArNDQ3LDggQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXYKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2w6OkNvbXByZXNzZWRUZXhJ
bWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXplLCBkYXRhKTsKKyAgICBtX2NvbnRleHQt
Pm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9jb250ZXh0LT5tX3N0YXRlLmN1cnJlbnRC
b3VuZFRleHR1cmUoKSk7CisKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50
IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCkBAIC00NzAsNiArNDU3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IGludAogICAgICAgICByZXR1cm47CiAKICAgICBnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkRS
b2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgbV9jb250ZXh0LT5tX3N0
YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRU
ZXh0dXJlKCkpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1h
Z2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggNDZhYWM5ZjIxZWUy
N2NjNzVhMDhjZjdjMWI3NWExMGFlNDU3MjgyMC4uMTI1Njk1NjdjMTdjOTI2YjcxYTkxYmI0YmIx
MTk1NTZiYTA2ZjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW5h
YmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOworICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CkBAIC02MywxMSArNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRp
dmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5V
bmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCiAgICAgYm9vbCBpc05WSURJQSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KICAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc0FNRDsgfQogICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNJbnRlbDsgfQpAQCAtODgsMzQgKzgzLDM0IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNoYWRl
cml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xm
bG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgdm9pZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleElt
YWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBp
bnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4
ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCog
ZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dM
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEp
IG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsK
LSAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dDY0ICpkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAg
dm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlkZTsKICAgICB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgb3ZlcnJpZGU7CkBAIC0xMjQs
MTYgKzExOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQg
aW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4g
KmRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOyAvLyBOT0xJTlQKICAgICB2b2lk
IGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAq
KnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4
LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDUwMDk4OWNiYTk2NWQ3Y2Rj
OTlkMTU1MDYwNTk4Zjc3ZWEwNDViNDEuLmRmNmYzNGM5ZDYxOGQwN2FkZjIxOTg1YTMwMWNiZTQx
NDI5MzkwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yMDUwLDI0
ICsyMDUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0wKICAgICBtX3N0YXRlLnRleHR1cmVT
ZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBk
YXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJv
dW5kVGV4dHVyZSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKLSAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRl
QnVmZmVyKCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjI4NywxNiAr
MjI2OSw2IEBAIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxv
Y2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sCiAgICAgcmV0dXJuIGdsOjpHZXRVbmlm
b3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1zKQotewotICAgIFJFTEVBU0VfTE9HKFdlYkdM
LCAiVXNlIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUgaW5zdGVhZC4iKTsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVT
RURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7Ci19Ci0KIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAg
LTI0NTksMzQgKzI0MzEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kQnVm
ZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbAogICAgIGdsOjpCaW5k
QnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0
YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQot
ewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0odXNhZ2UpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0
LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0
aCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0Qnl0
ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCi0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9m
ZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7
Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCkBAIC0yOTIxLDU4ICsyODY1LDYgQEAgVmVjdG9yPEdDR0x1aW50PiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVj
dCBwcm8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwp
OwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdp
ZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oYm9yZGVy
KTsKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29u
c3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhP
dmVycmlkZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
bGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0o
Ym9yZGVyKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJB
TSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhv
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0od2lk
dGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQp
OwotICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGhPdmVycmlkZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBV
TlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURf
UEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlmICghbWFrZUNv
bnRleHRDdXJyZW50KCkpCkBAIC0zMDYxLDI5ICsyOTUzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFu
c3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsK
LSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAg
IFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVT
RURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERh
dGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5
cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0T2Zm
c2V0KTsKLX0KLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAppbmRleCA3ODllMjZmOTIxYTFiZmYxN2I5ZDRiNjdlNzNhNjFkYzAwZThk
NWRjLi5mNzEzMTI2NWVjYzY4M2QxOGMyOTU4NTFkOGJlZmQzM2RjYzFlNDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCkBAIC0yNTMsNyArMjUzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdh
aXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAotICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxh
dGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgZmxpcFkpIGZpbmFsOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMDc4
ZWJiYTQyOGQ3M2Y3MmIxZDg0ZjY1YzYxMDQzZDM4ZDg2NTQ4Ni4uNWYwYTI0NjA0MzYxNzg2MTk0
ZmE4ZTBjNmNjZDRjNjAzMjRjY2E5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00Miw4
ICs0Miw4IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTENWLmgiCi0jaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5oIgogI2ltcG9ydCAiSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAj
aW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgpAQCAtMjMyNSw3ICsyMzI1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogfQogCi1ib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRU
ZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91
dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApp
bmRleCAxMTIyNWNlYjMxMjI5NDc5MWU0ZTc1NjA2Yzc0MjJjZDkyZjZlNTkzLi4zMDY1NGUyNjhk
YzQ0ZTJlM2EwN2UxM2RmZDA5MTVlMDc3ZTNkZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aApAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2Uo
KTsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJpZGU7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVuZGVyaW5nIHN5c3Rl
bSBmbGlwcyB0aGUgaW50byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1vZGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZGI0ZDQzYzVmMGU4N2E3ZmExZjE4MTNkYjkw
NDgxZjYzMzIxN2EzMy4uYjQwMjRhOTE0OGUxYWUyNWIzYzk0Mjc4Mzg0NjkyYWIwMWFlYTZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzMsOCArMzMsOCBAQAogI2ltcG9ydCAi
QVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTENWLmgiCi0j
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTb3Vy
Y2VQcml2YXRlQ2xpZW50LmgiCkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ28KICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4
dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91
dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIC8vIFdlIGhhdmUgYmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wg
Y2FudmFzLCBzbyB0YWtlIHRoYXQgYXMgYSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNv
bXByZXNzaW9uIHNlc3Npb24sIGV2ZW4gaWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNh
bid0IGFsc28gYmUgZGlzcGxheWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggMTExMDhmOTNhNjRjYTQzNzU0YTRiYzU5
YTNmMjM0MGYxN2Q1YTgzYS4uODM1MzQzYjhlNzliMzc2YjdmNzNkM2M0Mzc0Y2I1N2FlZmRhMmEw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbXBvcnQgIkhvc3RXaW5k
b3cuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwCmluZGV4IDNhN2EwNzI2MDdiYWI1ZjYwOTg3MjcxYWE4ZTYzYTZiZWUxNGNkM2Iu
LjQ0ZmY5MmVhMTRmZWVmNTMzOWU1MjYyOTgzNDI3M2JiMzA2NmJiZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBA
IC0yMSw3ICsyMSw3IEBACiAKICNpZiBVU0UoRUdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmMWY4N2ZiZTNlYTQ1
OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwLi43ZTBhZDU0NzhjYTE3OTE5YTBlOWIzMzE5Y2Zm
NDZjMmZmYzEwMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMzE4Miw3ICszMTgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWMK
IH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVt
IG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGZsaXBZKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAppbmRleCAwYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkwOGFkMTA5Li5lMDE2
MTViMGYzYTM1MGQ2ZjA3NTA4NjJlMzYwYTZiMGNkYjc3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcFRleHR1cmVHTDsKIGNsYXNzIEdMQ29udGV4dDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjsKQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCi0gICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51
bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51
bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKaW5kZXggNWJlNWE5ZDY3M2I2ZGEwOWRmMjNkOGI1MjRmZDgyM2NiNmM4OTNkZC4uZjE1Yjdm
Mjk1YTk1MWIyZDg5NGVjMGZhOTE5NTRlOTZmNDdhNGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCkBAIC05Nyw2ICs5Nyw4OCBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZQogI2VuZGlmCiAKIAorI2lmICFVU0UoQU5HTEUpCitib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpCit7CisjZGVm
aW5lIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0
TWFjcm8sIHR5cGVNYWNybykgY2FzZSBpbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisgICAgICAgIGZv
cm1hdCA9IGZvcm1hdE1hY3JvOyBcCisgICAgICAgIHR5cGUgPSB0eXBlTWFjcm87IFwKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KSB7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCLCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKExVTUlOQU5DRV9BTFBIQSwgTFVNSU5BTkNF
X0FMUEhBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShMVU1JTkFOQ0UsIExVTUlOQU5DRSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoQUxQSEEsIEFMUEhBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOCwgUkVELCBVTlNJR05FRF9CWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOF9TTk9STSwgUkVELCBCWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZGLCBSRUQsIEhBTEZfRkxPQVQpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMkYsIFJFRCwgRkxPQVQpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9C
WVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOEksIFJFRF9JTlRFR0VS
LCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZVSSwgUkVEX0lO
VEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSMTZJLCBSRURfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFIzMlVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSMzJJLCBSRURfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzgsIFJHLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhfU05PUk0sIFJHLCBCWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2RiwgUkcsIEhBTEZfRkxPQVQpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJGLCBSRywgRkxPQVQpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOFVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9CWVRF
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhJLCBSR19JTlRFR0VSLCBC
WVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2VUksIFJHX0lOVEVH
RVIsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
RzE2SSwgUkdfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHMzJVSSwgUkdfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSRzMySSwgUkdfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjU2NSwgUkdCLCBVTlNJR05FRF9TSE9S
VF81XzZfNSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOF9TTk9STSwg
UkdCLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTFGX0cxMUZf
QjEwRiwgUkdCLCBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0I5X0U1LCBSR0IsIFVOU0lHTkVEX0lOVF81XzlfOV85X1JF
Vik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZGLCBSR0IsIEhBTEZf
RkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMyRiwgUkdCLCBG
TE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOFVJLCBSR0JfSU5U
RUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UkdCOEksIFJHQl9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0IxNlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2SSwgUkdCX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMlVJLCBSR0JfSU5URUdFUiwgVU5TSUdO
RURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMkksIFJHQl9J
TlRFR0VSLCBJTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4LCBS
R0JBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShT
UkdCOF9BTFBIQTgsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQkE4X1NOT1JNLCBSR0JBLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0I1X0ExLCBSR0JBLCBVTlNJR05FRF9TSE9SVF81XzVfNV8xKTsK
KyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBNCwgUkdCQSwgVU5TSUdORURf
U0hPUlRfNF80XzRfNCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBf
QTIsIFJHQkEsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2RiwgUkdCQSwgSEFMRl9GTE9BVCk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMyRiwgUkdCQSwgRkxPQVQpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURf
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThJLCBSR0JBX0lO
VEVHRVIsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0Ey
VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05F
RF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2SSwgUkdC
QV9JTlRFR0VSLCBTSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QTMySSwgUkdCQV9JTlRFR0VSLCBJTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQkEzMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMTYsIERFUFRIX0NPTVBPTkVOVCwg
VU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRI
X0NPTVBPTkVOVCwgREVQVEhfQ09NUE9ORU5ULCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMjQsIERFUFRIX0NPTVBPTkVO
VCwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBU
SF9DT01QT05FTlQzMkYsIERFUFRIX0NPTVBPTkVOVCwgRkxPQVQpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX1NURU5DSUwsIERFUFRIX1NURU5DSUwsIFVOU0lHTkVE
X0lOVF8yNF84KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSDI0X1NU
RU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgzMkZfU1RFTkNJTDgsIERFUFRIX1NURU5DSUwsIEZM
T0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwg
VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5z
aW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgVU5T
SUdORURfQllURSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyN1bmRlZiBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFCisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KyNlbmRpZiAvLyAhVVNFKEFOR0xFKQorCisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyNDQyODlkNWJlZDIwYjkwYzBlNjZj
M2MzNzU0MzUxMmYyNDkwOWFiLi43NzVmOTA0MDZmNDJhNjA5MWRkYzNmZWExZTUwYjdjMmIwYWU0
ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTI5LDcgKzEyOSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlU2hhZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmpl
Y3QpOwogCiAjaWYgIVVTRShBTkdMRSkKLSAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpIGZpbmFsOwor
ICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFy
ZSBpbml0aWFsaXplZCB0byAwLgorICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlz
IHN5bnRoZXNpemVkLgorICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3Bl
bkdMIGRlZmF1bHQgc2V0dGluZy4KKyAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogI2VuZGlmCiAK
ICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKQEAgLTE2Myw4ICsxNjYs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJv
b2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhhKSBmaW5hbDsK
ICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKLSAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
IGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIpIGZpbmFsOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCkgZmluYWw7CiAgICAgdm9pZCBjdWxsRmFjZShHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI5
Myw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogCi0gICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCByZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKQEAgLTMwNywxMSArMzEyLDEzIEBAIHB1
YmxpYzoKIAogICAgIC8vID09PT09PT09PT0gV2ViR0wyIGVudHJ5IHBvaW50cy4KIAotICAgIHZv
aWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVt
IHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zm
c2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxl
bmd0aCkgZmluYWw7Ci0KKyNpZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CisgICAgdm9pZCBnZXRCdWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25z
dCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Cisj
ZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdD
R0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3Jp
dGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5hbDsKLSAgICB2b2lkIGdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZv
aWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsK
KwogICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwog
ICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgZmluYWw7CiAKQEAg
LTQwNywxNSArNDE0LDE2IEBAIHB1YmxpYzoKIAogICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9j
a0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxv
Y2tOYW1lKSBmaW5hbDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKLSAg
ICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJh
bXMpIGZpbmFsOwogICAgIFN0cmluZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGZpbmFsOwogICAg
IHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5h
bDsKIAotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCog
c3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkg
ZmluYWw7CisjaWYgIVVTRShBTkdMRSkKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoT3ZlcnJpZGUpOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpIGZpbmFsOworICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIg
b2Zmc2V0KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lk
KiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRl
KTsKKyNlbmRpZgogCiAgICAgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5h
bDsKQEAgLTQzMSwxNiArNDM5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lk
IHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBk
c3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAg
dm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpOworICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7CisjZW5kaWYK
IAogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgdm9pZCBt
YXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKLSAg
ICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OworICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CisgICAg
Ym9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZvcmNlQ29udGV4
dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250ZXh0KCk7CiAKQEAgLTQ0OCwxOSArNDU4LDE5
IEBAIHB1YmxpYzoKICAgICAvLyByZXNldCBtZXRob2QgaXMgcHJlc2VudCB0byBrZWVwIGNhbGxp
bmcgY29kZSBzaW1wbGVyLCBzbyBpdAogICAgIC8vIGRvZXNuJ3QgaGF2ZSB0byBrbm93IHdoaWNo
IGJ1ZmZlcnMgd2VyZSBhbGxvY2F0ZWQuCiAgICAgdm9pZCByZXNldEJ1ZmZlcnNUb0F1dG9DbGVh
cigpOwotICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCk7Ci0gICAg
R0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0OworICAgIHZvaWQgc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgZmluYWw7CisgICAgR0NHTGJpdGZpZWxk
IGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZW5hYmxlUHJl
c2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKTsK
KyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKLSAgICBSZWZQdHI8SW1h
Z2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwotICAgIGJvb2wgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CisgICAgdm9pZCBwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIFJlZlB0
cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7Cisg
ICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5h
bDsKIAogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCi0gICAgdm9pZCBwcmltaXRp
dmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpIGZpbmFsOworICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFy
dEluZGV4KEdDR0x1aW50KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFBMQVRG
T1JNKE1BQykKQEAgLTQ4NywxMCArNDk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVGV4
dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJy
b3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwotCi0gICAgLy8gUmVhZCByZWFsIE9wZW5HTCBlcnJv
cnMsIGFuZCBtb3ZlIHRoZW0gdG8gdGhlIHN5bnRoZXRpYwotICAgIC8vIGVycm9yIGxpc3QuIFJl
dHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlcnJvciBpcyBtb3ZlZC4KLSAgICBib29sIG1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhl
dGljRXJyb3JMaXN0KCkgZmluYWw7CiAKICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKQEAgLTUxMyw2
ICs1MjAsMTAgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5h
bDsKICNlbmRpZgogCisjaWYgIVVTRShBTkdMRSkKKyAgICBzdGF0aWMgYm9vbCBwb3NzaWJsZUZv
cm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpOworI2VuZGlmIC8vICFVU0UoQU5HTEUpCisK
IHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5hdGlvbjo6T2Zmc2Ny
ZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9IG51bGxwdHIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA5
ODRmNjJkMGI1NGRkOGE4YWVhMzk3YjA4MTc3ZWI4YjQ2YzlmZjcxLi5iMGMxZjFkZmQ0M2Q0MTUw
NDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI5NDMsMTQgKzI5NDMsNiBAQCBHQ0dMdWludCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1z
KQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0odW5pZm9y
bUJsb2NrSW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHBhcmFtcyk7Ci19Ci0KIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKQEAgLTI5NzUsMTAg
KzI5NjcsNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgUwogICAgIHJldHVybiAwOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTGVudW0sIEdDR0xpbnQqKQotewotfQotCiBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxh
dGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCiB7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZh
MTNiMzNjMzk2MDg2NDliNS4uZTA5YWYwZGMzMmJiMWJiYTVlYmQ4NmU0ZGMwNjcwYTAyZmY3Y2Q5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODA1LDcgKzgwNSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBH
Q0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQorYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggMmEzYzI2NDU1Y2E2ZjU2NWFlYzQyMzQ5YjIxMWI1MThhMGUyMDc4OC4uZjM2MzcyNTA5
ZWE5ZTRmOGUxYTdkOGY3ZjUyNzYzYzM0ZjExZTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnQoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAg
ICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICBib29sIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBib29sLCBib29sKSBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="430771"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414028</attachid>
            <date>2020-11-13 03:42:23 -0800</date>
            <delta_ts>2020-11-13 05:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201113134221.patch</filename>
            <type>text/plain</type>
            <size>173458</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E1MWVhYzgyY2VjOGMw
MDMxODJkMzhiM2FjNzBkYzRhNzA4MzUwMi4uNjBlMzIwZWY2ZWZkYTQxZjE4ZDk4ZTRmYzIxN2U5
YzExMmQ0ZmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMS0xMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTEtMTMgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQy
ZTg0NmMxNTgwY2U3ZjdmYmUzZjI1YTE4MTUxYjQ4YTU1NGU2MTguLjQ5ZTE0ODc0ZWE5ODlmMWUz
NDUwMjc3ZTE4NmU2Mzg2OTljZTZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTEtMTIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTExLTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFNlY0l0ZW1TaGltLmR5bGliIGZyb20gbmV0d29yayBzZXJ2aWNlIGxpbmsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGUyNDQyNDI3ODRkMDUwMWNk
YzRiYWRhNDRiNzU2M2UxMDZkYjFlYTMuLjY0MDI4ODU3ZDY0ZTBmNDM2N2M1NmM3Nzk5NDllM2Rk
MmIwNTE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
MzAwLDcgKzMwMCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgZGVzdFJlY3QpOwogfQogCi1ib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jv
b2wgSFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggODFmMDgzYTUwYzY0NzYyYmUyOTVh
M2E2MzEyNDQ2ZDZiZjJiOTM2My4uZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYxNmViOTJmMGJkZWZh
ZThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1
cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBs
YXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CisgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
RGlzcGxheVBvc3RlckltYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNmUwY2ZmNjgzZjg3
ZjI4MzZjMjBkNGJkMTMxMWY1ZGRmOGYyYjM3NS4uODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4
NGRlODI4NTgxN2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZShDYW52YXNCYXMKICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5p
cXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXV0byBy
ZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+
KG5ldyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0
cmlidXRlcykpOwogICAgIC8vIFRoaXMgaXMgdmlydHVhbCBhbmQgY2FuJ3QgYmUgY2FsbGVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KQEAgLTEwNSw3ICsxMDUsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgR3JhcGhpY3ND
b250ZQogewogfQogCi1XZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMs
IFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcykKICAgICA6IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoY2FudmFz
LCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYmVjZDI5M2IxZDZkMDZlYjU4MmE1ZTBhNDEzMDBmMmNkYWU5MjVkZS4u
YjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVm
PEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCiAg
ICAgfldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKTsKIApAQCAtMjY1LDcgKzI2NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQo
Q2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
LCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7
CiAKICAgICBib29sIGlzV2ViR0wyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oCmluZGV4IGFlNjk1
NDJlZjc2ZjBkZWUyNGI3YTMyOWRmYzIxYTRmOWE4ZTk2OWIuLjRjNTg0NjU3YjZjZWViYjIxMTNi
NTVhYThkMGM3MDc4YTFhMzMxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQWN0aXZlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQWN0aXZlSW5mby5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCmluZGV4IDFlY2MzY2E0ZmZjZjFlN2VhZjFlZTllZGQzMmVkYjkyMWUyZTMwM2IuLjdi
NTc3YTQ5NDMzMmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViR0xCdWZm
ZXI6On5XZWJHTEJ1ZmZlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdM
QnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lk
IFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAg
ICAgY29udGV4dDNkLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1YTgwZjkzYmZkMWQ0NDhkNTJmMDhhNjYwZmY2
NmJjOWFjN2Q2ZDIuLjFlNmJhNzg2MzlmZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjcsNyArNjcsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCmluZGV4IDNhODIwZGViODViNDU3YjQwMDI0MzYw
ZjcwNGEwYzRhOTljMDQ5NGYuLmQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91
cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSAiV2Vi
R0xTaGFyZWRPYmplY3QuaCIKIApAQCAtNDksNyArNDksNyBAQCBib29sIFdlYkdMQ29udGV4dEdy
b3VwOjpoYXNBQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NvbnRleHRzLmlzRW1wdHko
KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIFdlYkdMQ29udGV4dEdyb3VwOjpnZXRB
R3JhcGhpY3NDb250ZXh0R0woKQorR3JhcGhpY3NDb250ZXh0R0wmIFdlYkdMQ29udGV4dEdyb3Vw
OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKQogewogICAgIEFTU0VSVCghbV9jb250ZXh0cy5pc0Vt
cHR5KCkpOwogICAgIHJldHVybiAqKCptX2NvbnRleHRzLmJlZ2luKCkpLT5ncmFwaGljc0NvbnRl
eHRHTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3Vw
LmgKaW5kZXggNTIxMjMwZGU1YThkOGQyNTFhNTcxZDZiN2FjNDM5NDlhNWE2NGZkZS4uODU1Y2U3
MjM5ODZmZTA3NzU5OGYyNDY4MWFlODA4NmM4MWVkZmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYpOwogCiAgICAgYm9v
bCBoYXNBQ29udGV4dCgpIGNvbnN0OwotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBnZXRB
R3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCYgZ2V0QUdyYXBoaWNz
Q29udGV4dEdMKCk7CiAgICAgTG9jayYgb2JqZWN0R3JhcGhMb2NrRm9yQUNvbnRleHQoKTsKIAog
ICAgIHZvaWQgbG9zZUNvbnRleHRHcm91cChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0
Q29udGV4dE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAKaW5kZXggYTliODQzMDU3YTk2NWY5Nzk3MDU0NWE4N2E3NGZhNzc5ZjJh
YzkyMC4uN2M5MTlmMmI2NjU2YjY3YjE2Y2E2MzQwYjBiMmE0YjY0NWQwNDYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFdURjo6TG9jayYgV2ViR0xDb250ZXh0T2JqZWN0OjpvYmplY3RHcmFwaExv
Y2tGb3JDb250ZXh0KCkKICAgICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIFdlYkdMQ29udGV4dE9iamVjdDo6Z2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dEdMKiBXZWJHTENvbnRleHRP
YmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGV4dCA/IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKSA6IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4
MzVkODBhYTdhOTcxZjY5MzE4ZmNkZWMxNDA3NGVlMGUyNTNjMzUuLmRiZmRkNmJmYzBlZjQ0ZWI4
ODJlYjljNTliMDA4ZDI5ODExMjY0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIC8vIFdlYkdM
Q29udGV4dE9iamVjdCB0aGUgYmFzZSBjbGFzcyBmb3Igb2JqZWN0cyB0aGF0IGFyZSBvd25lZCBi
eSBhIHNwZWNpZmljCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG1fY29udGV4dDsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0R0wq
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCBhZjJlZDkwOTZjMWJl
ZWY4YjAxNjIwNWYyNTA5ZTU5YTExYzU0Y2ZmLi5hNjkxNTMyM2E4NDk0NGU1OWJjMTcyZDNmNWI5
NDMzNzI2ODE0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2Vi
R0xEZXB0aFRleHR1cmVOYW1lOwogfQogCi1ib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQpCitib29sIFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5z
aW9uc0dMJiBleHRlbnNpb25zID0gY29udGV4dC5nZXRFeHRlbnNpb25zKCk7CiAgICAgcmV0dXJu
IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCmluZGV4IDYxNjEwMGE3YWIw
OGIxOGIxYmQ5YTlhYzgzNmJjZTk3MzJkYjgxMjQuLmVlMjBjMmViOTdiYmQwNmZkMDVmODJkZjI5
MTlkNmM5NzQzYjlmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
R0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMRGVwdGhUZXh0dXJlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggYjVjNDExMjYxYTFkMWQwNTg3ZTM3YzM2NjA4MmNlYmM0ZTBjYzljOS4uOWNiMGY4
NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGJ1ZmZlcnMpCiAvLyBzdGF0aWMKIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVz
V2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViZ2xDb250ZXh0
KQogewotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KICAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggZmUxYTg3ZTViZTJiMGQxOTM4YmRkNDY3
YTEzZjdhZmYyNGU3NDI4ZS4uMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKQEAgLTM3LDYgKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCIKKyNlbmRpZgogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpA
QCAtNTcsOSArNjAsOSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBv
bkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwotICAgICAg
ICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVy
cmlkZTsKICAgICAgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFj
dExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBXZWJHTFJl
bmRlcmJ1ZmZlckF0dGFjaG1lbnQoKSB7IH07CkBAIC0xMjAsMTggKzEyMywxOCBAQCBuYW1lc3Bh
Y2UgewogICAgICAgICAgICAgbV9yZW5kZXJidWZmZXItPnNldEluaXRpYWxpemVkKCk7CiAgICAg
fQogCi0gICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICBtX3JlbmRlcmJ1ZmZlci0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQp
OwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjphdHRhY2go
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6YXR0
YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCA9IG9i
amVjdE9yWmVybyhtX3JlbmRlcmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGNvbnRleHQtPmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkJVRkZFUiwgb2JqZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMUmVuZGVyYnVm
ZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVu
ZGVyYnVmZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAjaWYgIVVTRShB
TkdMRSkKICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCkgewpAQCAtMTYzLDkgKzE2Niw5IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBib29sIGlzSW5p
dGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdm9pZCBzZXRJbml0aWFsaXplZCgp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGF0dGFj
aChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRl
eHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXRvciYpIG92
ZXJyaWRlOwogCiAgICAgICAgIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQoKSB7IH07CkBAIC0yMzIs
MTIgKzIzNSwxMiBAQCBuYW1lc3BhY2UgewogICAgICAgICAvLyBUZXh0dXJlcyBhcmUgYXNzdW1l
ZCB0byBiZSBpbml0aWFsaXplZC4KICAgICB9CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFj
aG1lbnQ6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50
OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgbV90ZXh0dXJlLT5vbkRldGFjaGVkKGxvY2tl
ciwgY29udGV4dCk7CiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50Ojph
dHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OmF0
dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QgPSBv
YmplY3RPclplcm8obV90ZXh0dXJlLmdldCgpKTsKICAgICAgICAgaWYgKG1fdGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzNEIHx8IG1fdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFXzJEX0FSUkFZKQpAQCAtMjQ2LDcgKzI0OSw3IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIG1fdGFyZ2V0LCBvYmplY3QsIG1fbGV2ZWwpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xU
ZXh0dXJlQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdM
VGV4dHVyZUF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCiAgICAgewogI2lmIFVTRShBTkdM
RSkKICAgICAgICAgLy8gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGF0dGFjaG1lbnQgaXMg
dmFsaWQgaW4gRVMzLgpAQCAtNTQ3LDcgKzU1MCw3IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZm
ZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKIH0KIAotYm9vbCBXZWJHTEZy
YW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBj
b25zdCBjaGFyKiogcmVhc29uKQorYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFw
aGljc0NvbnRleHRHTCogY29udGV4dDNkLCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlm
IChjaGVja1N0YXR1cyhyZWFzb24pICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYzLDcgKzU2Niw3IEBAIGJvb2wg
V2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGF0
dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+aXNWYWxpZCgpOwogfQogCi12b2lkIFdlYkdMRnJhbWVi
dWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3Qp
Cit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9i
amVjdCBvYmplY3QpCiB7CiAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogbV9hdHRhY2htZW50
cy52YWx1ZXMoKSkKICAgICAgICAgYXR0YWNobWVudC0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRl
eHQzZCk7CkBAIC01NzIsNyArNTc1LDcgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ28KIH0KIAog
I2lmICFVU0UoQU5HTEUpCi1ib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2ht
ZW50cyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZzNkLCBjb25zdCBjaGFyKiogcmVhc29uKQor
Ym9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250
ZXh0R0wqIGczZCwgY29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoIWNvbnRleHQoKSkg
ewogICAgICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJlIGNh
bGxpbmcgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaAppbmRleCBmODhiMDZhNWU0YzY0NTI1YzJiMjYyZmQ5YjhlMzkyYTk5MDVkNzIzLi5hMTQw
ZGJkM2JlMDI5ZWJmODJiMDljYjk5MWEyYWVhZjE3NjhkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC02Miw5ICs2Miw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5pdGlhbGl6ZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0
YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSA9IDA7
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm4gZmFsc2UgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGU7IG90aGVyd2lzZSBpbml0
aWFsaXplCiAgICAgLy8gdGhlIGJ1ZmZlcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5pdGlhbGl6
ZWQgYW5kCiAgICAgLy8gbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzIGlzIHRydWUuCi0gICAg
Ym9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGNvbnN0IGNoYXIqKiByZWFz
b24pOworICAgIGJvb2wgb25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiog
cmVhc29uKTsKIAogICAgIC8vIFNvZnR3YXJlIHZlcnNpb24gb2YgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdoZW4KICAgICAvLyBGUkFNRUJVRkZFUl9DT01QTEVURSBp
cyByZXR1cm5lZCwgaXQgaXMgc3RpbGwgcG9zc2libGUgZm9yCkBAIC0xMTksMTMgKzExOSwxMyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IAogICAgIFdlYkdMQXR0YWNobWVudCogZ2V0QXR0YWNobWVudChHQ0dMZW51bSkgY29uc3Q7CiAK
ICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIFJldHVybiBmYWxzZSBpZiBmcmFtZWJ1ZmZlciBpcyBp
bmNvbXBsZXRlLgotICAgIGJvb2wgaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CisgICAgYm9vbCBpbml0aWFsaXplQXR0
YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKICNlbmRp
ZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGN1cnJlbnRseSBib3VuZCB0
byB0aGUgZ2l2ZW4gdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwCmluZGV4IGFiNWMxNGY1NmIxOTI4YjE1ZWVkN2Y2ZjU2MTMwNGQyMDdkYWE4MzAuLjE5
MTc4NmFiOTY4YmM3MDQ3NWMzY2ZjNDc0NGM3ZmQ5NjBlNzE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3RvcigpCiAgICAgfQogfQogCi12b2lkIFdlYkdMT2JqZWN0Ojpk
ZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVjdChjb25z
dCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkKQog
ewogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAgICAgaWYgKCFtX29iamVjdCkKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBXZWJHTE9iamVjdDo6ZGV0YWNoKCkKICAgICBtX2F0dGFjaG1lbnRDb3VudCA9
IDA7IC8vIE1ha2Ugc3VyZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVsZXRlZC4KIH0KIAotdm9pZCBX
ZWJHTE9iamVjdDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTE9iamVjdDo6b25EZXRh
Y2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29u
dGV4dDNkKQogewogICAgIGlmIChtX2F0dGFjaG1lbnRDb3VudCkKICAgICAgICAgLS1tX2F0dGFj
aG1lbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4
IGYwYWEyMTM3YTNlYWU1Zjk3ZjhhZDliYjkxZDkwMzNlMDA5ZjE2YTEuLmNhZDQ3OWNlMjc3MTBj
ODk0MTNlZmQ5ZGFkYzZjYmMzODNkZDJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBMb2NrOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U7CiAKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IEFic3RyYWN0TG9ja2VyIGFyZ3VtZW50IGVuZm9yY2VzIGF0IGNvbXBpbGUgdGltZSB0aGF0IHRo
ZSBvYmplY3RHcmFwaExvY2sKICAgICAvLyBpcyBoZWxkLiBUaGlzIGlzbid0IG5lY2Vzc2FyeSBm
b3IgYWxsIG9iamVjdCB0eXBlcywgYnV0IGVub3VnaCBvZiB0aGVtIHRoYXQKICAgICAvLyBpdCdz
IGRvbmUgZm9yIGFsbCBvZiB0aGVtLgotICAgIHZvaWQgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCop
OwogCiAgICAgdm9pZCBvbkF0dGFjaGVkKCkgeyArK21fYXR0YWNobWVudENvdW50OyB9Ci0gICAg
dm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCopOworICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIC8vIFRoaXMgaW5kaWNhdGVzIHdoZXRo
ZXIgdGhlIGNsaWVudCBzaWRlIGlzc3VlIGEgZGVsZXRlIGNhbGwgYWxyZWFkeSwgbm90CiAgICAg
Ly8gd2hldGhlciB0aGUgT3BlbkdMIHJlc291cmNlIGlzIGRlbGV0ZWQuCkBAIC04MiwxMyArODIs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRGVzdHJ1Y3RvcigpOwogCiAgICAgLy8gZGVs
ZXRlT2JqZWN0SW1wbCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSB0byBkZWxldGUgdGhlIE9w
ZW5HTCByZXNvdXJjZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBX
VEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsK
IAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fb2JqZWN0IHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5kZXggNTA2NjBjNzVjNTBh
ZjEzYzU5NDUxMjE1OGRkNWNiYTMxMjM3ZmRkNC4uNmQ1YzExZDQwZGE4MTE1NTlhNmU5YTk1MDhl
Njc1MTc2YTBhOWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBX
ZWJHTFByb2dyYW06Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJikKQEAgLTk1LDcgKzk5LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgV2ViR0xQcm9n
cmFtOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQordm9p
ZCBXZWJHTFByb2dyYW06OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmop
CiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVQcm9ncmFtKG9iaik7CiAgICAgaWYgKG1fdmVydGV4
U2hhZGVyKSB7CkBAIC0yMDgsNyArMjEyLDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXQKICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobV9mcmFnbWVudFNoYWRlci5nZXQoKSk7CiB9CiAKLXZv
aWQgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0
cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3Rp
dmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIApAQCAtMjE3LDcgKzIyMSwxMSBAQCB2b2lkIFdl
YkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZAogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLnJlc2l6ZShzdGF0
aWNfY2FzdDxzaXplX3Q+KG51bUF0dHJpYnMpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUF0dHJpYnM7ICsraSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBp
bmZvOwotICAgICAgICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYkltcGwob2JqZWN0KCksIGks
IGluZm8pOworI2lmIFVTRShBTkdMRSkKKyAgICAgICAgY29udGV4dDNkLT5nZXRBY3RpdmVBdHRy
aWIob2JqZWN0KCksIGksIGluZm8pOworI2Vsc2UKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+KGNvbnRleHQzZCktPmdldEFjdGl2ZUF0dHJpYkltcGwob2JqZWN0
KCksIGksIGluZm8pOworI2VuZGlmCiAgICAgICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zW2ld
ID0gY29udGV4dDNkLT5nZXRBdHRyaWJMb2NhdGlvbihvYmplY3QoKSwgaW5mby5uYW1lKTsKICAg
ICB9CiB9CkBAIC0yMzAsNyArMjM4LDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lm
TmVlZGVkKCkKICAgICBpZiAoIW9iamVjdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgpOwor
ICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgR0NHTGludCBsaW5rU3Rh
dHVzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKaW5kZXgg
OGY3MGQwZDJiMGU0NzU1ZjUyZjRlYTlhM2JiZGM0OWQ4NDM4ODMzNy4uNWEzNTBjYjEzYWY4MjY5
NDE1MWM2NjAwOWIwYTJjNjcyNWJkZWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
ZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJM
b2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKKyAgICB2b2lkIGNhY2hlQWN0aXZl
QXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKik7CiAgICAgdm9pZCBjYWNoZUluZm9J
Zk5lZWRlZCgpOwogCiAgICAgVmVjdG9yPEdDR0xpbnQ+IG1fYWN0aXZlQXR0cmliTG9jYXRpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcAppbmRleCAxNjYyMGJk
OGQ4NTgyNGI5NWU1NzM4ZDU2MDI1ZjExYTljYmVmODYwLi42MTI1ZGNiZjRhODQ4Yjk5OTdlN2Rj
YmRlYmIzZGIyZGVjNWYwNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1
ZXJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4
dEdMKCktPmNyZWF0ZVF1ZXJ5KCkpOwogfQogCi12b2lkIFdlYkdMUXVlcnk6OmRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250
ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRl
UXVlcnkob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApp
bmRleCA1YTZjMDM2MWE1OTgzYjcyZTRiNDZmOGU4MjQ5OGNlYzYxOWRlMTY1Li45OTJmN2M4Nzhl
ODgwODhlNDNhZGMxN2RmOTIxNmQ5NTJhZjE5Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xRdWVyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2
b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBtX2lzUmVzdWx0
QXZhaWxhYmxlIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAppbmRleCBk
NDBkNGUwYjg1NjFhZjU1YmVmYWU3ZTUxMmYwMDYxNDI1MTA5N2Y0Li5mZGU5OTk4ZTBmYTE3ODlj
NjBkNzhmOGI0YzFlN2VmZDQ2N2ZiMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFdlYkdMUmVuZGVy
YnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgp
CiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVSZW5kZXJidWZm
ZXIoKSk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQ
bGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xSZW5kZXJidWZmZXI6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4
dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVJl
bmRlcmJ1ZmZlcihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggNGE3ZmE2YzlhMjM2MTJlNDFkMjM1ZGVkYTRkY2MxMGM0
MmNlYzA3MS4uMTI0YjQzOGNjNTljZmRlY2YzY2M5NGRmNTJiMTY4M2IxMGNmNDlkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDM1NTY2ZWI4ZGE1N2U3ZTM2MmI4NDBmZTg2NGYz
NTkxNzY2ZDJiMDQuLmQyZmFjMjAzNjI0OTk1ODVlMGQ1MTU1NmNjNWNhNGUzYWFjMzNkYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtODksNyArODksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdD
b250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJgogICAgIHJl
dHVybiByZW5kZXJpbmdDb250ZXh0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52
YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZh
cywgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoY2FudmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKSk7CiAgICAgLy8gVGhpcyBp
cyB2aXJ0dWFsIGFuZCBjYW4ndCBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgpAQCAtMTA1
LDcgKzEwNSw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KENhbnZhc0Jhc2UmIGNhbnZhcywgR3JhcGhpY3NDb250ZXh0CiB7CiB9CiAKLVdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRl
cykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5NDVkNGJiMTA1MTNkMmRi
NGY1YTQzZTk0OTE3YTY4MjFkYjI2MmI3Li5hNzEwYTBmMWU2Mjk4MmViMjBjMDc5NTg5ZmU2NTQy
ZmVlZWNmZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQgZmluYWwgOiBwdWJsaWMgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHQpOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2Fu
dmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVh
dGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzKTsKIAogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4m
JiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOWE4NzY5M2RhMTc5OThmN2E2YjI4MmRhYmZkMWQ3
MWZlYzdiNTY1MS4uNmMzNzI5OWQ0Mzc3YWEwM2MyOTUxYzI0MDUwNTg5ZThiM2MzMGZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
ICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02MTcsNyArNjE4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZGlkQXBwbHkgeyBmYWxzZSB9OwogfTsKIAotc3RhdGljIGJv
b2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4mIGNvbnRleHQpCitzdGF0aWMgYm9vbCBpc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQo
Y29uc3QgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiYgY29udGV4dCkKIHsKICAgICByZXR1cm4g
Y29udGV4dC0+cG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9uKCkgPT0gV2ViR0xQb3dlclBy
ZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKIH0KQEAgLTc1Myw3ICs3NTQsNyBAQCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2Um
IGNhbnZhcywgV2ViR0xDbwogICAgICAgICBtX2NoZWNrRm9yQ29udGV4dExvc3NIYW5kbGluZ1Rp
bWVyLnN0YXJ0T25lU2hvdChjaGVja0NvbnRleHRMb3NzSGFuZGxpbmdEZWxheSk7CiB9CiAKLVdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFz
QmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFw
aGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCiAgICAgOiBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQogICAgICwg
bV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX3Jlc3RvcmVUaW1lcihjYW52YXMu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6Om1heWJlUmVzdG9yZUNvbnRleHQpCkBAIC0xNzg2LDcgKzE3ODcsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZQogICAgIGlmICghdmFsaWRhdGVOUE9UVGV4dHVyZUxldmVsKHdpZHRoLCBo
ZWlnaHQsIGxldmVsLCAiY29tcHJlc3NlZFRleEltYWdlMkQiKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgbV9j
b250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCo+KG1fY29udGV4dC5nZXQoKSktPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICBib3JkZXIsIGRhdGEuYnl0
ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOwogICAgIGlmIChtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKSB7CiAgICAgICAgIC8vIFRoZSBjb21wcmVzc2Vk
VGV4SW1hZ2UyRCBmdW5jdGlvbiBmYWlsZWQuIFRlbGwgdGhlIFdlYkdMVGV4dHVyZSBpdCBkb2Vz
bid0IGhhdmUgdGhlIGRhdGEgZm9yIHRoaXMgbGV2ZWwuCkBAIC0xODI5LDcgKzE4MzAsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludAogICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
RGltZW5zaW9ucygiY29tcHJlc3NlZFRleFN1YkltYWdlMkQiLCB0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRleC5nZXQoKSkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dEdMKCktPmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7CisgICAgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihncmFwaGljc0NvbnRleHRHTCgpKS0+Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsK
ICAgICB0ZXgtPnNldENvbXByZXNzZWQoKTsKICNlbmRpZgogfQpAQCAtMzIwNSw3ICszMjA2LDcg
QEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cihXZWJHTFByb2dyYW0mIHByb2dyYW0sIEcKICNpZiBVU0UoQU5HTEUpCiAgICAgICAgIG1fY29u
dGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwogI2Vs
c2UKLSAgICAgICAgbV9jb250ZXh0LT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJv
Z3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Z2V0Tm9uQnVpbHRJbkFjdGl2
ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOwogI2VuZGlmIC8v
IFVTRShBTkdMRSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGRlZmF1bHQ6CkBAIC0zNTQ5
LDkgKzM1NTAsMTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICBzd2l0Y2ggKGJhc2VU
eXBlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ6IHsKICAgICAgICAgR0NH
TGZsb2F0IHZhbHVlWzE2XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9p
c1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5nZXRuVW5pZm9ybWZ2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCAxNiAq
IHNpemVvZihHQ0dMZmxvYXQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24s
IHZhbHVlKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlWzBdOwpAQCAtMzU1OSw5ICszNTYyLDExIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAg
ICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OklOVDogewogICAgICAgICBHQ0dMaW50
IHZhbHVlWzRdID0gezB9OworI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0
bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmdldG5Vbmlmb3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2Yo
R0NHTGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwog
ICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CkBA
IC0zNTc2LDkgKzM1ODEsMTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Qk9PTDogewogICAgICAgICBHQ0dMaW50IHZhbHVlWzRd
ID0gezB9OworI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1
cHBvcnRlZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlm
b3JtaXZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0NHTGludCks
IHZhbHVlKTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBp
ZiAobGVuZ3RoID4gMSkgewogICAgICAgICAgICAgVmVjdG9yPGJvb2w+IHZlY3RvcihsZW5ndGgp
OwpAQCAtMzYxOSw3ICszNjI2LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0wKICNpZiBVU0Uo
QU5HTEUpCiAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgR3Jh
cGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKICNlbHNl
Ci0gICAgbV9jb250ZXh0LT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5v
YmplY3QoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZv
cm1zKTsKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4
dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgp
LCBHcmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwog
I2VuZGlmCiAgICAgZm9yIChHQ0dMaW50IGkgPSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkrKykg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBpbmZvOwpAQCAtMzg5Myw4
ICszOTAwLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdp
dGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoV2UKICAgICB9CiAKICNpZiAhVVNFKEFO
R0xFKQotICAgIGlmICghbV9jb250ZXh0LT5wcmVjaXNpb25zTWF0Y2gob2JqZWN0T3JaZXJvKHZl
cnRleFNoYWRlci5nZXQoKSksIG9iamVjdE9yWmVybyhmcmFnbWVudFNoYWRlci5nZXQoKSkpCi0g
ICAgICAgIHx8ICFtX2NvbnRleHQtPmNoZWNrVmFyeWluZ3NQYWNraW5nKG9iamVjdE9yWmVybyh2
ZXJ0ZXhTaGFkZXIuZ2V0KCkpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0KCkpKSkg
eworICAgIGlmICghc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRl
eHQuZ2V0KCkpLT5wcmVjaXNpb25zTWF0Y2gob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlci5nZXQo
KSksIG9iamVjdE9yWmVybyhmcmFnbWVudFNoYWRlci5nZXQoKSkpCisgICAgICAgIHx8ICFzdGF0
aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmNoZWNr
VmFyeWluZ3NQYWNraW5nKG9iamVjdE9yWmVybyh2ZXJ0ZXhTaGFkZXIuZ2V0KCkpLCBvYmplY3RP
clplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0KCkpKSkgewogICAgICAgICBwcm9ncmFtLT5zZXRMaW5r
U3RhdHVzKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQyNTcsNyAr
NDI2NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAgICAgfQogCiAjZGVmaW5lIElOVEVS
TkFMX0ZPUk1BVF9DSEVDSyh0eXBlTWFjcm8sIHBpeGVsVHlwZU1hY3JvKSBcCi0gICAgaWYgKHR5
cGUgIT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlw
ZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAorICAgIGlmICh0eXBlICE9IEdyYXBoaWNz
Q29udGV4dEdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlw
ZU1hY3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6
OklOVkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5h
bCBmb3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwKQEAgLTQyNjgsNyArNDI3
NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAgICAgQ0hFQ0tfQ09NUE9ORU5UX0NPVU5U
CiAKICNkZWZpbmUgSU5URVJOQUxfRk9STUFUX0lOVEVHRVJfQ0hFQ0sodHlwZU1hY3JvLCBwaXhl
bFR5cGVNYWNybykgXAotICAgIGlmICh0eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0
eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwK
KyAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHRHTDo6dHlwZU1hY3JvIHx8IHBpeGVscy5n
ZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5cGVNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwgInR5
cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJuYWwgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBc
CiAgICAgfSBcCkBAIC00Mjc4LDEzICs0Mjg1LDEzIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
CiAgICAgfSBcCiAgICAgQ0hFQ0tfQ09NUE9ORU5UX0NPVU5UCiAKLSNkZWZpbmUgQ0FTRV9QQUNL
RURfSU5URVJOQUxfRk9STUFUX0NIRUNLKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3Jv
LCB0eXBlME1hY3JvLCBwaXhlbFR5cGUwTWFjcm8sIHR5cGUxTWFjcm8sIHBpeGVsVHlwZTFNYWNy
bykgY2FzZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAot
ICAgIGlmICghKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGUwTWFjcm8gJiYg
cGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6OnBpeGVsVHlwZTBNYWNybykgXAotICAgICAgICAmJiAh
KHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGUxTWFjcm8gJiYgcGl4ZWxzLmdl
dFR5cGUoKSA9PSBKU0M6OnBpeGVsVHlwZTFNYWNybykpIHsgXAorI2RlZmluZSBDQVNFX1BBQ0tF
RF9JTlRFUk5BTF9GT1JNQVRfQ0hFQ0soaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8s
IHR5cGUwTWFjcm8sIHBpeGVsVHlwZTBNYWNybywgdHlwZTFNYWNybywgcGl4ZWxUeXBlMU1hY3Jv
KSBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCisgICAgaWYg
KCEodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6dHlwZTBNYWNybyAmJiBwaXhlbHMuZ2V0VHlw
ZSgpID09IEpTQzo6cGl4ZWxUeXBlME1hY3JvKSBcCisgICAgICAgICYmICEodHlwZSA9PSBHcmFw
aGljc0NvbnRleHRHTDo6dHlwZTFNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09IEpTQzo6cGl4
ZWxUeXBlMU1hY3JvKSkgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2gg
aW50ZXJuYWwgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCi0gICAgaWYg
KGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Zm9ybWF0TWFjcm8pIHsgXAorICAg
IGlmIChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OmZvcm1hdE1hY3JvKSB7IFwKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJl
YWRQaXhlbHMiLCAiSW52YWxpZCBmb3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9
IFwKQEAgLTQ2OTksNyArNDcwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKFRleEltYWdlRnVuY3RpCiAgICAgICAg
ICAgICAgICAgLy8gVGhlIFVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYgdHlwZSBwYWNrL3Vu
cGFjayBpc24ndCBpbXBsZW1lbnRlZC4KICAgICAgICAgICAgICAgICB0eXBlID0gR3JhcGhpY3ND
b250ZXh0R0w6OkZMT0FUOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFtX2NvbnRl
eHQtPmV4dHJhY3RJbWFnZURhdGEocGl4ZWxzLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6RGF0YUZvcm1hdDo6UkdCQTgsIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5w
YWNrSW1hZ2VIZWlnaHQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVt
dWx0aXBseUFscGhhLCBkYXRhKSkgeworICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJh
Y3RJbWFnZURhdGEocGl4ZWxzLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6
UkdCQTgsIGFkanVzdGVkU291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQs
IGZvcm1hdCwgdHlwZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBk
YXRhKSkgewogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX1ZBTFVFLCAidGV4SW1hZ2UyRCIsICJiYWQgaW1hZ2UgZGF0YSIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CkBAIC01MDEzLDcgKzUwMjAs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogICAgIEFTU0VSVCh0ZXgpOwogICAgIEFTU0VS
VCh2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwod2lkdGgsIGhlaWdodCwgbGV2ZWwsICJ0ZXhJbWFn
ZTJEIikpOwogICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT50ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQorICAgICAg
ICBpZiAoIXN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0Lmdl
dCgpKS0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQodmFs
aWRhdGVTZXR0YWJsZVRleEludGVybmFsRm9ybWF0KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3Jt
YXQpKTsKQEAgLTU0ODUsOCArNTQ5Miw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvCiAgICAg
VU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKICNlbHNlCiAgICAgLy8gVmVyaWZ5IHRoYXQg
dGhlIGNvbWJpbmF0aW9uIG9mIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIGFuZCB0eXBlIGlzIHN1
cHBvcnRlZC4KLSNkZWZpbmUgSU5URVJOQUxfRk9STUFUX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNy
bywgZm9ybWF0TWFjcm8sIHR5cGUwLCB0eXBlMSwgdHlwZTIsIHR5cGUzLCB0eXBlNCkgY2FzZSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAotICAgIGlmIChm
b3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcm1hdE1hY3JvKSB7IFwKKyNkZWZp
bmUgSU5URVJOQUxfRk9STUFUX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8s
IHR5cGUwLCB0eXBlMSwgdHlwZTIsIHR5cGUzLCB0eXBlNCkgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAorICAgIGlmIChmb3JtYXQgIT0gR3JhcGhpY3NDb250
ZXh0R0w6OmZvcm1hdE1hY3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIGZv
cm1hdCBmb3IgaW50ZXJuYWxmb3JtYXQiKTsgXAogICAgICAgICByZXR1cm4gZmFsc2U7IFwKICAg
ICB9IFwKQEAgLTU2MjUsNyArNTYzMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAg
R0NHTGludCBjbGlwcGVkWCwgY2xpcHBlZFk7CiAgICAgR0NHTHNpemVpIGNsaXBwZWRXaWR0aCwg
Y2xpcHBlZEhlaWdodDsKICAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJv
dW5kUmVhZEZyYW1lYnVmZmVyV2lkdGgoKSwgZ2V0Qm91bmRSZWFkRnJhbWVidWZmZXJIZWlnaHQo
KSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkg
ewotICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT50ZXhJbWFn
ZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsCiAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0JZVEUsIG1fdW5wYWNrQWxpZ25tZW50KTsKICAgICAgICAgaWYgKGNsaXBw
ZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhlaWdodCA+IDApIHsKICAgICAgICAgICAgIG1fY29udGV4
dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgY2xpcHBlZFggLSB4LCBjbGlwcGVk
WSAtIHksCkBAIC02NDA2LDggKzY0MTMsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZUZhbGxiYWNrQmxhY2tUZXh0dXJlczF4MSgpCiAKIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aXNUZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25W
YWxpZChHQ0dMZW51bSB0ZXhJbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gY29sb3JCdWZmZXJGb3Jt
YXQpCiB7Ci0gICAgYXV0byBuZWVkID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldENoYW5u
ZWxCaXRzQnlGb3JtYXQodGV4SW50ZXJuYWxGb3JtYXQpOwotICAgIGF1dG8gaGF2ZSA9IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KGNvbG9yQnVmZmVyRm9y
bWF0KTsKKyAgICBhdXRvIG5lZWQgPSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNC
eUZvcm1hdCh0ZXhJbnRlcm5hbEZvcm1hdCk7CisgICAgYXV0byBoYXZlID0gR3JhcGhpY3NDb250
ZXh0R0w6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQoY29sb3JCdWZmZXJGb3JtYXQpOwogICAgIHJl
dHVybiAobmVlZCAmIGhhdmUpID09IG5lZWQ7CiB9CiAKQEAgLTc0ODQsNyArNzQ5MSw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAg
aWYgKCFob3N0V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSht
X2F0dHJpYnV0ZXMsIGhvc3RXaW5kb3cpKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShtX2F0dHJpYnV0ZXMsIGhv
c3RXaW5kb3cpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgaWYgKG1fY29udGV4dExv
c3RNb2RlID09IFJlYWxMb3N0Q29udGV4dCkKICAgICAgICAgICAgIG1fcmVzdG9yZVRpbWVyLnN0
YXJ0T25lU2hvdChzZWNvbmRzQmV0d2VlblJlc3RvcmVBdHRlbXB0cyk7CkBAIC03NzYwLDcgKzc3
NjcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgYwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5B
QkxFKFdFQkdMMikKICAgICBpZiAoaXNXZWJHTDIoKSkKLSAgICAgICAgbV9jb250ZXh0LT5wcmlt
aXRpdmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5wcmltaXRp
dmVSZXN0YXJ0SW5kZXgoZ2V0UmVzdGFydEluZGV4KHR5cGUpKTsKICNlbmRpZgogCiAgICAgbV9j
b250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDR0xpbnRwdHI+KG9mZnNldCksIHByaW1jb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMjkx
YjlhZWRmMzM4NDE2ZWJhZWRiMzg5YTc5NWEyOWZhOGFkZGJlYi4uYTcxZDAzNmFhMGRlYTUyYjQ1
NzkwOWZiZmZkYzNhZGY4MGY1MTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VzcGVuZGFi
bGVUaW1lci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xMjQsNyArMTI0LDcgQEAgdXNpbmcg
V2ViR0xDYW52YXMgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwgUmVm
UHRyPE9mZnNjcmVlbkNhbnYKIHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0
cjxIVE1MQ2FudmFzRWxlbWVudD4+OwogI2VuZGlmCiAKLWNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkNsaWVudCwgcHVibGlj
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZSBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIgeworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdD
b250ZXh0LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IGNyZWF0
ZShDYW52YXNCYXNlJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyYsIGNvbnN0IFN0cmluZyYpOwpA
QCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc2VDb250ZXh0SW1wbChMb3N0
Q29udGV4dE1vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hh
bmdlZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdyYXBoaWNzQ29udGV4dEdM
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEdyb3VwLmdldCgpOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOwogCkBAIC00MjcsNyArNDI3LDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwgV2ViR0xDb250
ZXh0QXR0cmlidXRlcyk7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNl
JiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVz
KTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhp
Y3NDb250ZXh0R0w+JiYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwogCiAgICAgZnJpZW5kIGNs
YXNzIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRHJh
d0J1ZmZlcnM7CkBAIC01MjcsNyArNTI3LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbmVlZHNQ
cmVwYXJhdGlvbkZvckRpc3BsYXkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBt
X2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkdMQ29udGV4dEdyb3VwPiBtX2NvbnRleHRHcm91cDsK
ICAgICBMb2NrIG1fb2JqZWN0R3JhcGhMb2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTYW1wbGVyLmNwcAppbmRleCBiNzIwNDI1ODIzZTM2MzU2ZWEyZjcwNDU3MDhjZTUx
NDE1YWNiMDc1Li5iMGI3ZGRkOWM0M2NmMjAwNTk1NDhmMDQ4ZDM5YzAzMTQ0ODgwM2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgV2ViR0xTYW1wbGVyOjpXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlU2Ft
cGxlcigpKTsKIH0KIAotdm9pZCBXZWJHTFNhbXBsZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQbGF0
Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xTYW1wbGVyOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxh
dGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVTYW1wbGVyKG9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCmluZGV4
IDliMTE4M2U1ZDczZGUyNjA1ZTcxZDQ5ODcwYTY4NDA5MGMyMTE1ZTAuLjRlMTBkNzcxNzM1MDEw
OWM4OGExOTljNTFlN2YyMWFkODA1YTgyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2FtcGxlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwotICAg
IHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4
dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggYzcw
ZDBhNDZkNmM5YjhlNGZmZDgyMDU1YTMxMjJkYjBiZDE2MTE0NC4uN2YyMjE5YjRiMjU3N2U4NzU2
N2U2Njg0MTQ2NzlmMTQxYzQxZDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhZGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJHTFNoYWRlcjo6fldlYkdMU2hhZGVy
KCkKICAgICBydW5EZXN0cnVjdG9yKCk7CiB9CiAKLXZvaWQgV2ViR0xTaGFkZXI6OmRlbGV0ZU9i
amVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Y29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xTaGFkZXI6OmRl
bGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRl
bGV0ZVNoYWRlcihvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hh
ZGVyLmgKaW5kZXggN2I0NzMzYWJjZTdlYzRhZWM0N2E0ZmQ1MDI5ZjE0MjA2YzhmZjg3OS4uOTM0
YjNkYzE4YWYzNDdjM2Q1MGZhZTRiMDY1Yzk4MjlmMGJkOTliNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdDR0xlbnVt
KTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKICAgICBHQ0dMZW51bSBt
X3R5cGU7CiAgICAgU3RyaW5nIG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgKaW5kZXggN2FiNDIyMGFl
MTBkMTc3ZDUxOGUyODExYThmMWFkMzA3ODdkYmUzOS4uNTk3ZDNmMDBiNGMzZjYzOTQyZTFkMzZj
ZmEwZTRkMTFiZTIyMTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCmluZGV4IDcxODI2YTRmNTMwNzZhZmI4MWQxZGZmN2Q2
ZmIzOTBkMGVhYjAzYjMuLjkzNmM5ODFjOTkyOTBkOGU3Y2VmOThiMTNiNTY5M2NiZWIyMzc5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBXZWJHTFNoYXJlZE9iamVjdDo6aGFzR3JvdXBPckNv
bnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHRHcm91cCAmJiBtX2NvbnRleHRHcm91
cC0+aGFzQUNvbnRleHQoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIFdlYkdMU2hh
cmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAorR3JhcGhpY3NDb250ZXh0
R0wqIFdlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NvbnRleHRHcm91cCA/ICZtX2NvbnRleHRHcm91cC0+Z2V0QUdyYXBoaWNz
Q29udGV4dEdMKCkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhcmVkT2JqZWN0LmgKaW5kZXggYmRjZWM2ZTAyZTRhZjZmMjI3ODNhM2U2MTEzOWMy
MDQ0MTYwYTJmNS4uNWQxM2FmYTM4NDZhYTIxNTMwYzBhYmQ1MzkwYWExZTc5OGU5ZTFkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIExvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNz
IFdlYkdMQ29udGV4dEdyb3VwOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIApA
QCAtNjYsNyArNjYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250ZXh0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0R0wq
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFdlYkdMQ29udGV4dEdyb3VwKiBtX2NvbnRleHRHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuY3BwCmluZGV4IDE3OWQ0ODZhYjIyMjBmNGU5NTJiNDE3ZGQ3NGQ2NzUy
MGY1MGU1YjkuLjRhNDIwYmYwYTExNmNjY2FiNWRiODdhMjZkOGJhMjQyODI4ZjJkNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApAQCAtNTgsNyArNTgsNyBAQCBX
ZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
c2V0T2JqZWN0KC0xKTsKIH0KIAotdm9pZCBXZWJHTFN5bmM6OmRlbGV0ZU9iamVjdEltcGwoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBQ
bGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xTeW5jOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxh
dGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAg
Y29udGV4dDNkLT5kZWxldGVTeW5jKG1fc3luYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU3luYy5oCmluZGV4IGMzZDMyNjRiODYwZGU5ZjdkZTczNDM1MGIzMTA4ZWY5ZDNhN2MwMmYu
LjYwYWIwNmE5MjNmNWUwOTI2Y2M5YmY4NWIwYTA1MWYyZTRkYTgwMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
R0NHTGludCBtX3N5bmNTdGF0dXMgPSB7IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEIH07
CiAgICAgR0NHTHN5bmMgbV9zeW5jOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCmluZGV4IGEzOTg2ZGE1MDJiOWU0ZTBjYjZlNjA4
NDg4ZTI2MDllYmZmMzFlZDguLjBhN2EwMWQyOTViMTUxYWI1NWIyOTRiMzcwODJmZTM4MjE2YWEw
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcApAQCAt
OTUsNyArOTUsNyBAQCB2b2lkIFdlYkdMVGV4dHVyZTo6c2V0VGFyZ2V0KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBtYXhMZXZlbCkKICNlbmRpZiAvLyBVU0UoQU5HTEUpCiB9CiAKLXZvaWQgV2Vi
R0xUZXh0dXJlOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2
b2lkIFdlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQog
ewogICAgIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAppbmRleCBkZTI5ZjhiODc1N2U3OTFjZGE5OWU4
ZTAxOWViN2RiOGE1OWUyYjE4Li5hODVhYzc4OGU3ZjE3OTc2YmVhNTQ2N2MzZDIwMWRjODhmZmQ2
ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApAQCAtOTAs
NyArOTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjay5jcHAKaW5kZXggMDI2ZWJiN2EyYzEzMjJiYzljYmEwNWM4OTE0ODg5Y2UzYTgz
NjhmZS4uYTQ1NDliZDk1ODhjM2QzOWVmZTEzYmUxNDk0ZWIyNmQ3YjBlOThjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zv
cm1GZWVkYmFjayhXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBjdHgpCiAgICAgbV9ib3VuZEluZGV4
ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMucmVzaXplKGN0eC5tYXhUcmFuc2Zvcm1GZWVkYmFj
a1NlcGFyYXRlQXR0cmlicygpKTsKIH0KIAotdm9pZCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsK
ICAgICBjb250ZXh0M2QtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKG9iamVjdCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgK
aW5kZXggN2I5OTRiMzA2ZGU0NDZhYWZlMWZjZDcwZGZiYjA3YmViNWRmNTI5Yi4uN2JjMjEzMjk5
ODJiM2VjMzk3M2Q5ZGExODcwNjA4YmE1NDQwNjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaApAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dCYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKICAgICAKICAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGF1c2Vk
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNGViZGViY2FhNzNhZTU4Mjg0ZTdmYTFkNTc0YzQx
YTUyYzZiNzA1OC4uZDBlZWQ3YTQ1YTljYmIzMjhiNGMzNjI4YWYxM2YwYzg4Y2JmNDFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXgKICAgICBz
ZXRPYmplY3QodGhpcy0+Y29udGV4dCgpLT5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVWZXJ0
ZXhBcnJheSgpKTsKIH0KIAotdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0OjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2Nr
ZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0
KQogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5o
CmluZGV4IDQ3NGZiZDQzNTRhOGJjOTEwNDQxNGQzM2I2NmNkNmUzNGZlMTVmNjAuLmY3YjM2YTlm
OThmMmVkNGRmMTUyZjdjY2EzOGE2Y2RjNzBiY2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3QoKTsKIHByaXZh
dGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCmluZGV4IDFjNmI2NzJhMDdmYTJmNDE1YTc2
YzkzODNiNDQwZjE3MmEyYjE4MzQuLjVhOTM2YjI4NGZjMWZkZGY2YWZlZGU3NWVmZGM4NjE1ZTc3
MmRmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2UuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAi
V2ViR0xDb250ZXh0T2JqZWN0LmgiCiAKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlID0gMDsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIGJvb2wgbV9oYXNFdmVyQmVlbkJvdW5k
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggNWZlODFkYmZmODhiYTRmYzZhYmI4OGUy
M2E5NzgzZWU4YzFhYzFkMy4uZGU0YWY3ZTdhNmE1OTFkNjI4NDU5MTZjOTM4Y2RjZjRjY2MyMGNl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKQogICAgIHJ1bkRlc3RydWN0b3Io
KTsKIH0KIAotdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0
IG9iamVjdCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVs
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaAppbmRleCAwYzE1OWVhY2U5MjZiMDk1ZGI1ZWE2MzJkZTNhYTYxNDI1YzA3
NmVmLi42MmM4ZjdjMzJmZTU2NWI2YjU3MmI3ZjBkZTEyMWY4M2Q2YTM5MzI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTKCk7CiBwcml2YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29u
c3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggNjkz
Nzc4ZGY2ZTAyMGNiMDE4MDFlNzVjOGUzOTk1M2Q5ZjE3MjYyYy4uN2EwNDIwZDdmZmFmZDY0OGU0
YjZkNTcxNDhjZDAyNDdiMzg0ZWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCBm
OTYwZjgwNDAyMTNhMWIyMDMzODEyODcyMjEwZmRhZmQ2NjJmMDc2Li45MzA4MDA3ZDk3MjI3NDk2
NTVjYWMzODUyYWE4ZmRjOGRhYjQ0ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yNTEsNyArMjUxLDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29s
IGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCwg
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTCYgY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGRlc3Rp
bmF0aW9uVGV4dHVyZSwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRv
KiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBi
YWNrZW5kLT5jb3B5VG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBkZXN0aW5hdGlv
blRleHR1cmUsIGludGVybmFsZm9ybWF0LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IDBm
NWRiYmFiZmIxNDhkZjBhZDIzMjdlMDRlZDMxMGZkNzE4ZTFlYzkuLjM0ZjE3ZWM2MWIzMzEwMzcx
YzJkZGJkMGEwMTc1YzYwYjkzZDE2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCkBAIC0yNjYsNiArMjY2LDggQEAgcHVibGljOgogICAg
ICAgICBDT0xPUl9BVFRBQ0hNRU5UMTVfRVhUID0gMHg4Q0VGCiAgICAgfTsKIAorICAgIC8vIFdl
YkdMIGZ1bmN0aW9ucyBpbiBmb3JtYXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4K
KwogICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gTm90ZTogVGhpcyBtZXRob2QncyBi
ZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIEdMX0FSQl9yb2J1c3RuZXNzCiAgICAgLy8gc3BlY2lm
aWNhdGlvbiBpbiB0aGUgZm9sbG93aW5nIHdheToKQEAgLTI3Myw3ICsyNzUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gSWYgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiByZXR1cm5zIGFuIGVycm9yLCBp
dCBzaG91bGQgY29udGludWUKICAgICAvLyByZXR1cm5pbmcgdGhlIHNhbWUgZXJyb3IuIFJlc3Rv
cmluZyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgaXMgaGFuZGxlZAogICAgIC8vIGV4dGVy
bmFsbHkuCi0gICAgdmlydHVhbCBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsK
KyAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKIAog
ICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKICAgICB2aXJ0dWFsIHZvaWQgYmxpdEZy
YW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEs
IGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVk
IGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpID0gMDsKQEAgLTI5MCwxMSArMjkyLDYg
QEAgcHVibGljOgogICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAg
IHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CiAKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQgotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBpbnQgKnBhcmFtcykgPSAwOwotCiAgICAgLy8gR0xfRVhUX2RlYnVnX21h
cmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcm
KSA9IDA7CkBAIC0zMDgsNiArMzA1LDg0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSA9IDA7CiAKKyAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxv
YXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRl
eFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHZvaWQqKiBwb2ludGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1
c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4
ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
aW50KiBkYXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZv
cm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMaW50NjQqIGRhdGEpID0gMDsgLy8gTk9MSU5UCisgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qg
R0NHTGludCogcGFyYW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMZmxvYXQqIHBhcmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBh
cmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtSW50ZXJm
YWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJm
YWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbmlfdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsgLy8gTk9MSU5U
CisgICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGZsb2F0KiB2YWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBwYXJhbSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVp
bnQqIHBhcmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmpl
Y3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2
NCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1
c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CisKKyAgICAvLyBPdGhl
ciBmdW5jdGlvbnMuCisjaWYgIVVTRShBTkdMRSkKKyAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVz
ZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQgorICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVs
c0VYVChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
aW50KiBwYXJhbXMpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FNRCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bnRlbCgpID0gMDsKQEAgLTMxOSw3NSArMzk0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgPSAwOwogCi0gICAgLy8g
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVh
bnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRC
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqZGF0
YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcG9pbnRlcikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xz
aXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleEltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQg
KnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9m
ZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9m
ZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVl
cnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgaW50ICpkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5k
ZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRh
dGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnZhbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZv
aWQgKipwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQg
KnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0xpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJh
bWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0
ICpwYXJhbXMpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCmluZGV4
IDEwYjU5OTcwMjM2ODc3NzFjNmVmNDE3MDk0NTMzNjBmNWMzMTliMGEuLmRjYmM4YmI0MDg1ZWJi
Y2Q2Y2MzYzUzOTM3ZGU0Mzc3NDcyYjg1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcApAQCAtMTcxOSw3ICsxNzE5LDcg
QEAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVy
dCgpCiAgICAgfQogCiAgICAgLy8gT25seSB0ZXh0dXJlcyB1cGxvYWRlZCBmcm9tIERPTSBlbGVt
ZW50cyBvciBJbWFnZURhdGEgY2FuIGFsbG93IERzdEZvcm1hdCAhPSBTcmNGb3JtYXQuCi0gICAg
Y29uc3QgYm9vbCBzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VE
YXRhKFNyY0Zvcm1hdCk7CisgICAgY29uc3QgYm9vbCBzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVt
ZW50T3JJbWFnZURhdGEgPSBHcmFwaGljc0NvbnRleHRHTDo6c3JjRm9ybWF0Q29tZXNGcm9tRE9N
RWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zvcm1hdCk7CiAgICAgaWYgKCFzcmNGb3JtYXRDb21lc0Zy
b21ET01FbGVtZW50T3JJbWFnZURhdGEgJiYgU3JjRm9ybWF0ICE9IERzdEZvcm1hdCkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTczMyw3ICsx
NzMzLDcgQEAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6
Y29udmVydCgpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmICgoIUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpoYXNBbHBoYShTcmNG
b3JtYXQpIHx8ICFHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aGFzQ29sb3IoU3JjRm9ybWF0KSB8
fCAhR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhh
T3AgIT0gR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRvTm90aGluZykgeworICAgIGlmICgo
IUdyYXBoaWNzQ29udGV4dEdMOjpoYXNBbHBoYShTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRl
eHRHTDo6aGFzQ29sb3IoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0w6Omhhc0NvbG9y
KERzdEZvcm1hdCkpICYmIGFscGhhT3AgIT0gR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRv
Tm90aGluZykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
cm1hdENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmgKaW5kZXggZjRjZGQ2ZTdmZTg3NzZjODhiNmY5NjZiY2I0MDRkZDY0MDgzOTA4
MC4uYzZmNTEyNmVkZTVjYmQ2Yzc1MzI5MzhiY2NlODZjOTM3NjU0MzMxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKQogCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4YWIzYjIyMDBmYTlkMmQ3
ZDViYTVlNWJiM2E1OGFkY2MxMjU2YzMuLjQ1MzlmYmI2ZGJmM2VjNzgzYzYxMzM4NmVhMjU0OTRm
NGViNmIxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIE1lZGlhUGxheWVyOwogY2xhc3MgUm91bmRlZFJlY3Q7Ci1jbGFz
cyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xh
c3MgUGF0aDsKIGNsYXNzIFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmNwcAppbmRleCBhMTZmNThkYjNhNDBhNGFlNTdmZjlhN2FjMTE1OGQ3ODcxYTNlZmYzLi5k
ZjRhMTE5YTMyMGRhYzZhZWI2MzA2ZDRjNTA5NTUxNTg4YTE5NzNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC03MzQsODcgKzczNCw2IEBAIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMOjpjb21wdXRlSW1h
Z2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjsKIH0KIAotI2lmICFVU0UoQU5HTEUpCi1ib29sIEdy
YXBoaWNzQ29udGV4dEdMOjpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUp
Ci17Ci0jZGVmaW5lIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoaW50ZXJuYWxGb3JtYXRNYWNy
bywgZm9ybWF0TWFjcm8sIHR5cGVNYWNybykgY2FzZSBpbnRlcm5hbEZvcm1hdE1hY3JvOiBcCi0g
ICAgICAgIGZvcm1hdCA9IGZvcm1hdE1hY3JvOyBcCi0gICAgICAgIHR5cGUgPSB0eXBlTWFjcm87
IFwKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KSB7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCLCBSR0IsIFVOU0lHTkVEX0JZVEUpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEsIFJHQkEsIFVOU0lHTkVEX0JZ
VEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKExVTUlOQU5DRV9BTFBIQSwg
TFVNSU5BTkNFX0FMUEhBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShMVU1JTkFOQ0UsIExVTUlOQU5DRSwgVU5TSUdORURfQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoQUxQSEEsIEFMUEhBLCBVTlNJR05FRF9CWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOCwgUkVELCBVTlNJR05FRF9CWVRF
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOF9TTk9STSwgUkVELCBCWVRF
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZGLCBSRUQsIEhBTEZfRkxP
QVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMkYsIFJFRCwgRkxPQVQp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4VUksIFJFRF9JTlRFR0VSLCBV
TlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOEksIFJF
RF9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZV
SSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSMTZJLCBSRURfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFIzMlVJLCBSRURfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJJLCBSRURfSU5URUdFUiwgSU5UKTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzgsIFJHLCBVTlNJR05FRF9CWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhfU05PUk0sIFJHLCBCWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2RiwgUkcsIEhBTEZfRkxPQVQp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJGLCBSRywgRkxPQVQpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOFVJLCBSR19JTlRFR0VSLCBVTlNJ
R05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhJLCBSR19J
TlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2VUks
IFJHX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSRzE2SSwgUkdfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHMzJVSSwgUkdfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMySSwgUkdfSU5URUdFUiwgSU5UKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4LCBSR0IsIFVOU0lHTkVEX0JZVEUpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNSR0I4LCBSR0IsIFVOU0lHTkVEX0JZ
VEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjU2NSwgUkdCLCBVTlNJ
R05FRF9TSE9SVF81XzZfNSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
OF9TTk9STSwgUkdCLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
MTFGX0cxMUZfQjEwRiwgUkdCLCBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I5X0U1LCBSR0IsIFVOU0lHTkVEX0lOVF81
XzlfOV85X1JFVik7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZGLCBS
R0IsIEhBTEZfRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMy
RiwgUkdCLCBGTE9BVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOFVJ
LCBSR0JfSU5URUdFUiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkdCOEksIFJHQl9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0IxNlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOwotICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2SSwgUkdCX0lOVEVHRVIsIFNIT1JU
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IzMlVJLCBSR0JfSU5URUdF
UiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0Iz
MkksIFJHQl9JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQkE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShTUkdCOF9BTFBIQTgsIFJHQkEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4X1NOT1JNLCBSR0JBLCBCWVRFKTsKLSAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1X0ExLCBSR0JBLCBVTlNJR05FRF9TSE9SVF81
XzVfNV8xKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBNCwgUkdCQSwg
VU5TSUdORURfU0hPUlRfNF80XzRfNCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCMTBfQTIsIFJHQkEsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2RiwgUkdCQSwgSEFMRl9GTE9BVCk7Ci0g
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMyRiwgUkdCQSwgRkxPQVQpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4VUksIFJHQkFfSU5URUdFUiwg
VU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThJ
LCBSR0JBX0lOVEVHRVIsIEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQjEwX0EyVUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZVSSwgUkdCQV9JTlRFR0VS
LCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QTE2SSwgUkdCQV9JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCQTMySSwgUkdCQV9JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQkEzMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMTYsIERFUFRIX0NP
TVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKERFUFRIX0NPTVBPTkVOVCwgREVQVEhfQ09NUE9ORU5ULCBVTlNJR05FRF9TSE9SVCk7Ci0g
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMjQsIERFUFRI
X0NPTVBPTkVOVCwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShERVBUSF9DT01QT05FTlQzMkYsIERFUFRIX0NPTVBPTkVOVCwgRkxPQVQpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX1NURU5DSUwsIERFUFRIX1NURU5DSUws
IFVOU0lHTkVEX0lOVF8yNF84KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShE
RVBUSDI0X1NURU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgzMkZfU1RFTkNJTDgsIERFUFRIX1NU
RU5DSUwsIEZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgRXh0ZW5zaW9uc0dMOjpT
UkdCX0VYVCwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhB
X0VYVCwgVU5TSUdORURfQllURSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSN1bmRlZiBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFCi0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLSNlbmRpZiAvLyAhVVNFKEFOR0xFKQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdM
OjpwYWNrSW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEFscGhhT3AgYWxwaGFPcCwgRGF0
YUZvcm1hdCBzb3VyY2VGb3JtYXQsIHVuc2lnbmVkIHNvdXJjZUltYWdlV2lkdGgsIHVuc2lnbmVk
IHNvdXJjZUltYWdlSGVpZ2h0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VJbWFnZVN1YlJlY3Rhbmds
ZSwgaW50IGRlcHRoLCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGludCB1bnBhY2tJ
bWFnZUhlaWdodCwgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmICghaW1hZ2UgfHwg
IXBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCmluZGV4IDAwN2M5M2MxMGQxN2Y2ODJjMmE1ODZiZjcxMDExOWFhZWNj
MTRlNDUuLmQ5ZTU4OGFmYTMwZGJhNzMwOTMwZjk2Yzk4NzI5MTM0MDEyOThjMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aApAQCAtOTE5LDcgKzkxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChDbGllbnQm
IGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKCZjbGllbnQpOyB9CiAgICAgdm9pZCByZW1vdmVDbGll
bnQoQ2xpZW50JiBjbGllbnQpIHsgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsgfQogCi0gICAg
Ly8gPT09PT09PT09PSBXZWJHTCAxIGVudHJ5IHBvaW50cy4KKyAgICAvLyBXZWJHTCBmdW5jdGlv
bnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMuCiAKICAgICB2aXJ0
dWFsIHZvaWQgYWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xP
YmplY3Qgc2hhZGVyKSA9IDA7CkBAIC0xMDk5LDUzICsxMDk5LDI5IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0
YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBzaXplLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciwgR0NHTGVudW0g
dXNhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpID0gMDsKLQotICAgIHZpcnR1YWwg
Ym9vbCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4
ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBH
Q0dMdm9pZCogcGl4ZWxzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgPSAw
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyczsgfQotICAgIHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0
cnM7IH0KLSAgICAvLyBDb25jZXNzaW9uIHRvIENhbnZhcyBjYXB0dXJlU3RyZWFtLCB3aGljaCBu
ZWVkcyB0byBkeW5hbWljYWxseSBzZXQKLSAgICAvLyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8g
dHJ1ZSBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCBjbGVhcnMuCi0gICAgLy8gSW1wbGVtZW50
YXRpb25zIGdlbmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJh
cmlseS4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0K
ICAgICAvLyBWZXJ0ZXhBcnJheU9qZWN0IGNhbGxzCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVZlcnRleEFycmF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVWZXJ0
ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBp
c1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmlu
ZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAotI2lmIFVTRShPUEVOR0wpICYm
IEVOQUJMRShXRUJHTDIpCi0gICAgdmlydHVhbCB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChH
Q0dMdWludCkgPSAwOwotI2VuZGlmCi0KLSAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90Ci0gICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKLSAgICAvLyBj
dXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCi0g
ICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAgdmlydHVhbCBFeHRlbnNpb25zR0wmIGdldEV4dGVu
c2lvbnMoKSA9IDA7Ci0KICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgog
Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lk
KiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5n
dGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKLQogICAgIHZpcnR1YWwgdm9pZCBjb3B5
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwg
R0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBH
Q0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCogbWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
THNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOworICAgIHZpcnR1YWwg
R0NHTHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKICAgICB2
aXJ0dWFsIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNy
Y1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50
IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywg
R0NHTGVudW0gZmlsdGVyKSA9IDA7CkBAIC0xMjQzLDE5ICsxMjE5LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgPSAwOwogICAgIC8vIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgPSAwOwogCi0g
ICAgLy8gdGV4U3ViSW1hZ2UyRCB3aXRoIHBpeGVsIHBhY2sgYnVmZmVyLCBhbmQgc3JjRGF0YStv
ZmZzZXQsIGFyZQotICAgIC8vIHN1cHBvcnRlZCBvbmx5IHZpYSBBTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeS4KLQotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aE92ZXJyaWRlKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2
b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJy
aWRlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKQEAgLTEyNzAsMTAgKzEyMzYsMjQgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgPSAwOwogCi0gICAg
dmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQg
ZHN0T2Zmc2V0KSA9IDA7CisgICAgLy8gT3RoZXIgZnVuY3Rpb25zLgogCi0gICAgLy8gPT09PT09
PT09PSBOb24tV2ViR0wgYmFzZWQgZW50cnkgcG9pbnRzLgorICAgIEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0K
KyAgICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CisKKyAgICAvLyBGSVhNRTogVGhl
IGNhbGxpbmcgc2l0ZSBzaG91bGQgYmUgZml4ZWQsIHRoaXMgYnJlYWtzIHRoZSBXZWJHTCBzcGVj
CisgICAgLy8gd3J0IHByZXNlcnZlRHJhd2luZ0J1ZmZlciA9PSBmYWxzZSBiZWhhdmlvci4KKyAg
ICAvLyBDb25jZXNzaW9uIHRvIENhbnZhcyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVkcyB0byBk
eW5hbWljYWxseSBzZXQKKyAgICAvLyBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1ZSBpbiBv
cmRlciB0byBhdm9pZCBpbXBsaWNpdCBjbGVhcnMuCisgICAgLy8gSW1wbGVtZW50YXRpb25zIGdl
bmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmlseS4KKyAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7CisKKyAgICAvLyBT
dXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2gg
bm90CisgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1
cHBvcnRlZCBvbiB0aGUKKyAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5z
aW9uc0dMOjpzdXBwb3J0cygpIHRvCisgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCisgICAgdmlydHVh
bCBFeHRlbnNpb25zR0wmIGdldEV4dGVuc2lvbnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
c2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgPSAwOwogCkBAIC0xMjkxLDIxICsxMjcxLDQzIEBAIHB1
YmxpYzoKICAgICAvLyBnZXRFcnJvciBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLgogICAg
IHZpcnR1YWwgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgPSAwOwogCisg
ICAgLy8gUmVhZCByZWFsIE9wZW5HTCBlcnJvcnMsIGFuZCBtb3ZlIHRoZW0gdG8gdGhlIHN5bnRo
ZXRpYworICAgIC8vIGVycm9yIGxpc3QuIFJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlcnJv
ciBpcyBtb3ZlZC4KKyAgICB2aXJ0dWFsIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2so
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKKyAg
ICAvLyBGSVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBv
ZiBjaGFuZ2VkIHN0YXRlLgorICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9
IDA7CisKKyAgICAvLyBGSVhNRTogdGhlc2Ugc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBpcyBp
bnRlcmVzdGVkIGluIGJ1ZmZlciBjbGVhciBzdGF0dXMgYW5kCisgICAgLy8gc2hvdWxkIHRyYWNr
IHRoYXQgaW4gYSB2YXJpYWJsZSB0aGF0IHRoZSBjYWxsZXIgaG9sZHMuIENhbGxlciBzaG91bGQg
cmVjZWl2ZQorICAgIC8vIHRoZSB2YWx1ZSBmcm9tIHJlc2hhcGUoKSBhbmQgZGlkQ29tcG9zaXRl
KCkuCisgICAgdmlydHVhbCBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkgPSAwOworICAg
IHZpcnR1YWwgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0ID0gMDsK
KworICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgdGhleSdyZSBwYXJ0IG9m
IGRyYXdpbmcgYnVmZmVyIGFuZAorICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3RyYWN0aW9ucyB0
aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KKyAgICAvLyB0aGUgY29udGV4
dC4KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgPSAwOworCisgICAgLy8gRklYTUU6IHRo
aXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBzaG91bGQgYmUgbWFya2VkIGNvbXBvc2l0
ZWQgYnkKKyAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3BsYXksIHNvIHRoYXQgY2FudmFzIGltYWdl
IGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCisgICAgLy8gb24gdGhlIGNvbnRlbnQuCisgICAg
dmlydHVhbCB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpID0gMDsKKwogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICAvLyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1YgaW50ZXJh
Y3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudC4KICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9IDA7CiAjZW5kaWYKIAotI2lmICFVU0UoQU5HTEUpCi0g
ICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhlbHMgYXJl
IGluaXRpYWxpemVkIHRvIDAuCi0gICAgLy8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJyb3IgaXMg
c3ludGhlc2l6ZWQuCi0gICAgLy8gQnkgZGVmYXVsdCwgYWxpZ25tZW50IGlzIDQsIHRoZSBPcGVu
R0wgZGVmYXVsdCBzZXR0aW5nLgotICAgIHZpcnR1YWwgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KSA9ICAw
OwotI2VuZGlmCiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29u
c3QgeyByZXR1cm4gSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsgfQog
CkBAIC0xMzM1LDEwICsxMzM3LDYgQEAgcHVibGljOgogICAgIC8vICAgSU5WQUxJRF9FTlVNIGlm
IGZvcm1hdC90eXBlIGlzIGlsbGVnYWwuCiAgICAgc3RhdGljIEdDR0xlbnVtIGNvbXB1dGVJbWFn
ZVNpemVJbkJ5dGVzKEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGNvbnN0IFBpeGVsU3RvcmVQ
YXJhbXMmLCB1bnNpZ25lZCogaW1hZ2VTaXplSW5CeXRlcywgdW5zaWduZWQqIHBhZGRpbmdJbkJ5
dGVzLCB1bnNpZ25lZCogc2tpcFNpemVJbkJ5dGVzKTsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAg
c3RhdGljIGJvb2wgcG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKTsKLSNl
bmRpZiAvLyAhVVNFKEFOR0xFKQotCiAgICAgLy8gRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBnaXZlbiBJbWFnZURhdGEgaW50byB0aGUgcGFzc2VkIFZlY3RvciwKICAgICAvLyBwYWNraW5n
IHRoZSBwaXhlbCBkYXRhIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0IGFuZCB0eXBlLAog
ICAgIC8vIGFuZCBvYmV5aW5nIHRoZSBmbGlwWSBhbmQgcHJlbXVsdGlwbHlBbHBoYSBmbGFncy4g
UmV0dXJucyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXNHTC5oCmluZGV4IGYzNTFjZmI4ZDhmZTE2Yjc2OGYyM2E0ZGE2YmRhNzQ1MDVk
ZDYxZjkuLjY5OWRlMjhiYWViOTJjYzI1MzM5NGRiYTgwYjdlN2E3OGUxM2Y0NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBA
IC00OCw2ICs0OCw3IEBAIHR5cGVkZWYgY2hhciBHQ0dMY2hhcjsKIHR5cGVkZWYgbG9uZyBsb25n
IEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7CiB0eXBl
ZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7Cit0eXBlZGVmIHZvaWQgR0NHTHZvaWQ7CiAK
IHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZvcm1HTE9iamVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggYjkxMzRkZDcyY2VlMjhlNmEx
YWI2NWVmZjJjMDdhNmQ1MzE3ODA1MS4uZDE0ODk5ZjAxNzAzY2UzMTc0NGViYThlMjc3OTY3YTFm
ODk4YmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IGN1cnJl
bnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIGhhdmUgdGhlIHJlc3RyaWN0aW9uIHRo
YXQgdGhleSBvbmx5IHdvcmsKICAgICAvLyB3aXRoIHRleHR1cmVzIHRoYXQgYXJlIFJHQiBvciBS
R0JBIGZvcm1hdCwgYW5kIFVOU0lHTkVEX0JZVEUgdHlwZS4KLSAgICB2aXJ0dWFsIGJvb2wgY29w
eVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBs
YXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCYsIEdDR0xl
bnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKICAg
ICAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMWFiMGEyMWZmOTQ5ODk5Zjk4YmRhOWUwMGEw
NmZkZmZkYjBkMzYzYi4uMGI4NDAwOTIxMjA0NjE2NDA5N2M5MzRlNjZlNTI4OTNiZTMyZDFkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFz
cyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNs
YXNzIEltYWdlRGF0YTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25z
dCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpID0gMDsKIAogICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29s
LCBib29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBm
YWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDI4ODM0OGU1MmExZWUzZmI5ZDFhMTdkNzc0Njg0ZDY5ZDZiNDEyMzkuLjhiMGQ3M2U4ZDgy
NGZkYjY5Y2ZmMDY5OGM4MmY4OWQwOTE4NWE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgRmxvYXRSZWN0
JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXI6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVk
aWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29u
dGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlw
ZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmFiMTU4OTk1ZDdkMmVlZGFmMzA3YzY3
OTUyYzNmZjZiZWRmNGM3MS4uZDI1MjBhY2JiYmIxYTY5OGNhM2Q0MDcwNjYyZjFkM2ZkOTY4NzA1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvU291cmNl
UHJvdmlkZXI7CiBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRH
TDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7
CiBjbGFzcyBMZWdhY3lDRE07CkBAIC00MzEsNyArNDMxLDcgQEAgcHVibGljOgogICAgIC8vIFRo
ZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG1heSBuZWVkIHRvIGJlIHJlc2l6ZWQgdG8gdG8gdGhlIGRp
bWVuc2lvbnMgb2YgdGhlIHNvdXJjZSB0ZXh0dXJlIG9yIHJlLWRlZmluZWQgdG8gdGhlIHJlcXVp
cmVkIGludGVybmFsRm9ybWF0LgogICAgIC8vIFRoZSBjdXJyZW50IHJlc3RyaWN0aW9ucyByZXF1
aXJlIHRoYXQgZm9ybWF0IHNob3VkIGJlIFJHQiBvciBSR0JBLCB0eXBlIHNob3VsZCBiZSBVTlNJ
R05FRF9CWVRFIGFuZCBsZXZlbCBzaG91bGQgYmUgMC4gSXQgbWF5IGJlIGxpZnRlZCBpbiB0aGUg
ZnV0dXJlLgogCi0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCiAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
aW5kZXggN2U5MGNkZGRmYzg3MDFiYmNkYTcyZDk0YWU0ZGI4ZjBkYTAxMGRiZi4uZjliOTIwNjE5
MGQ1YWVkMDZkMGQ4OGMwYzc0MTVjZTE2NGRhNTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE2MCw3ICsx
NjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRG
cmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBw
YWludChjLCByKTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
ZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVu
dW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAKaW5kZXggMTNmYWY1ZGI2NGZmYjI4NmJlNmFkOTU3OTUwOTVmY2M5M2YzMzM5NC4uMWM4
YmM0MjU1MGYxYzFkOTVjMzA4MmY2NzM3NmE1Njk1MDZiZmFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcApAQCAtMTQ4LDIxICsxNDgsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0
aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4
dGVuc2lvbnMgPSB0cnVlOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZWFkblBpeGVs
c0VYVChpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCB2b2lkICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5V
bmlmb3JtZnZFWFQoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBmbG9hdCAqKQotewotICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBpbnQsIEdD
R0xzaXplaSwgaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQogewogICAgIC8vIEZJWE1FOiBjb25zaWRl
ciBhZGRpbmcgc3VwcG9ydCBmb3IgQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCkBAIC00
NjIsNiArNDQ3LDggQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdl
MkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXYKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBidWZTaXpl
LCBkYXRhKTsKKyAgICBtX2NvbnRleHQtPm1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9j
b250ZXh0LT5tX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CisKIH0KIAogdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCkBAIC00NzAsNiArNDU3
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludAogICAgICAgICByZXR1cm47CiAKICAgICBnbDo6
Q29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0
YSk7CisgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4
dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKaW5kZXggNDZhYWM5ZjIxZWUyN2NjNzVhMDhjZjdjMWI3NWExMGFlNDU3MjgyMC4uMTI1
Njk1NjdjMTdjOTI2YjcxYTkxYmI0YmIxMTk1NTZiYTA2ZjE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5zdXJlRW5hYmxlZChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOworICAgIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CkBAIC02MywxMSArNjMsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gRVhUIFJv
YnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotICAgIHZvaWQgcmVh
ZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZv
aWQgKmRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotCiAg
ICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KICAgICBi
b29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQogICAgIGJvb2wgaXNJbnRl
bCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQpAQCAtODgsMzQgKzgzLDM0IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2hhZGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZv
aWQgZ2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBh
cmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRl
cnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dM
c2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpw
aXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICB2
b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
aW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCB0
ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zm
c2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZv
aWQgdGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0
aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOworCisgICAgdm9pZCB0ZXhJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCB0
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIGludCAqZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRhKSBvdmVycmlkZTsgLy8gTk9MSU5UCiAgICAg
dm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludDY0ICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpkYXRhKSBv
dmVycmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpw
YXJhbSkgb3ZlcnJpZGU7CkBAIC0xMjQsMTYgKzExOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1
c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpIG92ZXJy
aWRlOyAvLyBOT0xJTlQKICAgICB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFk
blBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJv
d3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRl
OwotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXpl
aSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1Bp
eGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lk
IHRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CmluZGV4IDUwMDk4OWNiYTk2NWQ3Y2RjOTlkMTU1MDYwNTk4Zjc3ZWEwNDViNDEuLmRmNmYzNGM5
ZDYxOGQwN2FkZjIxOTg1YTMwMWNiZTQxNDI5MzkwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCkBAIC0yMDUwLDI0ICsyMDUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0wKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJv
cmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKLXsKLSAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6Q29tcHJl
c3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291
bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
aW1hZ2VTaXplLCBkYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKLX0KLQogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQpAQCAtMjI4NywxNiArMjI2OSw2IEBAIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
CiAgICAgcmV0dXJuIGdsOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tOYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1zKQot
ewotICAgIFJFTEVBU0VfTE9HKFdlYkdMLCAiVXNlIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9i
dXN0QU5HTEUgaW5zdGVhZC4iKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVOVVNFRF9Q
QVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotICAg
IFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7Ci19Ci0KIFN0
cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewog
ICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTI0NTksMzQgKzI0MzEsNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbAogICAgIGdsOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQotewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0odXNhZ2UpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0Qnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0Rh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZW5n
dGgpOwotfQotCi0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQq
IGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQotewotICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNCeXRlT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0yOTIxLDU4ICsyODY1
LDYgQEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9y
bUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
LSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
LSAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsK
LSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFy
Z2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9QQVJBTShpbnRlcm5h
bGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVp
Z2h0KTsKLSAgICBVTlVTRURfUEFSQU0oYm9yZGVyKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjRGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aE92ZXJyaWRlKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZl
bCk7Ci0gICAgVU5VU0VEX1BBUkFNKHhvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh5b2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwot
ICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwot
ICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSkKLXsKLSAgICBVTlVT
RURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwotICAgIFVOVVNFRF9Q
QVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0o
Zm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aE92ZXJyaWRlKTsKLX0KLQogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0zMDYxLDI5ICsyOTUz
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmEKICAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihs
b2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHgp
OwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVO
VVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNF
RF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkKLXsKLSAgICBV
TlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3
aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKLX0KLQogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzQ29udGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjphc0NWKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA3ODllMjZmOTIxYTFi
ZmYxN2I5ZDRiNjdlNzNhNjFkYzAwZThkNWRjLi5mNzEzMTI2NWVjYzY4M2QxOGMyOTU4NTFkOGJl
ZmQzM2RjYzFlNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNTMsNyArMjUzLDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwor
ICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggMDc4ZWJiYTQyOGQ3M2Y3MmIxZDg0ZjY1YzYxMDQzZDM4ZDg2
NTQ4Ni4uNWYwYTI0NjA0MzYxNzg2MTk0ZmE4ZTBjNmNjZDRjNjAzMjRjY2E5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC00Miw4ICs0Miw4IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRHTENWLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2lt
cG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIgogI2ltcG9ydCAiSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
T2JqQy5oIgpAQCAtMjMyNSw3ICsyMzI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAog
fQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwg
UGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91
dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAxMTIyNWNlYjMxMjI5NDc5MWU0ZTc1NjA2Yzc0
MjJjZDkyZjZlNTkzLi4zMDY1NGUyNjhkYzQ0ZTJlM2EwN2UxM2RmZDA5MTVlMDc3ZTNkZjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wq
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBv
cnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBjYWxsZWQg
d2hlbiB0aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUgaW50byBvciBvdXQgb2YgYWNjZWxl
cmF0ZWQgcmVuZGVyaW5nIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZGI0
ZDQzYzVmMGU4N2E3ZmExZjE4MTNkYjkwNDgxZjYzMzIxN2EzMy4uYjQwMjRhOTE0OGUxYWUyNWIz
Yzk0Mjc4Mzg0NjkyYWIwMWFlYTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MzMsOCArMzMsOCBAQAogI2ltcG9ydCAiQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5o
IgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRHTENWLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgiCkBAIC02MjMsNyArNjIz
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAK
LWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBs
YXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91
dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIC8vIFdlIGhhdmUgYmVlbiBhc2tl
ZCB0byBwYWludCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQgYXMgYSBzaWduYWwg
dG8gY3JlYXRlCiAgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2ZW4gaWYgdGhhdCBt
ZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXgg
MTExMDhmOTNhNjRjYTQzNzU0YTRiYzU5YTNmMjM0MGYxN2Q1YTgzYS4uODM1MzQzYjhlNzliMzc2
YjdmNzNkM2M0Mzc0Y2I1N2FlZmRhMmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2lt
cG9ydCAiSU9TdXJmYWNlLmgiCiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW1w
b3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIK
ICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IDNhN2EwNzI2MDdiYWI1ZjYw
OTg3MjcxYWE4ZTYzYTZiZWUxNGNkM2IuLjQ0ZmY5MmVhMTRmZWVmNTMzOWU1MjYyOTgzNDI3M2Ji
MzA2NmJiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpZiBVU0UoRUdMKQog
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybURp
c3BsYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBmMWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwLi43ZTBh
ZDU0NzhjYTE3OTE5YTBlOWIzMzE5Y2ZmNDZjMmZmYzEwMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzE4Miw3ICszMTgyLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWMKIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCi1ib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0
IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBv
dXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkKIHsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAwYWIyYzZjOTE0YmZlM2NhZDYxMjdl
ZDk2MDYyZTczNzkwOGFkMTA5Li5lMDE2MTViMGYzYTM1MGQ2ZjA3NTA4NjJlMzYwYTZiMGNkYjc3
NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBA
IC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcFRleHR1cmVH
TDsKIGNsYXNzIEdMQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjsK
QEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFNRVJf
R0wpCi0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggNWJlNWE5ZDY3M2I2ZGEwOWRmMjNkOGI1
MjRmZDgyM2NiNmM4OTNkZC4uZjE1YjdmMjk1YTk1MWIyZDg5NGVjMGZhOTE5NTRlOTZmNDdhNGMx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC05Nyw2ICs5Nyw4
OCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZQogI2VuZGlmCiAKIAorI2lmICFVU0UoQU5HTEUp
Citib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJ
bnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwg
R0NHTGVudW0mIHR5cGUpCit7CisjZGVmaW5lIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoaW50
ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGVNYWNybykgY2FzZSBpbnRlcm5hbEZv
cm1hdE1hY3JvOiBcCisgICAgICAgIGZvcm1hdCA9IGZvcm1hdE1hY3JvOyBcCisgICAgICAgIHR5
cGUgPSB0eXBlTWFjcm87IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBzd2l0Y2ggKGludGVybmFs
Rm9ybWF0KSB7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCLCBSR0IsIFVO
U0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEsIFJH
QkEsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKExV
TUlOQU5DRV9BTFBIQSwgTFVNSU5BTkNFX0FMUEhBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0UsIExVTUlOQU5DRSwgVU5TSUdORURf
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoQUxQSEEsIEFMUEhBLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOCwgUkVE
LCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOF9T
Tk9STSwgUkVELCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZG
LCBSRUQsIEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIz
MkYsIFJFRCwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4VUks
IFJFRF9JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSOEksIFJFRF9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSMTZVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMTZJLCBSRURfSU5URUdFUiwgU0hPUlQpOworICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIzMlVJLCBSRURfSU5URUdFUiwgVU5TSUdO
RURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJJLCBSRURfSU5U
RUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzgsIFJHLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhfU05P
Uk0sIFJHLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2Riwg
UkcsIEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJG
LCBSRywgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOFVJLCBS
R19JTlRFR0VSLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSRzhJLCBSR19JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShSRzE2VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzE2SSwgUkdfSU5URUdFUiwgU0hPUlQpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMzJVSSwgUkdfSU5URUdFUiwgVU5TSUdORURf
SU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMySSwgUkdfSU5URUdF
UiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4LCBSR0IsIFVO
U0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNSR0I4LCBS
R0IsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QjU2NSwgUkdCLCBVTlNJR05FRF9TSE9SVF81XzZfNSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkdCOF9TTk9STSwgUkdCLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSMTFGX0cxMUZfQjEwRiwgUkdCLCBVTlNJR05FRF9JTlRfMTBGXzExRl8x
MUZfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I5X0U1LCBSR0Is
IFVOU0lHTkVEX0lOVF81XzlfOV85X1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCMTZGLCBSR0IsIEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQjMyRiwgUkdCLCBGTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkdCOFVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOEksIFJHQl9JTlRFR0VSLCBCWVRFKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNlVJLCBSR0JfSU5URUdFUiwgVU5TSUdO
RURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2SSwgUkdC
X0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0Iz
MlVJLCBSR0JfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0IzMkksIFJHQl9JTlRFR0VSLCBJTlQpOworICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQkE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOF9BTFBIQTgsIFJHQkEsIFVOU0lHTkVEX0JZVEUp
OworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4X1NOT1JNLCBSR0JBLCBC
WVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1X0ExLCBSR0JBLCBV
TlNJR05FRF9TSE9SVF81XzVfNV8xKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0JBNCwgUkdCQSwgVU5TSUdORURfU0hPUlRfNF80XzRfNCk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBfQTIsIFJHQkEsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEw
X1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2RiwgUkdCQSwg
SEFMRl9GTE9BVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMyRiwg
UkdCQSwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4VUks
IFJHQkFfSU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkdCQThJLCBSR0JBX0lOVEVHRVIsIEJZVEUpOworICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQjEwX0EyVUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfSU5UXzJf
MTBfMTBfMTBfUkVWKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZV
SSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkdCQTE2SSwgUkdCQV9JTlRFR0VSLCBTSE9SVCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTMySSwgUkdCQV9JTlRFR0VSLCBJTlQpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lH
TkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9O
RU5UMTYsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVCwgREVQVEhfQ09NUE9ORU5ULCBVTlNJ
R05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09N
UE9ORU5UMjQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfSU5UKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQzMkYsIERFUFRIX0NPTVBPTkVOVCwg
RkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX1NURU5DSUws
IERFUFRIX1NURU5DSUwsIFVOU0lHTkVEX0lOVF8yNF84KTsKKyAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShERVBUSDI0X1NURU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9J
TlRfMjRfOCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEgzMkZfU1RF
TkNJTDgsIERFUFRIX1NURU5DSUwsIEZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVik7Cisg
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwg
RXh0ZW5zaW9uc0dMOjpTUkdCX0VYVCwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoRXh0ZW5zaW9uc0dMOjpTUkdCX0FMUEhBX0VYVCwgRXh0ZW5zaW9u
c0dMOjpTUkdCX0FMUEhBX0VYVCwgVU5TSUdORURfQllURSk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyN1bmRlZiBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZiAvLyAhVVNFKEFOR0xFKQorCisKICNpZiAh
UExBVEZPUk0oQ09DT0EpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0
VmlzaWJpbGl0eShib29sKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRl
eCAyNDQyODlkNWJlZDIwYjkwYzBlNjZjM2MzNzU0MzUxMmYyNDkwOWFiLi43NzVmOTA0MDZmNDJh
NjA5MWRkYzNmZWExZTUwYjdjMmIwYWU0ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaApAQCAtMTI5LDcgKzEyOSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlU2hh
ZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmplY3QpOwogCiAjaWYgIVVTRShBTkdMRSkKLSAgICBib29s
IHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
IGFsaWdubWVudCA9IDQpIGZpbmFsOworICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGgg
cGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgorICAgIC8vIFJldHVy
biB0cnVlIGlmIG5vIEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgorICAgIC8vIEJ5IGRlZmF1bHQs
IGFsaWdubWVudCBpcyA0LCB0aGUgT3BlbkdMIGRlZmF1bHQgc2V0dGluZy4KKyAgICBib29sIHRl
eEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFs
aWdubWVudCA9IDQpOwogI2VuZGlmCiAKICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dCBmaW5hbDsKQEAgLTE2Myw4ICsxNjYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNr
KEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdD
R0xib29sZWFuIGFscGhhKSBmaW5hbDsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIGZpbmFs
OworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyNlbmRpZgog
ICAgIHZvaWQgY29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpIGZpbmFsOwogICAgIHZvaWQg
Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBjdWxsRmFjZShHQ0dM
ZW51bSBtb2RlKSBmaW5hbDsKQEAgLTI5Myw3ICsyOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsOwogCi0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCk7CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgZmluYWw7CiAKICAg
ICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsKICAgICB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBmaW5hbDsK
QEAgLTMwNywxMSArMzEyLDEzIEBAIHB1YmxpYzoKIAogICAgIC8vID09PT09PT09PT0gV2ViR0wy
IGVudHJ5IHBvaW50cy4KIAotICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNv
bnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWlu
dCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgZmluYWw7Ci0KKyNpZiAhVVNFKEFOR0xFKQor
ICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdD
R0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CisgICAg
dm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBkc3RCeXRlT2Zm
c2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxl
bmd0aCk7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZz
ZXQsIEdDR0x1aW50IGxlbmd0aCk7CisjZW5kaWYKICAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSBmaW5h
bDsKLSAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRy
IHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwg
R0NHTHVpbnQgbGVuZ3RoKSBmaW5hbDsKKwogICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xi
aXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xl
bnVtIHRhcmdldCkgZmluYWw7CiAKQEAgLTQwNywxNSArNDE0LDE2IEBAIHB1YmxpYzoKIAogICAg
IEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsKICAgICAvLyBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tQYXJhbWV0ZXIKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJhbXMpIGZpbmFsOwogICAgIFN0cmluZyBnZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tCaW5kaW5nKSBmaW5hbDsKIAotICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGhPdmVycmlkZSkgZmluYWw7CisjaWYgIVVTRShBTkdMRSkKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOwogCi0gICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZz
ZXQpIGZpbmFsOwotICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZv
aWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJp
ZGUpIGZpbmFsOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKKyNlbmRpZgogCiAgICAgdm9pZCB1bmlmb3JtMWZ2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgdW5pZm9ybTJmdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKQEAgLTQzMSwxNiArNDM5LDE4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKIAotICAgIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpIGZpbmFs
OworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOworICAgIHZvaWQgcmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1
aW50IGRzdE9mZnNldCk7CisjZW5kaWYKIAogICAgIC8vIEhlbHBlciBtZXRob2RzLgogCiAgICAg
dm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25z
dCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNz
Q29udGV4dCYpOwogCi0gICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKLSAgICB2b2lkIG1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKLSAgICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0Owor
ICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtYXJrTGF5ZXJD
b21wb3NpdGVkKCkgZmluYWw7CisgICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKICAgICB2b2lkIHJlY3ljbGVDb250ZXh0
KCk7CiAKQEAgLTQ0OCwxOSArNDU4LDE5IEBAIHB1YmxpYzoKICAgICAvLyByZXNldCBtZXRob2Qg
aXMgcHJlc2VudCB0byBrZWVwIGNhbGxpbmcgY29kZSBzaW1wbGVyLCBzbyBpdAogICAgIC8vIGRv
ZXNuJ3QgaGF2ZSB0byBrbm93IHdoaWNoIGJ1ZmZlcnMgd2VyZSBhbGxvY2F0ZWQuCiAgICAgdm9p
ZCByZXNldEJ1ZmZlcnNUb0F1dG9DbGVhcigpOwotICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0Ns
ZWFyKEdDR0xiaXRmaWVsZCk7Ci0gICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVh
cigpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRmaWVsZCkg
ZmluYWw7CisgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKICAg
ICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKLSAgICB2b2lkIHNp
bXVsYXRlQ29udGV4dENoYW5nZWQoKTsKKyAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQo
KSBmaW5hbDsKIAotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpOwotICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKik7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciopIGZpbmFsOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShX
RUJHTDIpCi0gICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpIGZpbmFsOwor
ICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIFBMQVRGT1JNKE1BQykKQEAgLTQ4NywxMCArNDk3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAog
ICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwotCi0gICAg
Ly8gUmVhZCByZWFsIE9wZW5HTCBlcnJvcnMsIGFuZCBtb3ZlIHRoZW0gdG8gdGhlIHN5bnRoZXRp
YwotICAgIC8vIGVycm9yIGxpc3QuIFJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlcnJvciBp
cyBtb3ZlZC4KLSAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAg
IGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmluYWw7CiAKICAgICAvLyBT
dXBwb3J0IGZvciBleHRlbnNpb25zLiBSZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2gg
bm90CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1
cHBvcnRlZCBvbiB0aGUKQEAgLTUxMyw2ICs1MjAsMTAgQEAgcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKICNlbmRpZgogCisjaWYgIVVTRShBTkdMRSkKKyAg
ICBzdGF0aWMgYm9vbCBwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpOwor
I2VuZGlmIC8vICFVU0UoQU5HTEUpCisKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRp
b24gPSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hh
cmVkQ29udGV4dCA9IG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAppbmRleCA5ODRmNjJkMGI1NGRkOGE4YWVhMzk3YjA4MTc3ZWI4YjQ2
YzlmZjcxLi5iMGMxZjFkZmQ0M2Q0MTUwNDI3ZmY1MjFhY2Y2ODQzNjI3MjQwMDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTI5NDMsMTQg
KzI5NDMsNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJs
b2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLAogICAgIHJldHVybiAwOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogcGFyYW1zKQotewotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsK
LSAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhcmFtcyk7Ci19Ci0KIFN0cmluZyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFVOVVNFRF9QQVJB
TShwcm9ncmFtKTsKQEAgLTI5NzUsMTAgKzI5NjcsNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3Qg
UwogICAgIHJldHVybiAwOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMdWludCwgR0NHTGVudW0s
IEdDR0xpbnQqKQotewotfQotCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCiB7CiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
NzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNS4uZTA5YWYwZGMzMmJiMWJi
YTVlYmQ4NmU0ZGMwNjcwYTAyZmY3Y2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cApAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBib29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMmEzYzI2NDU1Y2E2ZjU2NWFlYzQyMzQ5YjIx
MWI1MThhMGUyMDc4OC4uZjM2MzcyNTA5ZWE5ZTRmOGUxYTdkOGY3ZjUyNzYzYzM0ZjExZTRhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBm
aW5hbDsKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBH
Q0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsK
KyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dM
ZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKICAgICBSZWZQdHI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsK
IAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="430777"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414030</attachid>
            <date>2020-11-13 04:05:49 -0800</date>
            <delta_ts>2020-11-16 01:22:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201113140547.patch</filename>
            <type>text/plain</type>
            <size>173459</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E1MWVhYzgyY2VjOGMw
MDMxODJkMzhiM2FjNzBkYzRhNzA4MzUwMi4uNjBlMzIwZWY2ZWZkYTQxZjE4ZDk4ZTRmYzIxN2U5
YzExMmQ0ZmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMS0xMiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IFdlYkdMIGltcGxlbWVudGF0aW9uIHRvIHVzZSBHcmFwaGljc0NvbnRleHRHTCBhYnN0cmFjdCBj
bGFzcworICAgICAgICBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNvbmNyZXRl
IGNsYXNzLiBUaGlzIGFsbG93cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBXZWJHTCBpbiBH
cHVQcm9jZXNzLCB3aGVyZSB0aGUgcmVtb3RlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlzIG9u
ZSBHcmFwaGljc0NvbnRleHRHTCBzdWJjbGFzcyBhbmQgdGhlIGFjdHVhbCBkcmF3aW5nIGlzIGRv
bmUsCisgICAgICAgIGVpdGhlciBpbiBHUFVQIGFuZCBub24tR1BVUCBjYXNlcyBieSB0aGUgb2xk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgorCisgICAgICAgIFRoZSBHUFVQIHN1cHBvcnRzIG9u
bHkgQU5HTEUgZmxhdm9yIG9mIHRoZSBXZWJHTCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcworICAg
ICAgICBiZWNhdXNlIEFOR0xFIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVzaWdu
ZWQgdG8gYmUgbW9yZSBzZWN1cmUKKyAgICAgICAgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGVudmly
b25tZW50LiBUaGlzIGlzIHdoeSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICBpbnRlcmZhY2Ug
aXMgbW9kaWZpZWQgdG8gY29udGFpbiBvbmx5IGZ1bmN0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9y
CisgICAgICAgIEFOR0xFLiBGdW5jdGlvbnMgdW5pbXBsZW1ldGVkIGJ5IEFOR0xFIGFyZSByZW1v
dmVkIGZyb20gdGhlIGludGVyZmFjZS4KKyAgICAgICAgQ2FsbGluZyBXZWJHTCBjb2RlIGluc2lk
ZSAjaWZkZWYgIVVTRShBTkdMRSkgd2lsbCBkb3duY2FzdCB0aGUgaW50ZXJmYWNlCisgICAgICAg
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRv
IG5vdCBtYWtlIHNlbnNlCisgICAgICAgIHRvIGV4aXN0IGluIHRoZSBBTkdMRSB2ZXJzaW9uLgor
CisgICAgICAgIFNtYWxsIGFtb3VudCBvZiBmdW5jdGlvbnMgaW4gR3JhcGhpY3NDb250ZXh0R0wg
aW50ZXJmYWNlIGFyZSByZS1vcmRlcmVkCisgICAgICAgIHRvIGVuYWJsZSBsYXRlciBJUEMgYXV0
by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAgICAgICBFeHRlbnNpb25zR0wu
aCBpcyByZWZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gV2ViS2l0IHN0eWxlIHRvIGVuYWJsZSBsYXRl
cgorICAgICAgICBJUEMgYXV0by1nZW5lcmF0aW9uIGZyb20gdGhlIGludGVyZmFjZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xBY3RpdmVJbmZvLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
R3JvdXA6OmdldEFHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0R3JvdXAuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhp
Y3NDb250ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJz
OjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVB
dHRhY2htZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1w
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0hpZ2hQZXJmb3JtYW5jZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVJbmRleEFycmF5UHJl
Y2lzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxp
ZGF0ZURyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleElt
YWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNU
ZXhJbnRlcm5hbEZvcm1hdENvbG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJmdkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdFZlcnRleEF0
dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5
YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdyYXBoaWNzQ29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhcmVkT2JqZWN0OjpnZXRBR3JhcGhpY3NDb250
ZXh0R0wgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9i
amVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRD
b252ZXJ0ZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OmNvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpzZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29weVRvUGxhdGZvcm1UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVk
aWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmZpbGVTaXplIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5H
TEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzeW5jaHJvbml6ZVRleHRUcmFja1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YWNjZXNzTG9nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NYXhUaW1lU2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1N
YXhUaW1lTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmFzc2V0U3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvTGF5ZXJHcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJh
Y2tzQW5kT2xkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Zmx1c2hDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JC
aXBsYW5hclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBvc3NpYmxl
Rm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5
bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNoYWRlclNvdXJjZSk6CisKIDIwMjAtMTEtMTMgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNl
cyBvZiBNYWtlQ3VycmVudCBmcm9tIFdlYkdMIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQy
ZTg0NmMxNTgwY2U3ZjdmYmUzZjI1YTE4MTUxYjQ4YTU1NGU2MTguLjQ5ZTE0ODc0ZWE5ODlmMWUz
NDUwMjc3ZTE4NmU2Mzg2OTljZTZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTEtMTIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aW5hbCByZWZhY3RvciBmb3IgV2ViR0wgaW1wbGVtZW50YXRpb24gdG8gdXNlIG9ubHkgR3JhcGhp
Y3NDb250ZXh0R0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZSBNZWRpYVBsYXllclByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFi
c3RyYWN0IGNsYXNzCisgICAgICAgIGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y29uY3JldGUgY2xhc3MsIHNpbmNlIHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcg
dGhlIHNhbWUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIw
LTExLTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFNlY0l0ZW1TaGltLmR5bGliIGZyb20gbmV0d29yayBzZXJ2aWNlIGxpbmsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGUyNDQyNDI3ODRkMDUwMWNk
YzRiYWRhNDRiNzU2M2UxMDZkYjFlYTMuLjY0MDI4ODU3ZDY0ZTBmNDM2N2M1NmM3Nzk5NDllM2Rk
MmIwNTE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
MzAwLDcgKzMwMCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgZGVzdFJlY3QpOwogfQogCi1ib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jv
b2wgSFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggODFmMDgzYTUwYzY0NzYyYmUyOTVh
M2E2MzEyNDQ2ZDZiZjJiOTM2My4uZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYxNmViOTJmMGJkZWZh
ZThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1
cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBs
YXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CisgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
RGlzcGxheVBvc3RlckltYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNmUwY2ZmNjgzZjg3
ZjI4MzZjMjBkNGJkMTMxMWY1ZGRmOGYyYjM3NS4uODA3M2FkYzExMTQ5MjE1ZjU2ZDFlNDVkYTY4
NGRlODI4NTgxN2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZShDYW52YXNCYXMKICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZShDYW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3N0ZDo6dW5p
cXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgYXV0byBy
ZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+
KG5ldyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0
cmlidXRlcykpOwogICAgIC8vIFRoaXMgaXMgdmlydHVhbCBhbmQgY2FuJ3QgYmUgY2FsbGVkIGlu
IHRoZSBjb25zdHJ1Y3Rvci4KQEAgLTEwNSw3ICsxMDUsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgR3JhcGhpY3ND
b250ZQogewogfQogCi1XZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMs
IFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcykKICAgICA6IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoY2FudmFz
LCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggYmVjZDI5M2IxZDZkMDZlYjU4MmE1ZTBhNDEzMDBmMmNkYWU5MjVkZS4u
YjhiMDM2ZTQ0NzZhNGYxNWQ0ZTUwNjc1OGM1NzU5MzVlMGEwNjI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwgUmVm
PEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCiAg
ICAgfldlYkdMMlJlbmRlcmluZ0NvbnRleHQoKTsKIApAQCAtMjY1LDcgKzI2NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQo
Q2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
LCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7
CiAKICAgICBib29sIGlzV2ViR0wyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5oCmluZGV4IGFlNjk1
NDJlZjc2ZjBkZWUyNGI3YTMyOWRmYzIxYTRmOWE4ZTk2OWIuLjRjNTg0NjU3YjZjZWViYjIxMTNi
NTVhYThkMGM3MDc4YTFhMzMxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQWN0aXZlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQWN0aXZlSW5mby5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCmluZGV4IDFlY2MzY2E0ZmZjZjFlN2VhZjFlZTllZGQzMmVkYjkyMWUyZTMwM2IuLjdi
NTc3YTQ5NDMzMmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViR0xCdWZm
ZXI6On5XZWJHTEJ1ZmZlcigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdM
QnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lk
IFdlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAg
ICAgY29udGV4dDNkLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IDA1YTgwZjkzYmZkMWQ0NDhkNTJmMDhhNjYwZmY2
NmJjOWFjN2Q2ZDIuLjFlNmJhNzg2MzlmZTU3MzVhZGI5ZTdhYWFmNmQ4NGFjZTI1NTdjODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjcsNyArNjcsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICBHQ0dMZW51bSBtX3RhcmdldCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCmluZGV4IDNhODIwZGViODViNDU3YjQwMDI0MzYw
ZjcwNGEwYzRhOTljMDQ5NGYuLmQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91
cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSAiV2Vi
R0xTaGFyZWRPYmplY3QuaCIKIApAQCAtNDksNyArNDksNyBAQCBib29sIFdlYkdMQ29udGV4dEdy
b3VwOjpoYXNBQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NvbnRleHRzLmlzRW1wdHko
KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIFdlYkdMQ29udGV4dEdyb3VwOjpnZXRB
R3JhcGhpY3NDb250ZXh0R0woKQorR3JhcGhpY3NDb250ZXh0R0wmIFdlYkdMQ29udGV4dEdyb3Vw
OjpnZXRBR3JhcGhpY3NDb250ZXh0R0woKQogewogICAgIEFTU0VSVCghbV9jb250ZXh0cy5pc0Vt
cHR5KCkpOwogICAgIHJldHVybiAqKCptX2NvbnRleHRzLmJlZ2luKCkpLT5ncmFwaGljc0NvbnRl
eHRHTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3Vw
LmgKaW5kZXggNTIxMjMwZGU1YThkOGQyNTFhNTcxZDZiN2FjNDM5NDlhNWE2NGZkZS4uODU1Y2U3
MjM5ODZmZTA3NzU5OGYyNDY4MWFlODA4NmM4MWVkZmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYpOwogCiAgICAgYm9v
bCBoYXNBQ29udGV4dCgpIGNvbnN0OwotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBnZXRB
R3JhcGhpY3NDb250ZXh0R0woKTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCYgZ2V0QUdyYXBoaWNz
Q29udGV4dEdMKCk7CiAgICAgTG9jayYgb2JqZWN0R3JhcGhMb2NrRm9yQUNvbnRleHQoKTsKIAog
ICAgIHZvaWQgbG9zZUNvbnRleHRHcm91cChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0
Q29udGV4dE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAKaW5kZXggYTliODQzMDU3YTk2NWY5Nzk3MDU0NWE4N2E3NGZhNzc5ZjJh
YzkyMC4uN2M5MTlmMmI2NjU2YjY3YjE2Y2E2MzQwYjBiMmE0YjY0NWQwNDYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFdURjo6TG9jayYgV2ViR0xDb250ZXh0T2JqZWN0OjpvYmplY3RHcmFwaExv
Y2tGb3JDb250ZXh0KCkKICAgICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIFdlYkdMQ29udGV4dE9iamVjdDo6Z2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dEdMKiBXZWJHTENvbnRleHRP
YmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGV4dCA/IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKSA6IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4
MzVkODBhYTdhOTcxZjY5MzE4ZmNkZWMxNDA3NGVlMGUyNTNjMzUuLmRiZmRkNmJmYzBlZjQ0ZWI4
ODJlYjljNTliMDA4ZDI5ODExMjY0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIC8vIFdlYkdM
Q29udGV4dE9iamVjdCB0aGUgYmFzZSBjbGFzcyBmb3Igb2JqZWN0cyB0aGF0IGFyZSBvd25lZCBi
eSBhIHNwZWNpZmljCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG1fY29udGV4dDsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ2V0QUdy
YXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0R0wq
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCBhZjJlZDkwOTZjMWJl
ZWY4YjAxNjIwNWYyNTA5ZTU5YTExYzU0Y2ZmLi5hNjkxNTMyM2E4NDk0NGU1OWJjMTcyZDNmNWI5
NDMzNzI2ODE0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2Vi
R0xEZXB0aFRleHR1cmVOYW1lOwogfQogCi1ib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQpCitib29sIFdlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0R0wmIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5z
aW9uc0dMJiBleHRlbnNpb25zID0gY29udGV4dC5nZXRFeHRlbnNpb25zKCk7CiAgICAgcmV0dXJu
IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCmluZGV4IDYxNjEwMGE3YWIw
OGIxOGIxYmQ5YTlhYzgzNmJjZTk3MzJkYjgxMjQuLmVlMjBjMmViOTdiYmQwNmZkMDVmODJkZjI5
MTlkNmM5NzQzYjlmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
R0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fldlYkdMRGVwdGhUZXh0dXJlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wmKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoR3JhcGhpY3ND
b250ZXh0R0wmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggYjVjNDExMjYxYTFkMWQwNTg3ZTM3YzM2NjA4MmNlYmM0ZTBjYzljOS4uOWNiMGY4
NTZiNThlMTBlNmY0NzMwOWU2ZmUzYzEwZTI2NzA5NzE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxHQ0dMZW51
bT4mIGJ1ZmZlcnMpCiAvLyBzdGF0aWMKIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVz
V2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViZ2xDb250ZXh0
KQogewotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQgPSB3
ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJzIGlzIHN1cHBvcnRlZC4KICAg
ICBHQ0dMaW50IG1heERyYXdCdWZmZXJzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggZmUxYTg3ZTViZTJiMGQxOTM4YmRkNDY3
YTEzZjdhZmYyNGU3NDI4ZS4uMDFhMDJmNTFkNzJkODkyZWFiOGU4YzI3MDUwNmNiZmM0ZTczNjU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKQEAgLTM3LDYgKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCIKKyNlbmRpZgogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpA
QCAtNTcsOSArNjAsOSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBv
bkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwotICAgICAg
ICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVy
cmlkZTsKICAgICAgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFj
dExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBXZWJHTFJl
bmRlcmJ1ZmZlckF0dGFjaG1lbnQoKSB7IH07CkBAIC0xMjAsMTggKzEyMywxOCBAQCBuYW1lc3Bh
Y2UgewogICAgICAgICAgICAgbV9yZW5kZXJidWZmZXItPnNldEluaXRpYWxpemVkKCk7CiAgICAg
fQogCi0gICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6Om9uRGV0YWNoZWQoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICBtX3JlbmRlcmJ1ZmZlci0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQp
OwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjphdHRhY2go
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6YXR0
YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQpCiAgICAgewogICAgICAgICBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCA9IG9i
amVjdE9yWmVybyhtX3JlbmRlcmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGNvbnRleHQtPmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkJVRkZFUiwgb2JqZWN0KTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMUmVuZGVyYnVm
ZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMUmVu
ZGVyYnVmZmVyQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKICAgICB7CiAjaWYgIVVTRShB
TkdMRSkKICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRI
X1NURU5DSUxfQVRUQUNITUVOVCkgewpAQCAtMTYzLDkgKzE2Niw5IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBib29sIGlzSW5p
dGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdm9pZCBzZXRJbml0aWFsaXplZCgp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGF0dGFj
aChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRl
eHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXRvciYpIG92
ZXJyaWRlOwogCiAgICAgICAgIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQoKSB7IH07CkBAIC0yMzIs
MTIgKzIzNSwxMiBAQCBuYW1lc3BhY2UgewogICAgICAgICAvLyBUZXh0dXJlcyBhcmUgYXNzdW1l
ZCB0byBiZSBpbml0aWFsaXplZC4KICAgICB9CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFj
aG1lbnQ6Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqIGNvbnRleHQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50
OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgbV90ZXh0dXJlLT5vbkRldGFjaGVkKGxvY2tl
ciwgY29udGV4dCk7CiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50Ojph
dHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFjaG1lbnQ6OmF0
dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QgPSBv
YmplY3RPclplcm8obV90ZXh0dXJlLmdldCgpKTsKICAgICAgICAgaWYgKG1fdGFyZ2V0ID09IEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzNEIHx8IG1fdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFXzJEX0FSUkFZKQpAQCAtMjQ2LDcgKzI0OSw3IEBAIG5hbWVzcGFjZSB7CiAg
ICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIG1fdGFyZ2V0LCBvYmplY3QsIG1fbGV2ZWwpOwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xU
ZXh0dXJlQXR0YWNobWVudDo6dW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkKKyAgICB2b2lkIFdlYkdM
VGV4dHVyZUF0dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCiAgICAgewogI2lmIFVTRShBTkdM
RSkKICAgICAgICAgLy8gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGF0dGFjaG1lbnQgaXMg
dmFsaWQgaW4gRVMzLgpAQCAtNTQ3LDcgKzU1MCw3IEBAIEdDR0xlbnVtIFdlYkdMRnJhbWVidWZm
ZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKIH0KIAotYm9vbCBXZWJHTEZy
YW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkLCBj
b25zdCBjaGFyKiogcmVhc29uKQorYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFw
aGljc0NvbnRleHRHTCogY29udGV4dDNkLCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlm
IChjaGVja1N0YXR1cyhyZWFzb24pICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYzLDcgKzU2Niw3IEBAIGJvb2wg
V2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGF0
dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+aXNWYWxpZCgpOwogfQogCi12b2lkIFdlYkdMRnJhbWVi
dWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3Qp
Cit2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9i
amVjdCBvYmplY3QpCiB7CiAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogbV9hdHRhY2htZW50
cy52YWx1ZXMoKSkKICAgICAgICAgYXR0YWNobWVudC0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRl
eHQzZCk7CkBAIC01NzIsNyArNTc1LDcgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ28KIH0KIAog
I2lmICFVU0UoQU5HTEUpCi1ib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2ht
ZW50cyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZzNkLCBjb25zdCBjaGFyKiogcmVhc29uKQor
Ym9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3NDb250
ZXh0R0wqIGczZCwgY29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoIWNvbnRleHQoKSkg
ewogICAgICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJlIGNh
bGxpbmcgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaAppbmRleCBmODhiMDZhNWU0YzY0NTI1YzJiMjYyZmQ5YjhlMzkyYTk5MDVkNzIzLi5hMTQw
ZGJkM2JlMDI5ZWJmODJiMDljYjk5MWEyYWVhZjE3NjhkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC02Miw5ICs2Miw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5pdGlhbGl6ZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFjaGVk
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0
YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSA9IDA7
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm4gZmFsc2UgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGU7IG90aGVyd2lzZSBpbml0
aWFsaXplCiAgICAgLy8gdGhlIGJ1ZmZlcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5pdGlhbGl6
ZWQgYW5kCiAgICAgLy8gbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzIGlzIHRydWUuCi0gICAg
Ym9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIGNvbnN0IGNoYXIqKiByZWFz
b24pOworICAgIGJvb2wgb25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiog
cmVhc29uKTsKIAogICAgIC8vIFNvZnR3YXJlIHZlcnNpb24gb2YgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdoZW4KICAgICAvLyBGUkFNRUJVRkZFUl9DT01QTEVURSBp
cyByZXR1cm5lZCwgaXQgaXMgc3RpbGwgcG9zc2libGUgZm9yCkBAIC0xMTksMTMgKzExOSwxMyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IAogICAgIFdlYkdMQXR0YWNobWVudCogZ2V0QXR0YWNobWVudChHQ0dMZW51bSkgY29uc3Q7CiAK
ICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIFJldHVybiBmYWxzZSBpZiBmcmFtZWJ1ZmZlciBpcyBp
bmNvbXBsZXRlLgotICAgIGJvb2wgaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CisgICAgYm9vbCBpbml0aWFsaXplQXR0
YWNobWVudHMoR3JhcGhpY3NDb250ZXh0R0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKICNlbmRp
ZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGN1cnJlbnRseSBib3VuZCB0
byB0aGUgZ2l2ZW4gdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuY3BwCmluZGV4IGFiNWMxNGY1NmIxOTI4YjE1ZWVkN2Y2ZjU2MTMwNGQyMDdkYWE4MzAuLjE5
MTc4NmFiOTY4YmM3MDQ3NWMzY2ZjNDc0NGM3ZmQ5NjBlNzE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3RvcigpCiAgICAgfQogfQogCi12b2lkIFdlYkdMT2JqZWN0Ojpk
ZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2ViR0xPYmplY3Q6OmRlbGV0ZU9iamVjdChjb25z
dCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkKQog
ewogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAgICAgaWYgKCFtX29iamVjdCkKQEAgLTkyLDcgKzky
LDcgQEAgdm9pZCBXZWJHTE9iamVjdDo6ZGV0YWNoKCkKICAgICBtX2F0dGFjaG1lbnRDb3VudCA9
IDA7IC8vIE1ha2Ugc3VyZSBPcGVuR0wgcmVzb3VyY2UgaXMgZGVsZXRlZC4KIH0KIAotdm9pZCBX
ZWJHTE9iamVjdDo6b25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTE9iamVjdDo6b25EZXRh
Y2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29u
dGV4dDNkKQogewogICAgIGlmIChtX2F0dGFjaG1lbnRDb3VudCkKICAgICAgICAgLS1tX2F0dGFj
aG1lbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4
IGYwYWEyMTM3YTNlYWU1Zjk3ZjhhZDliYjkxZDkwMzNlMDA5ZjE2YTEuLmNhZDQ3OWNlMjc3MTBj
ODk0MTNlZmQ5ZGFkYzZjYmMzODNkZDJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBMb2NrOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0w7CiBjbGFzcyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U7CiAKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IEFic3RyYWN0TG9ja2VyIGFyZ3VtZW50IGVuZm9yY2VzIGF0IGNvbXBpbGUgdGltZSB0aGF0IHRo
ZSBvYmplY3RHcmFwaExvY2sKICAgICAvLyBpcyBoZWxkLiBUaGlzIGlzbid0IG5lY2Vzc2FyeSBm
b3IgYWxsIG9iamVjdCB0eXBlcywgYnV0IGVub3VnaCBvZiB0aGVtIHRoYXQKICAgICAvLyBpdCdz
IGRvbmUgZm9yIGFsbCBvZiB0aGVtLgotICAgIHZvaWQgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCopOworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCop
OwogCiAgICAgdm9pZCBvbkF0dGFjaGVkKCkgeyArK21fYXR0YWNobWVudENvdW50OyB9Ci0gICAg
dm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCopOworICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIC8vIFRoaXMgaW5kaWNhdGVzIHdoZXRo
ZXIgdGhlIGNsaWVudCBzaWRlIGlzc3VlIGEgZGVsZXRlIGNhbGwgYWxyZWFkeSwgbm90CiAgICAg
Ly8gd2hldGhlciB0aGUgT3BlbkdMIHJlc291cmNlIGlzIGRlbGV0ZWQuCkBAIC04MiwxMyArODIs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRGVzdHJ1Y3RvcigpOwogCiAgICAgLy8gZGVs
ZXRlT2JqZWN0SW1wbCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSB0byBkZWxldGUgdGhlIE9w
ZW5HTCByZXNvdXJjZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBX
VEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0R0wqIGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsK
IAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fb2JqZWN0IHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5kZXggNTA2NjBjNzVjNTBh
ZjEzYzU5NDUxMjE1OGRkNWNiYTMxMjM3ZmRkNC4uYzhjM2I4MjI2NTI1M2MwZTA0ZWUwMWE2YjQx
MjljOWM1ZjE4MDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBX
ZWJHTFByb2dyYW06Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJikKQEAgLTk1LDcgKzk5LDcg
QEAgdm9pZCBXZWJHTFByb2dyYW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgV2ViR0xQcm9n
cmFtOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQordm9p
ZCBXZWJHTFByb2dyYW06OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmop
CiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVQcm9ncmFtKG9iaik7CiAgICAgaWYgKG1fdmVydGV4
U2hhZGVyKSB7CkBAIC0yMDgsNyArMjEyLDcgQEAgdm9pZCBXZWJHTFByb2dyYW06OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpTbG90VmlzaXQKICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobV9mcmFnbWVudFNoYWRlci5nZXQoKSk7CiB9CiAKLXZv
aWQgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCogY29udGV4dDNkKQordm9pZCBXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0
cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QpCiB7CiAgICAgbV9hY3Rp
dmVBdHRyaWJMb2NhdGlvbnMuY2xlYXIoKTsKIApAQCAtMjE3LDcgKzIyMSwxMSBAQCB2b2lkIFdl
YkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqIGNvbnRleHQzZAogICAgIG1fYWN0aXZlQXR0cmliTG9jYXRpb25zLnJlc2l6ZShzdGF0
aWNfY2FzdDxzaXplX3Q+KG51bUF0dHJpYnMpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUF0dHJpYnM7ICsraSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBp
bmZvOwotICAgICAgICBjb250ZXh0M2QtPmdldEFjdGl2ZUF0dHJpYkltcGwob2JqZWN0KCksIGks
IGluZm8pOworI2lmIFVTRShBTkdMRSkKKyAgICAgICAgY29udGV4dDNkLT5nZXRBY3RpdmVBdHRy
aWIob2JqZWN0KCksIGksIGluZm8pOworI2Vsc2UKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqPihjb250ZXh0M2QpLT5nZXRBY3RpdmVBdHRyaWJJbXBsKG9iamVj
dCgpLCBpLCBpbmZvKTsKKyNlbmRpZgogICAgICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9uc1tp
XSA9IGNvbnRleHQzZC0+Z2V0QXR0cmliTG9jYXRpb24ob2JqZWN0KCksIGluZm8ubmFtZSk7CiAg
ICAgfQogfQpAQCAtMjMwLDcgKzIzOCw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjpjYWNoZUluZm9J
Zk5lZWRlZCgpCiAgICAgaWYgKCFvYmplY3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0woKTsK
KyAgICBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCA9IGdldEFHcmFwaGljc0NvbnRleHRHTCgp
OwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIEdDR0xpbnQgbGlua1N0
YXR1cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4
IDhmNzBkMGQyYjBlNDc1NWY1MmY0ZWE5YTNiYmRjNDlkODQzODgzMzcuLjVhMzUwY2IxM2FmODI2
OTQxNTFjNjYwMDliMGEyYzY3MjViZGVmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oCkBAIC05Myw5ICs5Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
V2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhY2hlQWN0aXZlQXR0cmli
TG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKik7CisgICAgdm9pZCBjYWNoZUFjdGl2
ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZv
SWZOZWVkZWQoKTsKIAogICAgIFZlY3RvcjxHQ0dMaW50PiBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggMTY2MjBi
ZDhkODU4MjRiOTVlNTczOGQ1NjAyNWYxMWE5Y2JlZjg2MC4uNjEyNWRjYmY0YTg0OGI5OTk3ZTdk
Y2JkZWJiM2RiMmRlYzVmMDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViR0xRdWVyeTo6V2ViR0xRdWVyeShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRl
eHRHTCgpLT5jcmVhdGVRdWVyeSgpKTsKIH0KIAotdm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMUXVlcnk6OmRlbGV0
ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29u
dGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0
ZVF1ZXJ5KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgK
aW5kZXggNWE2YzAzNjFhNTk4M2I3MmU0YjQ2ZjhlODI0OThjZWM2MTlkZTE2NS4uOTkyZjdjODc4
ZTg4MDg4ZTQzYWRjMTdkZjkyMTZkOTUyYWYxOTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0gICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1Jlc3Vs
dEF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV90YXJnZXQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKaW5kZXgg
ZDQwZDRlMGI4NTYxYWY1NWJlZmFlN2U1MTJmMDA2MTQyNTEwOTdmNC4uZmRlOTk5OGUwZmExNzg5
YzYwZDc4ZjhiNGMxZTdlZmQ0NjdmYjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBXZWJHTFJlbmRl
cmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4
KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlUmVuZGVyYnVm
ZmVyKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRl
eHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVS
ZW5kZXJidWZmZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5oCmluZGV4IDRhN2ZhNmM5YTIzNjEyZTQxZDIzNWRlZGE0ZGNjMTBj
NDJjZWMwNzEuLjEyNGI0MzhjYzU5Y2ZkZWNmM2NjOTRkZjUyYjE2ODNiMTBjZjQ5ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIGlzUmVuZGVyYnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAzNTU2NmViOGRhNTdlN2UzNjJiODQwZmU4NjRm
MzU5MTc2NmQyYjA0Li5kMmZhYzIwMzYyNDk5NTg1ZTBkNTE1NTZjYzVjYTRlM2FhYzMzZGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5n
Q29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYKICAgICBy
ZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2Fu
dmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52
YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKIHsKICAgICBhdXRvIHJlbmRlcmluZ0NvbnRleHQgPSBzdGQ6
OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0KGNhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmlidXRlcykpOwogICAgIC8vIFRoaXMg
aXMgdmlydHVhbCBhbmQgY2FuJ3QgYmUgY2FsbGVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KQEAgLTEw
NSw3ICsxMDUsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4
dChDYW52YXNCYXNlJiBjYW52YXMsIEdyYXBoaWNzQ29udGV4dAogewogfQogCi1XZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmIGNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIDogV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZShjYW52YXMsIFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0
ZXMpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOTQ1ZDRiYjEwNTEzZDJk
YjRmNWE0M2U5NDkxN2E2ODIxZGIyNjJiNy4uYTcxMGEwZjFlNjI5ODJlYjIwYzA3OTU4OWZlNjU0
MmZlZWVjZmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdD
b250ZXh0IGZpbmFsIDogcHVibGljIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENh
bnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gY3Jl
YXRlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+JiYsIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyk7CiAKICAgICBib29sIGlzV2ViR0wxKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyk7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0w+
JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDlhODc2OTNkYTE3OTk4ZjdhNmIyODJkYWJmZDFk
NzFmZWM3YjU2NTEuLjZjMzcyOTlkNDM3N2FhMDNjMjk1MWMyNDA1MDU4OWU4YjNjMzBmYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xJbWFnZUV4dHJhY3Rvci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjE3LDcgKzYxOCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFwcGx5IHsgZmFsc2UgfTsKIH07CiAKLXN0YXRpYyBi
b29sIGlzSGlnaFBlcmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+JiBjb250ZXh0KQorc3RhdGljIGJvb2wgaXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0
KGNvbnN0IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4mIGNvbnRleHQpCiB7CiAgICAgcmV0dXJu
IGNvbnRleHQtPnBvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbigpID09IFdlYkdMUG93ZXJQ
cmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiB9CkBAIC03NTMsNyArNzU0LDcgQEAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNl
JiBjYW52YXMsIFdlYkdMQ28KICAgICAgICAgbV9jaGVja0ZvckNvbnRleHRMb3NzSGFuZGxpbmdU
aW1lci5zdGFydE9uZVNob3QoY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVsYXkpOwogfQogCi1X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZh
c0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3Jh
cGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQogICAgIDogR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKICAgICAs
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQogICAgICwgbV9yZXN0b3JlVGltZXIoY2FudmFz
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjptYXliZVJlc3RvcmVDb250ZXh0KQpAQCAtMTc4Niw3ICsxNzg3LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGUKICAgICBpZiAoIXZhbGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3aWR0aCwg
aGVpZ2h0LCBsZXZlbCwgImNvbXByZXNzZWRUZXhJbWFnZTJEIikpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIG1f
Y29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsCisgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqPihtX2NvbnRleHQuZ2V0KCkpLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgYm9yZGVyLCBkYXRhLmJ5
dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKICAgICBpZiAobV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkgewogICAgICAgICAvLyBUaGUgY29tcHJlc3Nl
ZFRleEltYWdlMkQgZnVuY3Rpb24gZmFpbGVkLiBUZWxsIHRoZSBXZWJHTFRleHR1cmUgaXQgZG9l
c24ndCBoYXZlIHRoZSBkYXRhIGZvciB0aGlzIGxldmVsLgpAQCAtMTgyOSw3ICsxODMwLDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQKICAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1
YkRpbWVuc2lvbnMoImNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIiwgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0ZXguZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBncmFwaGljc0NvbnRleHRHTCgpLT5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOworICAgIHN0YXRpY19j
YXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4oZ3JhcGhpY3NDb250ZXh0R0woKSktPmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5ieXRlTGVuZ3RoKCksIGRhdGEuYmFzZUFkZHJlc3MoKSk7
CiAgICAgdGV4LT5zZXRDb21wcmVzc2VkKCk7CiAjZW5kaWYKIH0KQEAgLTMyMDUsNyArMzIwNiw3
IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0
ZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBHCiAjaWYgVVNFKEFOR0xFKQogICAgICAgICBtX2Nv
bnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKICNl
bHNlCi0gICAgICAgIG1fY29udGV4dC0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHBy
b2dyYW0ub2JqZWN0KCksIHBuYW1lLCAmdmFsdWUpOworICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPmdldE5vbkJ1aWx0SW5BY3Rp
dmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKICNlbmRpZiAv
LyBVU0UoQU5HTEUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBkZWZhdWx0OgpAQCAtMzU0
OSw5ICszNTUwLDExIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVu
aWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgc3dpdGNoIChiYXNl
VHlwZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOiB7CiAgICAgICAgIEdD
R0xmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CisjaWYgIVVTRShBTkdMRSkKICAgICAgICAgaWYgKG1f
aXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgMTYg
KiBzaXplb2YoR0NHTGZsb2F0KSwgdmFsdWUpOwogICAgICAgICBlbHNlCisjZW5kaWYKICAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9u
LCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZVswXTsKQEAgLTM1NTksOSArMzU2MiwxMSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwog
ICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTlQ6IHsKICAgICAgICAgR0NHTGlu
dCB2YWx1ZVs0XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9m
KEdDR0xpbnQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsK
ICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwpA
QCAtMzU3Niw5ICszNTgxLDExIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkJPT0w6IHsKICAgICAgICAgR0NHTGludCB2YWx1ZVs0
XSA9IHswfTsKKyNpZiAhVVNFKEFOR0xFKQogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRT
dXBwb3J0ZWQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5p
Zm9ybWl2RVhUKHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCA0ICogc2l6ZW9mKEdDR0xpbnQp
LCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRVbmlmb3JtaXYocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgIFZlY3Rvcjxib29sPiB2ZWN0b3IobGVuZ3Ro
KTsKQEAgLTM2MTksNyArMzYyNiw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAjaWYgVVNF
KEFOR0xFKQogICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0ub2JqZWN0KCksIEdy
YXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CiAjZWxz
ZQotICAgIG1fY29udGV4dC0+Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0u
b2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlm
b3Jtcyk7CisgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRl
eHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291bnQocHJvZ3JhbS5vYmplY3Qo
KSwgR3JhcGhpY3NDb250ZXh0R0w6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsK
ICNlbmRpZgogICAgIGZvciAoR0NHTGludCBpID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKysp
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKQEAgLTM4OTMs
OCArMzkwMCw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW1X
aXRob3V0SW52YWxpZGF0aW5nQXR0cmliTG9jYXRpb25zKFdlCiAgICAgfQogCiAjaWYgIVVTRShB
TkdMRSkKLSAgICBpZiAoIW1fY29udGV4dC0+cHJlY2lzaW9uc01hdGNoKG9iamVjdE9yWmVybyh2
ZXJ0ZXhTaGFkZXIuZ2V0KCkpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0KCkpKQot
ICAgICAgICB8fCAhbV9jb250ZXh0LT5jaGVja1ZhcnlpbmdzUGFja2luZyhvYmplY3RPclplcm8o
dmVydGV4U2hhZGVyLmdldCgpKSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyLmdldCgpKSkp
IHsKKyAgICBpZiAoIXN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250
ZXh0LmdldCgpKS0+cHJlY2lzaW9uc01hdGNoKG9iamVjdE9yWmVybyh2ZXJ0ZXhTaGFkZXIuZ2V0
KCkpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIuZ2V0KCkpKQorICAgICAgICB8fCAhc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5jaGVj
a1ZhcnlpbmdzUGFja2luZyhvYmplY3RPclplcm8odmVydGV4U2hhZGVyLmdldCgpKSwgb2JqZWN0
T3JaZXJvKGZyYWdtZW50U2hhZGVyLmdldCgpKSkpIHsKICAgICAgICAgcHJvZ3JhbS0+c2V0TGlu
a1N0YXR1cyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MjU3LDcg
KzQyNjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAgIH0KIAogI2RlZmluZSBJTlRF
Uk5BTF9GT1JNQVRfQ0hFQ0sodHlwZU1hY3JvLCBwaXhlbFR5cGVNYWNybykgXAotICAgIGlmICh0
eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5
cGUoKSAhPSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKKyAgICBpZiAodHlwZSAhPSBHcmFwaGlj
c0NvbnRleHRHTDo6dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5
cGVNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX0VOVU0sICJyZWFkUGl4ZWxzIiwgInR5cGUgZG9lcyBub3QgbWF0Y2ggaW50ZXJu
YWwgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAgfSBcCkBAIC00MjY4LDcgKzQy
NzUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aAogICAgIENIRUNLX0NPTVBPTkVOVF9DT1VO
VAogCiAjZGVmaW5lIElOVEVSTkFMX0ZPUk1BVF9JTlRFR0VSX0NIRUNLKHR5cGVNYWNybywgcGl4
ZWxUeXBlTWFjcm8pIFwKLSAgICBpZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlNDOjpwaXhlbFR5cGVNYWNybykgeyBc
CisgICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0R0w6OnR5cGVNYWNybyB8fCBwaXhlbHMu
Z2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIsICJ0
eXBlIGRvZXMgbm90IG1hdGNoIGludGVybmFsIGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVybjsg
XAogICAgIH0gXApAQCAtNDI3OCwxMyArNDI4NSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aAogICAgIH0gXAogICAgIENIRUNLX0NPTVBPTkVOVF9DT1VOVAogCi0jZGVmaW5lIENBU0VfUEFD
S0VEX0lOVEVSTkFMX0ZPUk1BVF9DSEVDSyhpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNy
bywgdHlwZTBNYWNybywgcGl4ZWxUeXBlME1hY3JvLCB0eXBlMU1hY3JvLCBwaXhlbFR5cGUxTWFj
cm8pIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwK
LSAgICBpZiAoISh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlME1hY3JvICYm
IHBpeGVscy5nZXRUeXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUwTWFjcm8pIFwKLSAgICAgICAgJiYg
ISh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0eXBlMU1hY3JvICYmIHBpeGVscy5n
ZXRUeXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUxTWFjcm8pKSB7IFwKKyNkZWZpbmUgQ0FTRV9QQUNL
RURfSU5URVJOQUxfRk9STUFUX0NIRUNLKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3Jv
LCB0eXBlME1hY3JvLCBwaXhlbFR5cGUwTWFjcm8sIHR5cGUxTWFjcm8sIHBpeGVsVHlwZTFNYWNy
bykgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6aW50ZXJuYWxGb3JtYXRNYWNybzogXAorICAgIGlm
ICghKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OnR5cGUwTWFjcm8gJiYgcGl4ZWxzLmdldFR5
cGUoKSA9PSBKU0M6OnBpeGVsVHlwZTBNYWNybykgXAorICAgICAgICAmJiAhKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OnR5cGUxTWFjcm8gJiYgcGl4ZWxzLmdldFR5cGUoKSA9PSBKU0M6OnBp
eGVsVHlwZTFNYWNybykpIHsgXAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIsICJ0eXBlIGRvZXMgbm90IG1hdGNo
IGludGVybmFsIGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXAotICAgIGlm
IChmb3JtYXQgIT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZvcm1hdE1hY3JvKSB7IFwKKyAg
ICBpZiAoZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpmb3JtYXRNYWNybykgeyBcCiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJy
ZWFkUGl4ZWxzIiwgIkludmFsaWQgZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuOyBcCiAgICAg
fSBcCkBAIC00Njk5LDcgKzQ3MDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFnZUZ1bmN0aQogICAgICAg
ICAgICAgICAgIC8vIFRoZSBVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWIHR5cGUgcGFjay91
bnBhY2sgaXNuJ3QgaW1wbGVtZW50ZWQuCiAgICAgICAgICAgICAgICAgdHlwZSA9IEdyYXBoaWNz
Q29udGV4dEdMOjpGTE9BVDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbV9jb250
ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKHBpeGVscy5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OkRhdGFGb3JtYXQ6OlJHQkE4LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdCwgZGVwdGgsIHVu
cGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwgZGF0YSkpIHsKKyAgICAgICAgICAgIGlmICghbV9jb250ZXh0LT5leHRy
YWN0SW1hZ2VEYXRhKHBpeGVscy5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQ6
OlJHQkE4LCBhZGp1c3RlZFNvdXJjZUltYWdlUmVjdCwgZGVwdGgsIHVucGFja0ltYWdlSGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwg
ZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRSwgInRleEltYWdlMkQiLCAiYmFkIGltYWdlIGRhdGEiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQpAQCAtNTAxMyw3ICs1MDIw
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICBBU1NFUlQodGV4KTsKICAgICBBU1NF
UlQodmFsaWRhdGVOUE9UVGV4dHVyZUxldmVsKHdpZHRoLCBoZWlnaHQsIGxldmVsLCAidGV4SW1h
Z2UyRCIpKTsKICAgICBpZiAoIXBpeGVscykgewotICAgICAgICBpZiAoIW1fY29udGV4dC0+dGV4
SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KSkKKyAgICAg
ICAgaWYgKCFzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5n
ZXQoKSktPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVu
dCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHZh
bGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1hdCgidGV4SW1hZ2UyRCIsIGludGVybmFsRm9y
bWF0KSk7CkBAIC01NDg1LDggKzU0OTIsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUoY29uc3QgY2hhciogZnVuY3RpbwogICAg
IFVOVVNFRF9QQVJBTShpbnRlcm5hbEZvcm1hdCk7CiAjZWxzZQogICAgIC8vIFZlcmlmeSB0aGF0
IHRoZSBjb21iaW5hdGlvbiBvZiBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCBhbmQgdHlwZSBpcyBz
dXBwb3J0ZWQuCi0jZGVmaW5lIElOVEVSTkFMX0ZPUk1BVF9DQVNFKGludGVybmFsRm9ybWF0TWFj
cm8sIGZvcm1hdE1hY3JvLCB0eXBlMCwgdHlwZTEsIHR5cGUyLCB0eXBlMywgdHlwZTQpIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwKLSAgICBpZiAo
Zm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JtYXRNYWNybykgeyBcCisjZGVm
aW5lIElOVEVSTkFMX0ZPUk1BVF9DQVNFKGludGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3Jv
LCB0eXBlMCwgdHlwZTEsIHR5cGUyLCB0eXBlMywgdHlwZTQpIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwKKyAgICBpZiAoZm9ybWF0ICE9IEdyYXBoaWNzQ29u
dGV4dEdMOjpmb3JtYXRNYWNybykgeyBcCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBm
b3JtYXQgZm9yIGludGVybmFsZm9ybWF0Iik7IFwKICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCiAg
ICAgfSBcCkBAIC01NjI1LDcgKzU2MzIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgRwogICAg
IEdDR0xpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOwogICAgIEdDR0xzaXplaSBjbGlwcGVkV2lkdGgs
IGNsaXBwZWRIZWlnaHQ7CiAgICAgaWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRC
b3VuZFJlYWRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5kUmVhZEZyYW1lYnVmZmVySGVpZ2h0
KCksICZjbGlwcGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkp
IHsKLSAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgIHN0YXRp
Y19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+dGV4SW1h
Z2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLAogICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIEdyYXBoaWNzQ29udGV4
dEdMOjpVTlNJR05FRF9CWVRFLCBtX3VucGFja0FsaWdubWVudCk7CiAgICAgICAgIGlmIChjbGlw
cGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGNsaXBwZWRYIC0geCwgY2xpcHBl
ZFkgLSB5LApAQCAtNjQwNiw4ICs2NDEzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVGYWxsYmFja0JsYWNrVGV4dHVyZXMxeDEoKQogCiBib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmlzVGV4SW50ZXJuYWxGb3JtYXRDb2xvckJ1ZmZlckNvbWJpbmF0aW9u
VmFsaWQoR0NHTGVudW0gdGV4SW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGNvbG9yQnVmZmVyRm9y
bWF0KQogewotICAgIGF1dG8gbmVlZCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRDaGFu
bmVsQml0c0J5Rm9ybWF0KHRleEludGVybmFsRm9ybWF0KTsKLSAgICBhdXRvIGhhdmUgPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChjb2xvckJ1ZmZlckZv
cm1hdCk7CisgICAgYXV0byBuZWVkID0gR3JhcGhpY3NDb250ZXh0R0w6OmdldENoYW5uZWxCaXRz
QnlGb3JtYXQodGV4SW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gaGF2ZSA9IEdyYXBoaWNzQ29u
dGV4dEdMOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KGNvbG9yQnVmZmVyRm9ybWF0KTsKICAgICBy
ZXR1cm4gKG5lZWQgJiBoYXZlKSA9PSBuZWVkOwogfQogCkBAIC03NDg0LDcgKzc0OTEsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
IGlmICghaG9zdFdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUo
bV9hdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUobV9hdHRyaWJ1dGVzLCBo
b3N0V2luZG93KSk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIGlmIChtX2NvbnRleHRM
b3N0TW9kZSA9PSBSZWFsTG9zdENvbnRleHQpCiAgICAgICAgICAgICBtX3Jlc3RvcmVUaW1lci5z
dGFydE9uZVNob3Qoc2Vjb25kc0JldHdlZW5SZXN0b3JlQXR0ZW1wdHMpOwpAQCAtNzc2MCw3ICs3
NzY3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGMKIAogI2lmIFVTRShPUEVOR0wpICYmIEVO
QUJMRShXRUJHTDIpCiAgICAgaWYgKGlzV2ViR0wyKCkpCi0gICAgICAgIG1fY29udGV4dC0+cHJp
bWl0aXZlUmVzdGFydEluZGV4KGdldFJlc3RhcnRJbmRleCh0eXBlKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+cHJpbWl0
aXZlUmVzdGFydEluZGV4KGdldFJlc3RhcnRJbmRleCh0eXBlKSk7CiAjZW5kaWYKIAogICAgIG1f
Y29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQ0dMaW50cHRyPihvZmZzZXQpLCBwcmltY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDI5
MWI5YWVkZjMzODQxNmViYWVkYjM4OWE3OTVhMjlmYThhZGRiZWIuLmE3MWQwMzZhYTBkZWE1MmI0
NTc5MDlmYmZmZGMzYWRmODBmNTEwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIkdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1c3BlbmRh
YmxlVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTI0LDcgKzEyNCw3IEBAIHVzaW5n
IFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4sIFJl
ZlB0cjxPZmZzY3JlZW5DYW52CiB1c2luZyBXZWJHTENhbnZhcyA9IFdURjo6VmFyaWFudDxSZWZQ
dHI8SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpDbGllbnQsIHB1Ymxp
YyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUgQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyIHsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgcHJpdmF0ZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBjcmVh
dGUoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMmLCBjb25zdCBTdHJpbmcmKTsK
QEAgLTM3Nyw3ICszNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb3NlQ29udGV4dEltcGwoTG9z
dENvbnRleHRNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRlQ29udGV4dENo
YW5nZWQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBncmFwaGljc0NvbnRleHRH
TCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEdyYXBoaWNzQ29udGV4
dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsg
fQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHRHcm91cC5nZXQoKTsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKIApAQCAtNDI3LDcgKzQyNyw3IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMpOwotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFz
ZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRl
cyk7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwgUmVmPEdyYXBo
aWNzQ29udGV4dEdMPiYmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsKIAogICAgIGZyaWVuZCBj
bGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERy
YXdCdWZmZXJzOwpAQCAtNTI3LDcgKzUyNyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG5lZWRz
UHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIAotICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4g
bV9jb250ZXh0OwogICAgIFJlZlB0cjxXZWJHTENvbnRleHRHcm91cD4gbV9jb250ZXh0R3JvdXA7
CiAgICAgTG9jayBtX29iamVjdEdyYXBoTG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU2FtcGxlci5jcHAKaW5kZXggYjcyMDQyNTgyM2UzNjM1NmVhMmY3MDQ1NzA4Y2U1
MTQxNWFjYjA3NS4uYjBiN2RkZDljNDNjZjIwMDU5NTQ4ZjA0OGQzOWMwMzE0NDg4MDNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIFdlYkdMU2FtcGxlcjo6V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGN0eCkKICAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVNh
bXBsZXIoKSk7CiB9CiAKLXZvaWQgV2ViR0xTYW1wbGVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgUGxh
dGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU2FtcGxlcjo6ZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBs
YXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlU2FtcGxlcihv
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
YW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRl
eCA5YjExODNlNWQ3M2RlMjYwNWU3MWQ0OTg3MGE2ODQwOTBjMjExNWUwLi40ZTEwZDc3MTczNTAx
MDljODhhMTk5YzUxZTdmMjFhZDgwNWE4MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNhbXBsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRl
eHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCmluZGV4IGM3
MGQwYTQ2ZDZjOWI4ZTRmZmQ4MjA1NWEzMTIyZGIwYmQxNjExNDQuLjdmMjIxOWI0YjI1NzdlODc1
NjdlNjY4NDE0Njc5ZjE0MWM0MWQyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViR0xTaGFkZXI6On5XZWJHTFNoYWRl
cigpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdMU2hhZGVyOjpkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU2hhZGVyOjpk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
IGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5k
ZWxldGVTaGFkZXIob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YWRlci5oCmluZGV4IDdiNDczM2FiY2U3ZWM0YWVjNDdhNGZkNTAyOWYxNDIwNmM4ZmY4NzkuLjkz
NGIzZGMxOGFmMzQ3YzNkNTBmYWU0YjA2NWM5ODI5ZjBiZDk5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBHQ0dMZW51
bSk7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCiAgICAgR0NHTGVudW0g
bV90eXBlOwogICAgIFN0cmluZyBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oCmluZGV4IDdhYjQyMjBh
ZTEwZDE3N2Q1MThlMjgxMWE4ZjFhZDMwNzg3ZGJlMzkuLjU5N2QzZjAwYjRjM2Y2Mzk0MmUxZDM2
Y2ZhMGU0ZDExYmUyMjE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaApAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcAppbmRleCA3MTgyNmE0ZjUzMDc2YWZiODFkMWRmZjdk
NmZiMzkwZDBlYWIwM2IzLi45MzZjOTgxYzk5MjkwZDhlN2NlZjk4YjEzYjU2OTNjYmViMjM3OThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3Qu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgV2ViR0xTaGFyZWRPYmplY3Q6Omhhc0dyb3VwT3JD
b250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0R3JvdXAgJiYgbV9jb250ZXh0R3Jv
dXAtPmhhc0FDb250ZXh0KCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBXZWJHTFNo
YXJlZE9iamVjdDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKK0dyYXBoaWNzQ29udGV4
dEdMKiBXZWJHTFNoYXJlZE9iamVjdDo6Z2V0QUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jb250ZXh0R3JvdXAgPyAmbV9jb250ZXh0R3JvdXAtPmdldEFHcmFwaGlj
c0NvbnRleHRHTCgpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNoYXJlZE9iamVjdC5oCmluZGV4IGJkY2VjNmUwMmU0YWY2ZjIyNzgzYTNlNjExMzlj
MjA0NDE2MGEyZjUuLjVkMTNhZmEzODQ2YWEyMTUzMGMwYWJkNTM5MGFhMWU3OThlOWUxZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBMb2NrOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFz
cyBXZWJHTENvbnRleHRHcm91cDsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAK
QEAgLTY2LDcgKzY2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNHcm91cE9yQ29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdldEFH
cmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzQ29udGV4dEdM
KiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBXZWJHTENvbnRleHRHcm91cCogbV9jb250ZXh0R3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCAxNzlkNDg2YWIyMjIwZjRlOTUyYjQxN2RkNzRkNjc1
MjBmNTBlNWI5Li40YTQyMGJmMGExMTZjY2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
V2ViR0xTeW5jOjpXZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAg
IHNldE9iamVjdCgtMSk7CiB9CiAKLXZvaWQgV2ViR0xTeW5jOjpkZWxldGVPYmplY3RJbXBsKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwg
UGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBs
YXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAg
IGNvbnRleHQzZC0+ZGVsZXRlU3luYyhtX3N5bmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuaAppbmRleCBjM2QzMjY0Yjg2MGRlOWY3ZGU3MzQzNTBiMzEwOGVmOWQzYTdjMDJm
Li42MGFiMDZhOTIzZjVlMDkyNmNjOWJmODViMGEwNTFmMmU0ZGE4MDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAg
IEdDR0xpbnQgbV9zeW5jU3RhdHVzID0geyBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdOQUxFRCB9
OwogICAgIEdDR0xzeW5jIG1fc3luYzsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAppbmRleCBhMzk4NmRhNTAyYjllNGUwY2I2ZTYw
ODQ4OGUyNjA5ZWJmZjMxZWQ4Li4wYTdhMDFkMjk1YjE1MWFiNTViMjk0YjM3MDgyZmUzODIxNmFh
MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBXZWJHTFRleHR1cmU6OnNldFRhcmdldChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbWF4TGV2ZWwpCiAjZW5kaWYgLy8gVVNFKEFOR0xFKQogfQogCi12b2lkIFdl
YkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQor
dm9pZCBXZWJHTFRleHR1cmU6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkK
IHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKaW5kZXggZGUyOWY4Yjg3NTdlNzkxY2RhOTll
OGUwMTllYjdkYjhhNTllMmIxOC4uYTg1YWM3ODhlN2YxNzk3NmJlYTU0NjdjM2QyMDFkYzg4ZmZk
NmVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTkw
LDcgKzkwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdU
Rjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suY3BwCmluZGV4IDAyNmViYjdhMmMxMzIyYmM5Y2JhMDVjODkxNDg4OWNlM2E4
MzY4ZmUuLmE0NTQ5YmQ5NTg4YzNkMzllZmUxM2JlMTQ5NGViMjZkN2IwZTk4YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2su
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNm
b3JtRmVlZGJhY2soV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY3R4KQogICAgIG1fYm91bmRJbmRl
eGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzLnJlc2l6ZShjdHgubWF4VHJhbnNmb3JtRmVlZGJh
Y2tTZXBhcmF0ZUF0dHJpYnMoKSk7CiB9CiAKLXZvaWQgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7
CiAgICAgY29udGV4dDNkLT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhvYmplY3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5o
CmluZGV4IDdiOTk0YjMwNmRlNDQ2YWFmZTFmY2Q3MGRmYmIwN2JlYjVkZjUyOWIuLjdiYzIxMzI5
OTgyYjNlYzM5NzNkOWRhMTg3MDYwOGJhNTQ0MDY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKQEAgLTc1LDcgKzc1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgYm9vbCBtX2FjdGl2ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhdXNl
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3QuY3BwCmluZGV4IDRlYmRlYmNhYTczYWU1ODI4NGU3ZmExZDU3NGM0
MWE1MmM2YjcwNTguLmQwZWVkN2E0NWE5Y2JiMzI4YjRjMzYyOGFmMTNmMGM4OGNiZjQxZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdM
VmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4CiAgICAg
c2V0T2JqZWN0KHRoaXMtPmNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Y3JlYXRlVmVy
dGV4QXJyYXkoKSk7CiB9CiAKLXZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdDo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVj
dCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVmYXVsdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aAppbmRleCA0NzRmYmQ0MzU0YThiYzkxMDQ0MTRkMzNiNjZjZDZlMzRmZTE1ZjYwLi5mN2IzNmE5
Zjk4ZjJlZDRkZjE1MmY3Y2NhMzhhNmNkYzcwYmNiYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2
YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAppbmRleCAxYzZiNjcyYTA3ZmEyZjQxNWE3
NmM5MzgzYjQ0MGYxNzJhMmIxODM0Li41YTkzNmIyODRmYzFmZGRmNmFmZWRlNzVlZmRjODYxNWU3
NzJkZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RCYXNlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHTCkKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYkdMQ29udGV4dE9iamVjdC5oIgogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZSA9IDA7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1faGFzRXZlckJlZW5Cb3Vu
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IDVmZTgxZGJmZjg4YmE0ZmM2YWJiODhl
MjNhOTc4M2VlOGMxYWMxZDMuLmRlNGFmN2U3YTZhNTkxZDYyODQ1OTE2YzkzOGNkY2Y0Y2NjMjBj
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVM6On5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkKICAgICBydW5EZXN0cnVjdG9y
KCk7CiB9CiAKLXZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVj
dCBvYmplY3QpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmgKaW5kZXggMGMxNTllYWNlOTI2YjA5NWRiNWVhNjMyZGUzYWE2MTQyNWMw
NzZlZi4uNjJjOGY3YzMyZmU1NjViNmI1NzJiN2YwZGUxMjFmODNkNmEzOTMyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUygpOwogcHJpdmF0ZToKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDY5
Mzc3OGRmNmUwMjBjYjAxODAxZTc1YzhlMzk5NTNkOWYxNzI2MmMuLjdhMDQyMGQ3ZmZhZmQ2NDhl
NGI2ZDU3MTQ4Y2QwMjQ3YjM4NGVmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
LmgiCiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXgg
Zjk2MGY4MDQwMjEzYTFiMjAzMzgxMjg3MjIxMGZkYWZkNjYyZjA3Ni4uOTMwODAwN2Q5NzIyNzQ5
NjU1Y2FjMzg1MmFhOGZkYzhkYWI0NGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjUxLDcgKzI1MSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9v
bCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQs
IEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0aW5hdGlvblRleHR1cmUsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
IGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0wmIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0
aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0
byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
YmFja2VuZC0+Y29weVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRhcmdldCwgZGVzdGluYXRp
b25UZXh0dXJlLCBpbnRlcm5hbGZvcm1hdCwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAw
ZjVkYmJhYmZiMTQ4ZGYwYWQyMzI3ZTA0ZWQzMTBmZDcxOGUxZWM5Li4zNGYxN2VjNjFiMzMxMDM3
MWMyZGRiZDBhMDE3NWM2MGI5M2QxNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAg
ICAgICAgQ09MT1JfQVRUQUNITUVOVDE1X0VYVCA9IDB4OENFRgogICAgIH07CiAKKyAgICAvLyBX
ZWJHTCBmdW5jdGlvbnMgaW4gZm9ybWF0IGdlbmVyYXRlLWdwdXAtd2ViZ2wgdW5kZXJzdGFuZHMu
CisKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3Mg
YmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwogICAgIC8vIHNwZWNp
ZmljYXRpb24gaW4gdGhlIGZvbGxvd2luZyB3YXk6CkBAIC0yNzMsNyArMjc1LDcgQEAgcHVibGlj
OgogICAgIC8vIElmIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwg
aXQgc2hvdWxkIGNvbnRpbnVlCiAgICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0
b3JpbmcgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKICAgICAvLyBleHRl
cm5hbGx5LgotICAgIHZpcnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7
CisgICAgdmlydHVhbCBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9IDA7CiAK
ICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0CiAgICAgdmlydHVhbCB2b2lkIGJsaXRG
cmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kx
LCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25l
ZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSA9IDA7CkBAIC0yOTAsMTEgKzI5Miw2
IEBAIHB1YmxpYzoKICAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKICAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdCkgPSAwOwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpID0gMDsKLQogICAgIC8vIEdMX0VYVF9kZWJ1Z19t
YXJrZXIKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5n
JikgPSAwOwpAQCAtMzA4LDYgKzMwNSw4NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikgPSAwOwogCisgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZs
b2F0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xmbG9hdCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxl
bmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0x2b2lkKiogcG9pbnRlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9i
dXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dz
LCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkRSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBp
eGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogZGF0YSkgPSAwOyAvLyBOT0xJTlQKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxm
b3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
THVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBkYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGludDY0KiBkYXRhKSA9IDA7IC8vIE5PTElOVAorICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZm
ZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50NjQqIHBhcmFt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xpbnQqIHBhcmFtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbUludGVy
ZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJvb2xlYW5pX3ZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xib29sZWFuKiBkYXRhKSA9IDA7IC8vIE5PTElO
VAorICAgIHZpcnR1YWwgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xmbG9hdCogdmFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdm9pZCoqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVz
dEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywg
R0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
dWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCogcGFyYW0pID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1
aW50KiBwYXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2Jq
ZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50
NjQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50NjQqIHBhcmFtcykgPSAwOworCisgICAgLy8gT3Ro
ZXIgZnVuY3Rpb25zLgorI2lmICFVU0UoQU5HTEUpCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSB1
c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhl
bHNFWFQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBpc05WSURJQSgp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBTUQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
SW50ZWwoKSA9IDA7CkBAIC0zMTksNzUgKzM5NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpID0gMDsKIAotICAgIC8v
IEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAgdmlydHVhbCB2b2lkIGdldEJvb2xl
YW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGJvb2xlYW4gKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKmRh
dGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXZSb2J1c3RBTkdM
RShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRV
bmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dM
c2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
ICpwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhv
ZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHpvZmZz
ZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlv
ZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIGludCAqZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xpbnQ2NCAqZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VyNjRp
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50NjQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpk
YXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICp2YWwpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2
b2lkICoqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwg
Ym9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHVpbnQgKnBhcmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlk
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3RpNjR2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQ2
NCAqcGFyYW1zKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcAppbmRl
eCAxMGI1OTk3MDIzNjg3NzcxYzZlZjQxNzA5NDUzMzYwZjVjMzE5YjBhLi5kY2JjOGJiNDA4NWVi
YmNkNmNjM2M1MzkzN2RlNDM3NzQ3MmI4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKQEAgLTE3MTksNyArMTcxOSw3
IEBAIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZl
cnQoKQogICAgIH0KIAogICAgIC8vIE9ubHkgdGV4dHVyZXMgdXBsb2FkZWQgZnJvbSBET00gZWxl
bWVudHMgb3IgSW1hZ2VEYXRhIGNhbiBhbGxvdyBEc3RGb3JtYXQgIT0gU3JjRm9ybWF0LgotICAg
IGNvbnN0IGJvb2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhID0gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdl
RGF0YShTcmNGb3JtYXQpOworICAgIGNvbnN0IGJvb2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxl
bWVudE9ySW1hZ2VEYXRhID0gR3JhcGhpY3NDb250ZXh0R0w6OnNyY0Zvcm1hdENvbWVzRnJvbURP
TUVsZW1lbnRPckltYWdlRGF0YShTcmNGb3JtYXQpOwogICAgIGlmICghc3JjRm9ybWF0Q29tZXNG
cm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhICYmIFNyY0Zvcm1hdCAhPSBEc3RGb3JtYXQpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3MzMsNyAr
MTczMyw3IEBAIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6
OmNvbnZlcnQoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBpZiAoKCFHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aGFzQWxwaGEoU3Jj
Rm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omhhc0NvbG9yKFNyY0Zvcm1hdCkg
fHwgIUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpoYXNDb2xvcihEc3RGb3JtYXQpKSAmJiBhbHBo
YU9wICE9IEdyYXBoaWNzQ29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcpIHsKKyAgICBpZiAo
KCFHcmFwaGljc0NvbnRleHRHTDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250
ZXh0R0w6Omhhc0NvbG9yKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29udGV4dEdMOjpoYXNDb2xv
cihEc3RGb3JtYXQpKSAmJiBhbHBoYU9wICE9IEdyYXBoaWNzQ29udGV4dEdMOjpBbHBoYU9wOjpE
b05vdGhpbmcpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3JtYXRDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1h
dENvbnZlcnRlci5oCmluZGV4IGY0Y2RkNmU3ZmU4Nzc2Yzg4YjZmOTY2YmNiNDA0ZGQ2NDA4Mzkw
ODAuLmM2ZjUxMjZlZGU1Y2JkNmM3NTMyOTM4YmNjZTg2YzkzNzY1NDMzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwOGFiM2IyMjAwZmE5ZDJk
N2Q1YmE1ZTViYjNhNThhZGNjMTI1NmMzLi40NTM5ZmJiNmRiZjNlYzc4M2M2MTMzODZlYTI1NDk0
ZjRlYjZiMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNs
YXNzIFBhdGg7CiBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggYTE2ZjU4ZGIzYTQwYTRhZTU3ZmY5YTdhYzExNThkNzg3MWEzZWZmMy4u
ZGY0YTExOWEzMjBkYWM2YWViNjMwNmQ0YzUwOTU1MTU4OGExOTczZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtNzM0LDg3ICs3MzQsNiBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6Y29tcHV0ZUlt
YWdlU2l6ZUluQnl0ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eQogICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CiAKLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBH
cmFwaGljc0NvbnRleHRHTDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQo
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBl
KQotewotI2RlZmluZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKGludGVybmFsRm9ybWF0TWFj
cm8sIGZvcm1hdE1hY3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJuYWxGb3JtYXRNYWNybzogXAot
ICAgICAgICBmb3JtYXQgPSBmb3JtYXRNYWNybzsgXAotICAgICAgICB0eXBlID0gdHlwZU1hY3Jv
OyBcCi0gICAgICAgIGJyZWFrOwotCi0gICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkgewotICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdCLCBVTlNJR05FRF9CWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBLCBSR0JBLCBVTlNJR05FRF9C
WVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFOQ0VfQUxQSEEs
IExVTUlOQU5DRV9BTFBIQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoTFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lHTkVEX0JZVEUpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBIQSwgVU5TSUdORURfQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgsIFJFRCwgVU5TSUdORURfQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhfU05PUk0sIFJFRCwgQllU
RSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2RiwgUkVELCBIQUxGX0ZM
T0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJGLCBSRUQsIEZMT0FU
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOFVJLCBSRURfSU5URUdFUiwg
VU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhJLCBS
RURfSU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2
VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVEX0lOVEVHRVIsIElOVCk7Ci0g
ICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBSRywgVU5TSUdORURfQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4X1NOT1JNLCBSRywgQllURSk7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkYsIFJHLCBIQUxGX0ZMT0FU
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyRiwgUkcsIEZMT0FUKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhVSSwgUkdfSU5URUdFUiwgVU5T
SUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4SSwgUkdf
SU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNlVJ
LCBSR19JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkcxNkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lOVEVHRVIsIElOVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdCLCBVTlNJR05FRF9CWVRFKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOCwgUkdCLCBVTlNJR05FRF9C
WVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1NjUsIFJHQiwgVU5T
SUdORURfU0hPUlRfNV82XzUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QjhfU05PUk0sIFJHQiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
UjExRl9HMTFGX0IxMEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFVik7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwgUkdCLCBVTlNJR05FRF9JTlRf
NV85XzlfOV9SRVYpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjE2Riwg
UkdCLCBIQUxGX0ZMT0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0Iz
MkYsIFJHQiwgRkxPQVQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhV
SSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQjhJLCBSR0JfSU5URUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX1NIT1JUKTsKLSAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkksIFJHQl9JTlRFR0VSLCBTSE9S
VCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJVSSwgUkdCX0lOVEVH
RVIsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
MzJJLCBSR0JfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0JBOCwgUkdCQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoU1JHQjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdCQSwgQllURSk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdCQSwgVU5TSUdORURfU0hPUlRf
NV81XzVfMSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTQsIFJHQkEs
IFVOU0lHTkVEX1NIT1JUXzRfNF80XzQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQjEwX0EyLCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJHQkEsIEhBTEZfRkxPQVQpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkYsIFJHQkEsIEZMT0FUKTsK
LSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOFVJLCBSR0JBX0lOVEVHRVIs
IFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE4
SSwgUkdCQV9JTlRFR0VSLCBCWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RShSR0IxMF9BMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVik7
Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2VUksIFJHQkFfSU5URUdF
UiwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
QkExNkksIFJHQkFfSU5URUdFUiwgU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQkEzMkksIFJHQkFfSU5URUdFUiwgSU5UKTsKLSAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9JTlQpOwotICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDE2LCBERVBUSF9D
T01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShERVBUSF9DT01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURfU0hPUlQpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDI0LCBERVBU
SF9DT01QT05FTlQsIFVOU0lHTkVEX0lOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoREVQVEhfQ09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05FTlQsIEZMT0FUKTsKLSAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVOQ0lMLCBERVBUSF9TVEVOQ0lM
LCBVTlNJR05FRF9JTlRfMjRfOCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
REVQVEgyNF9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURfSU5UXzI0XzgpOwotICAg
ICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJGX1NURU5DSUw4LCBERVBUSF9T
VEVOQ0lMLCBGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIEV4dGVuc2lvbnNHTDo6
U1JHQl9FWFQsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBI
QV9FWFQsIFVOU0lHTkVEX0JZVEUpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0jdW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0jZW5kaWYgLy8gIVVTRShBTkdMRSkKLQogYm9vbCBHcmFwaGljc0NvbnRleHRH
TDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIHBpeGVscywgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIGZsaXBZLCBBbHBoYU9wIGFscGhhT3AsIERh
dGFGb3JtYXQgc291cmNlRm9ybWF0LCB1bnNpZ25lZCBzb3VyY2VJbWFnZVdpZHRoLCB1bnNpZ25l
ZCBzb3VyY2VJbWFnZUhlaWdodCwgY29uc3QgSW50UmVjdCYgc291cmNlSW1hZ2VTdWJSZWN0YW5n
bGUsIGludCBkZXB0aCwgdW5zaWduZWQgc291cmNlVW5wYWNrQWxpZ25tZW50LCBpbnQgdW5wYWNr
SW1hZ2VIZWlnaHQsIFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBpZiAoIWltYWdlIHx8
ICFwaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuaAppbmRleCAwMDdjOTNjMTBkMTdmNjgyYzJhNTg2YmY3MTAxMTlhYWVj
YzE0ZTQ1Li5kOWU1ODhhZmEzMGRiYTczMDkzMGY5NmM5ODcyOTEzNDAxMjk4YzFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKQEAgLTkxOSw3ICs5MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoQ2xpZW50
JiBjbGllbnQpIHsgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3ZlQ2xp
ZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAotICAg
IC8vID09PT09PT09PT0gV2ViR0wgMSBlbnRyeSBwb2ludHMuCisgICAgLy8gV2ViR0wgZnVuY3Rp
b25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgogCiAgICAgdmly
dHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdM
T2JqZWN0IHNoYWRlcikgPSAwOwpAQCAtMTA5OSw1MyArMTA5OSwyOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwgR0NHTGVudW0gdXNhZ2UpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXpl
aXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZz
ZXQsIEdDR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIsIEdDR0xlbnVt
IHVzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZCogZGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBp
eGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
R0NHTHZvaWQqIHBpeGVscykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0g
MDsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KLSAgICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0
dHJzOyB9Ci0gICAgLy8gQ29uY2Vzc2lvbiB0byBDYW52YXMgY2FwdHVyZVN0cmVhbSwgd2hpY2gg
bmVlZHMgdG8gZHluYW1pY2FsbHkgc2V0Ci0gICAgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyIHRv
IHRydWUgaW4gb3JkZXIgdG8gYXZvaWQgaW1wbGljaXQgY2xlYXJzLgotICAgIC8vIEltcGxlbWVu
dGF0aW9ucyBnZW5lcmFsbHkgZG8gbm90IHN1cHBvcnQgdG9nZ2xpbmcgdGhpcyBiaXQgYXJiaXRy
YXJpbHkuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwot
CiAgICAgLy8gVmVydGV4QXJyYXlPamVjdCBjYWxscwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVWZXJ0ZXhBcnJheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4g
aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJp
bmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKLSNpZiBVU0UoT1BFTkdMKSAm
JiBFTkFCTEUoV0VCR0wyKQotICAgIHZpcnR1YWwgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgo
R0NHTHVpbnQpID0gMDsKLSNlbmRpZgotCi0gICAgLy8gU3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4g
UmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAotICAgIC8vIGFsbCBtZXRob2Rz
IGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCi0gICAgLy8g
Y3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnNHTDo6c3VwcG9ydHMoKSB0bwot
ICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIHZpcnR1YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRl
bnNpb25zKCkgPSAwOwotCiAgICAgLy8gPT09PT09PT09PSBXZWJHTCAyIGVudHJ5IHBvaW50cy4K
IAotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9p
ZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVu
Z3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQs
IEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVp
cHRyIHNpemUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwg
R0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdD
R0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFs
IEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7CiAgICAg
dmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBz
cmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGlu
dCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ss
IEdDR0xlbnVtIGZpbHRlcikgPSAwOwpAQCAtMTI0MywxOSArMTIxOSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpID0gMDsKIAot
ICAgIC8vIHRleFN1YkltYWdlMkQgd2l0aCBwaXhlbCBwYWNrIGJ1ZmZlciwgYW5kIHNyY0RhdGEr
b2Zmc2V0LCBhcmUKLSAgICAvLyBzdXBwb3J0ZWQgb25seSB2aWEgQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkuCi0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50
IGJvcmRlciwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGhPdmVycmlkZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgY29uc3Qg
dm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVy
cmlkZSkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlv
biwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRp
b24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKSA9IDA7CkBAIC0xMjcwLDEwICsxMjM2LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50
IGRzdE9mZnNldCkgPSAwOworICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KIAotICAgIC8vID09PT09
PT09PT0gTm9uLVdlYkdMIGJhc2VkIGVudHJ5IHBvaW50cy4KKyAgICBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJzOyB9
CisgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQorCisgICAgLy8gRklYTUU6IFRo
ZSBjYWxsaW5nIHNpdGUgc2hvdWxkIGJlIGZpeGVkLCB0aGlzIGJyZWFrcyB0aGUgV2ViR0wgc3Bl
YworICAgIC8vIHdydCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UgYmVoYXZpb3IuCisg
ICAgLy8gQ29uY2Vzc2lvbiB0byBDYW52YXMgY2FwdHVyZVN0cmVhbSwgd2hpY2ggbmVlZHMgdG8g
ZHluYW1pY2FsbHkgc2V0CisgICAgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyIHRvIHRydWUgaW4g
b3JkZXIgdG8gYXZvaWQgaW1wbGljaXQgY2xlYXJzLgorICAgIC8vIEltcGxlbWVudGF0aW9ucyBn
ZW5lcmFsbHkgZG8gbm90IHN1cHBvcnQgdG9nZ2xpbmcgdGhpcyBiaXQgYXJiaXRyYXJpbHkuCisg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOworCisgICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAorICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCisgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVu
c2lvbnNHTDo6c3VwcG9ydHMoKSB0bworICAgIC8vIGRldGVybWluZSB0aGlzLgorICAgIHZpcnR1
YWwgRXh0ZW5zaW9uc0dMJiBnZXRFeHRlbnNpb25zKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRleHRWaXNpYmlsaXR5KGJvb2wpID0gMDsKIApAQCAtMTI5MSwyMSArMTI3MSw0MyBAQCBw
dWJsaWM6CiAgICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KICAg
ICB2aXJ0dWFsIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpID0gMDsKIAor
ICAgIC8vIFJlYWQgcmVhbCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBzeW50
aGV0aWMKKyAgICAvLyBlcnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJy
b3IgaXMgbW92ZWQuCisgICAgdmlydHVhbCBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgPSAwOwogCisg
ICAgLy8gRklYTUU6IHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgc2hvdWxkIGtlZXAgdHJhY2sg
b2YgY2hhbmdlZCBzdGF0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkg
PSAwOworCisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMg
aW50ZXJlc3RlZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAorICAgIC8vIHNob3VsZCB0cmFj
ayB0aGF0IGluIGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxk
IHJlY2VpdmUKKyAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0
ZSgpLgorICAgIHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKKyAg
ICB2aXJ0dWFsIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7
CisKKyAgICAvLyBGSVhNRTogdGhlc2Ugc2hvdWxkIGJlIHJlbW92ZWQsIHRoZXkncmUgcGFydCBv
ZiBkcmF3aW5nIGJ1ZmZlciBhbmQKKyAgICAvLyBkaXNwbGF5IGJ1ZmZlciBhYnN0cmFjdGlvbnMg
dGhhdCB0aGUgY2FsbGVyIHNob3VsZCBob2xkIHNlcGFyYXRlIHRvCisgICAgLy8gdGhlIGNvbnRl
eHQuCisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKworICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCBiZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3Np
dGVkIGJ5CisgICAgLy8gcHJlcGFyaW5nIGZvciBkaXNwbGF5LCBzbyB0aGF0IGNhbnZhcyBpbWFn
ZSBidWZmZXIgYW5kIHRoZSBsYXllciBhZ3JlZQorICAgIC8vIG9uIHRoZSBjb250ZW50LgorICAg
IHZpcnR1YWwgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSA9IDA7CisKICNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShBVkZPVU5EQVRJT04pCiAgICAgLy8gUmV0dXJucyBpbnRlcmZhY2UgZm9yIENWIGludGVy
YWN0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCiAgICAgdmlydHVhbCBHcmFw
aGljc0NvbnRleHRHTENWKiBhc0NWKCkgPSAwOwogI2VuZGlmCiAKLSNpZiAhVVNFKEFOR0xFKQot
ICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2FzZTogcGl4ZWxzIGFy
ZSBpbml0aWFsaXplZCB0byAwLgotICAgIC8vIFJldHVybiB0cnVlIGlmIG5vIEdMIGVycm9yIGlz
IHN5bnRoZXNpemVkLgotICAgIC8vIEJ5IGRlZmF1bHQsIGFsaWdubWVudCBpcyA0LCB0aGUgT3Bl
bkdMIGRlZmF1bHQgc2V0dGluZy4KLSAgICB2aXJ0dWFsIGJvb2wgdGV4SW1hZ2UyRFJlc291cmNl
U2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25tZW50ID0gNCkgPSAg
MDsKLSNlbmRpZgogCiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCk7IH0K
IApAQCAtMTMzNSwxMCArMTMzNyw2IEBAIHB1YmxpYzoKICAgICAvLyAgIElOVkFMSURfRU5VTSBp
ZiBmb3JtYXQvdHlwZSBpcyBpbGxlZ2FsLgogICAgIHN0YXRpYyBHQ0dMZW51bSBjb21wdXRlSW1h
Z2VTaXplSW5CeXRlcyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBjb25zdCBQaXhlbFN0b3Jl
UGFyYW1zJiwgdW5zaWduZWQqIGltYWdlU2l6ZUluQnl0ZXMsIHVuc2lnbmVkKiBwYWRkaW5nSW5C
eXRlcywgdW5zaWduZWQqIHNraXBTaXplSW5CeXRlcyk7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAg
IHN0YXRpYyBib29sIHBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSYgZm9ybWF0LCBHQ0dMZW51bSYgdHlwZSk7Ci0j
ZW5kaWYgLy8gIVVTRShBTkdMRSkKLQogICAgIC8vIEV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiB0
aGUgZ2l2ZW4gSW1hZ2VEYXRhIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCiAgICAgLy8gcGFja2lu
ZyB0aGUgcGl4ZWwgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdCBhbmQgdHlwZSwK
ICAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5QWxwaGEgZmxhZ3Mu
IFJldHVybnMgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzR0wuaAppbmRleCBmMzUxY2ZiOGQ4ZmUxNmI3NjhmMjNhNGRhNmJkYTc0NTA1
ZGQ2MWY5Li42OTlkZTI4YmFlYjkyY2MyNTMzOTRkYmE4MGI3ZTdhNzhlMTNmNDQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaApA
QCAtNDgsNiArNDgsNyBAQCB0eXBlZGVmIGNoYXIgR0NHTGNoYXI7CiB0eXBlZGVmIGxvbmcgbG9u
ZyBHQ0dMaW50NjQ7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBHQ0dMdWludDY0OwogdHlw
ZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdDR0xzeW5jOwordHlwZWRlZiB2b2lkIEdDR0x2b2lkOwog
CiB0eXBlZGVmIEdDR0x1aW50IFBsYXRmb3JtR0xPYmplY3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGI5MTM0ZGQ3MmNlZTI4ZTZh
MWFiNjVlZmYyYzA3YTZkNTMxNzgwNTEuLmQxNDg5OWYwMTcwM2NlMzE3NDRlYmE4ZTI3Nzk2N2Ex
Zjg5OGJjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBjdXJy
ZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0cmljdGlvbiB0
aGF0IHRoZXkgb25seSB3b3JrCiAgICAgLy8gd2l0aCB0ZXh0dXJlcyB0aGF0IGFyZSBSR0Igb3Ig
UkdCQSBmb3JtYXQsIGFuZCBVTlNJR05FRF9CWVRFIHR5cGUuCi0gICAgdmlydHVhbCBib29sIGNv
cHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wmLCBHQ0dM
ZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAg
ICAgCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDFhYjBhMjFmZjk0OTg5OWY5OGJkYTllMDBh
MDZmZGZmZGIwZDM2M2IuLjBiODQwMDkyMTIwNDYxNjQwOTdjOTM0ZTY2ZTUyODkzYmUzMmQxZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CiBj
bGFzcyBJbWFnZURhdGE7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSA9IDA7CiAKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29weVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0g
ZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApp
bmRleCAyODgzNDhlNTJhMWVlM2ZiOWQxYTE3ZDc3NDY4NGQ2OWQ2YjQxMjM5Li44YjBkNzNlOGQ4
MjRmZGI2OWNmZjA2OThjODJmODlkMDkxODVhNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVj
dCYgcikKICAgICBtX3ByaXZhdGUtPnBhaW50KHAsIHIpOwogfQogCi1ib29sIE1lZGlhUGxheWVy
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNv
bnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDJhYjE1ODk5NWQ3ZDJlZWRhZjMwN2M2
Nzk1MmMzZmY2YmVkZjRjNzEuLmQyNTIwYWNiYmJiMWE2OThjYTNkNDA3MDY2MmYxZDNmZDk2ODcw
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJj
ZVByb3ZpZGVyOwogY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0w7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OwogY2xhc3MgTGVnYWN5Q0RNOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGUgZGVzdGluYXRpb24gdGV4dHVyZSBtYXkgbmVlZCB0byBiZSByZXNpemVkIHRvIHRvIHRoZSBk
aW1lbnNpb25zIG9mIHRoZSBzb3VyY2UgdGV4dHVyZSBvciByZS1kZWZpbmVkIHRvIHRoZSByZXF1
aXJlZCBpbnRlcm5hbEZvcm1hdC4KICAgICAvLyBUaGUgY3VycmVudCByZXN0cmljdGlvbnMgcmVx
dWlyZSB0aGF0IGZvcm1hdCBzaG91ZCBiZSBSR0Igb3IgUkdCQSwgdHlwZSBzaG91bGQgYmUgVU5T
SUdORURfQllURSBhbmQgbGV2ZWwgc2hvdWxkIGJlIDAuIEl0IG1heSBiZSBsaWZ0ZWQgaW4gdGhl
IGZ1dHVyZS4KIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlw
WSk7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CmluZGV4IDdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYuLmY5YjkyMDYx
OTBkNWFlZDA2ZDBkODhjMGM3NDE1Y2UxNjRkYTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjAsNyAr
MTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsg
cGFpbnQoYywgcik7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NH
TGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwCmluZGV4IDEzZmFmNWRiNjRmZmIyODZiZTZhZDk1Nzk1MDk1ZmNjOTNmMzMzOTQuLjFj
OGJjNDI1NTBmMWMxZDk1YzMwODJmNjczNzZhNTY5NTA2YmZhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5jcHAKQEAgLTE0OCwyMSArMTQ4LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5p
dGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVF
eHRlbnNpb25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhl
bHNFWFQoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0s
IEdDR0xzaXplaSwgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybWZ2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgZmxvYXQgKikKLXsKLSAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBH
Q0dMc2l6ZWksIGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJh
bWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwg
bG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQg
bG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lk
ZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgpAQCAt
NDYyLDYgKzQ0Nyw4IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2CiAgICAgICAgIHJldHVybjsK
IAogICAgIGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6
ZSwgZGF0YSk7CisgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1f
Y29udGV4dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworCiB9CiAKIHZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQpAQCAtNDcwLDYgKzQ1
Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRh
dGEpOworICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRl
eHQtPm1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xF
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCmluZGV4IDQ2YWFjOWYyMWVlMjdjYzc1YTA4Y2Y3YzFiNzVhMTBhZTQ1NzI4MjAuLjEy
NTY5NTY3YzE3YzkyNmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xP
YmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZl
cnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNjMsMTEgKzYzLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdD
R0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEVYVCBS
b2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lkIHJl
YWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2
b2lkICpkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQg
cHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKLQog
ICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9CiAgICAg
Ym9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KICAgICBib29sIGlzSW50
ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KQEAgLTg4LDM0ICs4MywzNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpw
YXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4
QXR0cmliZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NH
THNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2Uy
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykg
b3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRl
OwogICAgIHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9m
ZnNldCwgaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQg
eW9mZnNldCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLQotICAgIHZvaWQg
dGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9m
ZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2
b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKworICAgIHZvaWQgdGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQg
dGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBpbnQgKmRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAg
IHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkg
b3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAq
cGFyYW0pIG92ZXJyaWRlOwpAQCAtMTI0LDE2ICsxMTksMTYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEJv
b2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVy
cmlkZTsgLy8gTk9MSU5UCiAgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVs
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZS
b2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVh
ZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpy
b3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZs
b2F0ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6
ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAg
dm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAppbmRleCA1MDA5ODljYmE5NjVkN2NkYzk5ZDE1NTA2MDU5OGY3N2VhMDQ1YjQxLi5kZjZmMzRj
OWQ2MThkMDdhZGYyMTk4NWEzMDFjYmU0MTQyOTM5MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcApAQCAtMjA1MCwyNCArMjA1MCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMCiAgICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3Vu
ZFRleHR1cmUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0gICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXBy
ZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENv
dW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJy
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0
YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTIyODcsMTYgKzIyNjksNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LAogICAgIHJldHVybiBnbDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrTmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykK
LXsKLSAgICBSRUxFQVNFX0xPRyhXZWJHTCwgIlVzZSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJv
YnVzdEFOR0xFIGluc3RlYWQuIik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBVTlVTRURf
UEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAg
ICBVTlVTRURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsK
ICAgICBBU1NFUlQocHJvZ3JhbSk7CkBAIC0yNDU5LDM0ICsyNDMxLDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgUGwKICAgICBnbDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51
bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGRzdEJ5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNE
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVu
Z3RoKTsKLX0KLQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lk
KiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBV
TlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjkyMSw1OCArMjg2
NSw2IEBAIFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZv
cm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3Jt
YXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJu
YWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhl
aWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0Rh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGhPdmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9m
ZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2
ZWwpOwotICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
LSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsK
LSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURf
UEFSQU0oeG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzA2MSwyOSArMjk1
Myw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4
KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVT
RURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0o
d2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3Jt
YXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6YXNDVigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNzg5ZTI2ZjkyMWEx
YmZmMTdiOWQ0YjY3ZTczYTYxZGMwMGU4ZDVkYy4uZjcxMzEyNjVlY2M2ODNkMThjMjk1ODUxZDhi
ZWZkMzNkY2MxZTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjUzLDcgKzI1Myw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hh
bmdlKCk7CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
KyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCmluZGV4IDA3OGViYmE0MjhkNzNmNzJiMWQ4NGY2NWM2MTA0M2QzOGQ4
NjU0ODYuLjVmMGEyNDYwNDM2MTc4NjE5NGZhOGUwYzZjY2Q0YzYwMzI0Y2NhOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQpAQCAtNDIsOCArNDIsOCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNp
bXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIKICNpbXBvcnQgIkluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMuaCIKQEAgLTIzMjUsNyArMjMyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAK
IH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQs
IFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBv
dXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMTEyMjVjZWIzMTIyOTQ3OTFlNGU3NTYwNmM3
NDIyY2Q5MmY2ZTU5My4uMzA2NTRlMjY4ZGM0NGUyZTNhMDdlMTNkZmQwOTE1ZTA3N2UzZGY5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOworICAg
IGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBw
b3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gY2FsbGVk
IHdoZW4gdGhlIHJlbmRlcmluZyBzeXN0ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0IG9mIGFjY2Vs
ZXJhdGVkIHJlbmRlcmluZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGRi
NGQ0M2M1ZjBlODdhN2ZhMWYxODEzZGI5MDQ4MWY2MzMyMTdhMzMuLmI0MDI0YTkxNDhlMWFlMjVi
M2M5NDI3ODM4NDY5MmFiMDFhZWE2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAg
LTMzLDggKzMzLDggQEAKICNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUu
aCIKICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgpAQCAtNjIzLDcgKzYy
Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQog
Ci1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBv
dXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICAvLyBXZSBoYXZlIGJlZW4gYXNr
ZWQgdG8gcGFpbnQgaW50byBhIFdlYkdMIGNhbnZhcywgc28gdGFrZSB0aGF0IGFzIGEgc2lnbmFs
IHRvIGNyZWF0ZQogICAgIC8vIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9uLCBldmVuIGlmIHRoYXQg
bWVhbnMgdGhlIG5hdGl2ZSB2aWRlbyBjYW4ndCBhbHNvIGJlIGRpc3BsYXllZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4
IDExMTA4ZjkzYTY0Y2E0Mzc1NGE0YmM1OWEzZjIzNDBmMTdkNWE4M2EuLjgzNTM0M2I4ZTc5YjM3
NmI3ZjczZDNjNDM3NGNiNTdhZWZkYTJhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNp
bXBvcnQgIklPU3VyZmFjZS5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMLmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJT1N1cmZhY2VQb29sLmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCAzYTdhMDcyNjA3YmFiNWY2
MDk4NzI3MWFhOGU2M2E2YmVlMTRjZDNiLi40NGZmOTJlYTE0ZmVlZjUzMzllNTI2Mjk4MzQyNzNi
YjMwNjZiYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
Z2wvR0xDb250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcApAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKEVHTCkK
IAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0wuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1E
aXNwbGF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMC4uN2Uw
YWQ1NDc4Y2ExNzkxOWEwZTliMzMxOWNmZjQ2YzJmZmMxMDFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMxODIsNyArMzE4Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQotYm9v
bCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVj
dCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0g
b3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMGFiMmM2YzkxNGJmZTNjYWQ2MTI3
ZWQ5NjA2MmU3Mzc5MDhhZDEwOS4uZTAxNjE1YjBmM2EzNTBkNmYwNzUwODYyZTM2MGE2YjBjZGI3
NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApA
QCAtOTMsNyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJl
R0w7CiBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgSW50
U2l6ZTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI7
CkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVS
X0dMKQotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOworICAgIGJv
b2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDViZTVhOWQ2NzNiNmRhMDlkZjIzZDhi
NTI0ZmQ4MjNjYjZjODkzZGQuLmYxNWI3ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRj
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtOTcsNiArOTcs
ODggQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2Fm
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICNlbmRpZgogCiAKKyNpZiAhVVNFKEFOR0xF
KQorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9y
SW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQs
IEdDR0xlbnVtJiB0eXBlKQoreworI2RlZmluZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKGlu
dGVybmFsRm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJuYWxG
b3JtYXRNYWNybzogXAorICAgICAgICBmb3JtYXQgPSBmb3JtYXRNYWNybzsgXAorICAgICAgICB0
eXBlID0gdHlwZU1hY3JvOyBcCisgICAgICAgIGJyZWFrOworCisgICAgc3dpdGNoIChpbnRlcm5h
bEZvcm1hdCkgeworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdCLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBLCBS
R0JBLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShM
VU1JTkFOQ0VfQUxQSEEsIExVTUlOQU5DRV9BTFBIQSwgVU5TSUdORURfQllURSk7CisgICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoTFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lHTkVE
X0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBIQSwg
VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgsIFJF
RCwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhf
U05PUk0sIFJFRCwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2
RiwgUkVELCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
MzJGLCBSRUQsIEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOFVJ
LCBSRURfSU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUjhJLCBSRURfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUjE2VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsKKyAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVOU0lH
TkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVEX0lO
VEVHRVIsIElOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBSRywg
VU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4X1NO
T1JNLCBSRywgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkYs
IFJHLCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMy
RiwgUkcsIEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhVSSwg
UkdfSU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkc4SSwgUkdfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUkcxNlVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lHTkVE
X0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lOVEVH
RVIsIElOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdCLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOCwg
UkdCLCBVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
R0I1NjUsIFJHQiwgVU5TSUdORURfU0hPUlRfNV82XzUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQjhfU05PUk0sIFJHQiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoUjExRl9HMTFGX0IxMEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8xMUZf
MTFGX1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwgUkdC
LCBVTlNJR05FRF9JTlRfNV85XzlfOV9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQjE2RiwgUkdCLCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0IzMkYsIFJHQiwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQjhVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhJLCBSR0JfSU5URUdFUiwgQllURSk7CisgICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVOU0lH
TkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkksIFJH
Ql9JTlRFR0VSLCBTSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
MzJVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkdCMzJJLCBSR0JfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0JBOCwgUkdCQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoU1JHQjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9CWVRF
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdCQSwg
QllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdCQSwg
VU5TSUdORURfU0hPUlRfNV81XzVfMSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCQTQsIFJHQkEsIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFJHQjEwX0EyLCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8x
MF9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJHQkEs
IEhBTEZfRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkYs
IFJHQkEsIEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOFVJ
LCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRf
VFlQRV9DQVNFKFJHQkE4SSwgUkdCQV9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0IxMF9BMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2
VUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQkExNkksIFJHQkFfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkksIFJHQkFfSU5URUdFUiwgSU5UKTsKKyAgICAg
ICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJ
R05FRF9JTlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBP
TkVOVDE2LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwgVU5T
SUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NP
TVBPTkVOVDI0LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05FTlQs
IEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVOQ0lM
LCBERVBUSF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoREVQVEgyNF9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURf
SU5UXzI0XzgpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJGX1NU
RU5DSUw4LCBERVBUSF9TVEVOQ0lMLCBGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOwor
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQs
IEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lv
bnNHTDo6U1JHQl9BTFBIQV9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjdW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FT
RQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gIVVTRShBTkdMRSkKKworCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4
dFZpc2liaWxpdHkoYm9vbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5k
ZXggMjQ0Mjg5ZDViZWQyMGI5MGMwZTY2YzNjMzc1NDM1MTJmMjQ5MDlhYi4uNzc1ZjkwNDA2ZjQy
YTYwOTFkZGMzZmVhMWU1MGI3YzJiMGFlNGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKQEAgLTEyOSw3ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNo
YWRlckRpcmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCi0gICAgYm9v
bCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dCBhbGlnbm1lbnQgPSA0KSBmaW5hbDsKKyAgICAvLyBIZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRo
IHBpeGVsPT0wIGNhc2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6ZWQgdG8gMC4KKyAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiBubyBHTCBlcnJvciBpcyBzeW50aGVzaXplZC4KKyAgICAvLyBCeSBkZWZhdWx0
LCBhbGlnbm1lbnQgaXMgNCwgdGhlIE9wZW5HTCBkZWZhdWx0IHNldHRpbmcuCisgICAgYm9vbCB0
ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBh
bGlnbm1lbnQgPSA0KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QgZmluYWw7CkBAIC0xNjMsOCArMTY2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbG9yTWFz
ayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBH
Q0dMYm9vbGVhbiBhbHBoYSkgZmluYWw7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QpIGZpbmFsOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBmaW5h
bDsKKyNpZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisjZW5kaWYK
ICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKICAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgY3VsbEZhY2UoR0NH
TGVudW0gbW9kZSkgZmluYWw7CkBAIC0yOTMsNyArMjk4LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KSBmaW5hbDsKIAotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWln
aHQpOworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwogCiAg
ICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCBk
cmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7
CkBAIC0zMDcsMTEgKzMxMiwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyA9PT09PT09PT09IFdlYkdM
MiBlbnRyeSBwb2ludHMuCiAKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpIGZpbmFsOwotCisjaWYgIVVTRShBTkdMRSkK
KyAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBH
Q0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOworICAg
IHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9m
ZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpOworI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0
YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciBy
ZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQs
IEdDR0x1aW50IGxlbmd0aCkgZmluYWw7CisKICAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dM
Yml0ZmllbGQgYWNjZXNzKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpIGZpbmFsOwogCkBAIC00MDcsMTUgKzQxNCwxNiBAQCBwdWJsaWM6CiAKICAg
ICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrUGFyYW1ldGVyCi0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKIAotICAgIHZvaWQgY29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2
b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJy
aWRlKSBmaW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSk7CisjZW5kaWYKIAogICAgIHZvaWQgdW5pZm9ybTFm
dihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yZnYoR0NH
TGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CkBAIC00MzEsMTYgKzQzOSwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAKLSAgICB2
b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgZmluYWw7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KSBmaW5h
bDsKKyNpZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIHJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dM
dWludCBkc3RPZmZzZXQpOworI2VuZGlmCiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAg
IHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGlj
c0NvbnRleHQmKTsKIAotICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCk7Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsK
KyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVy
Q29tcG9zaXRlZCgpIGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4
dCgpOwogCkBAIC00NDgsMTkgKzQ1OCwxOSBAQCBwdWJsaWM6CiAgICAgLy8gcmVzZXQgbWV0aG9k
IGlzIHByZXNlbnQgdG8ga2VlcCBjYWxsaW5nIGNvZGUgc2ltcGxlciwgc28gaXQKICAgICAvLyBk
b2Vzbid0IGhhdmUgdG8ga25vdyB3aGljaCBidWZmZXJzIHdlcmUgYWxsb2NhdGVkLgogICAgIHZv
aWQgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKLSAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9D
bGVhcihHQ0dMYml0ZmllbGQpOwotICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xl
YXIoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQp
IGZpbmFsOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdm9pZCBz
aW11bGF0ZUNvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2Vk
KCkgZmluYWw7CiAKLSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKik7Ci0gICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9J
bWFnZURhdGEoKTsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKSBmaW5hbDsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpIGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUo
V0VCR0wyKQotICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSBmaW5hbDsK
KyAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBQTEFURk9STShNQUMpCkBAIC00ODcsMTAgKzQ5Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAK
ICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKLQotICAg
IC8vIFJlYWQgcmVhbCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBzeW50aGV0
aWMKLSAgICAvLyBlcnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3Ig
aXMgbW92ZWQuCi0gICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAg
ICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwogCiAgICAgLy8g
U3VwcG9ydCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdo
IG5vdAogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBz
dXBwb3J0ZWQgb24gdGhlCkBAIC01MTMsNiArNTIwLDEwIEBAIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CiAjZW5kaWYKIAorI2lmICFVU0UoQU5HTEUpCisg
ICAgc3RhdGljIGJvb2wgcG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKTsK
KyNlbmRpZiAvLyAhVVNFKEFOR0xFKQorCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0
aW9uID0gRGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNo
YXJlZENvbnRleHQgPSBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggOTg0ZjYyZDBiNTRkZDhhOGFlYTM5N2IwODE3N2ViOGI0
NmM5ZmY3MS4uYjBjMWYxZGZkNDNkNDE1MDQyN2ZmNTIxYWNmNjg0MzYyNzI0MDA1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yOTQzLDE0
ICsyOTQzLDYgQEAgR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1C
bG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0o
cG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBVTlVTRURfUEFS
QU0ocHJvZ3JhbSk7CkBAIC0yOTc1LDEwICsyOTY3LDYgQEAgR0NHTHVpbnQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFMKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDR0xlbnVt
LCBHQ0dMaW50KikKLXsKLX0KLQogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQogewogICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4
IDc5YTIxMTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUuLmUwOWFmMGRjMzJiYjFi
YmE1ZWJkODZlNGRjMDY3MGEwMmZmN2NkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKQEAgLTgwNSw3ICs4MDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDJhM2MyNjQ1NWNhNmY1NjVhZWM0MjM0OWIy
MTFiNTE4YTBlMjA3ODguLmYzNjM3MjUwOWVhOWU0ZjhlMWE3ZDhmN2Y1Mjc2M2MzNGYxMWU0YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwg
R0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7
CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414201</attachid>
            <date>2020-11-16 01:22:22 -0800</date>
            <delta_ts>2020-11-16 04:57:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218333-20201116112219.patch</filename>
            <type>text/plain</type>
            <size>173510</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmOGFlNmIyM2Y0MTQ3
NGRjYjQxYTVkYTQzNDY4ZjM5N2E3MjBjNS4uNTg0YWYwMDZmZDM3ZGQxMmM5MmE5MzUxMDc3MzBj
ZTg2Y2QzN2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMC0xMS0xNiAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFj
dG9yIGZvciBXZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIENoYW5nZSBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgR3JhcGhpY3NDb250ZXh0R0wgYWJzdHJhY3QgY2xh
c3MKKyAgICAgICAgaW5zdGVhZCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjb25jcmV0ZSBj
bGFzcy4gVGhpcyBhbGxvd3MKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgV2ViR0wgaW4gR3B1
UHJvY2Vzcywgd2hlcmUgdGhlIHJlbW90ZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpcyBvbmUg
R3JhcGhpY3NDb250ZXh0R0wgc3ViY2xhc3MgYW5kIHRoZSBhY3R1YWwgZHJhd2luZyBpcyBkb25l
LAorICAgICAgICBlaXRoZXIgaW4gR1BVUCBhbmQgbm9uLUdQVVAgY2FzZXMgYnkgdGhlIG9sZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC4KKworICAgICAgICBUaGUgR1BVUCBzdXBwb3J0cyBvbmx5
IEFOR0xFIGZsYXZvciBvZiB0aGUgV2ViR0wgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMKKyAgICAg
ICAgYmVjYXVzZSBBTkdMRSBjb250YWlucyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGRlc2lnbmVk
IHRvIGJlIG1vcmUgc2VjdXJlCisgICAgICAgIGZvciB0aGUgY3Jvc3MtcHJvY2VzcyBlbnZpcm9u
bWVudC4gVGhpcyBpcyB3aHkgR3JhcGhpY3NDb250ZXh0R0wKKyAgICAgICAgaW50ZXJmYWNlIGlz
IG1vZGlmaWVkIHRvIGNvbnRhaW4gb25seSBmdW5jdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvcgor
ICAgICAgICBBTkdMRS4gRnVuY3Rpb25zIHVuaW1wbGVtZXRlZCBieSBBTkdMRSBhcmUgcmVtb3Zl
ZCBmcm9tIHRoZSBpbnRlcmZhY2UuCisgICAgICAgIENhbGxpbmcgV2ViR0wgY29kZSBpbnNpZGUg
I2lmZGVmICFVU0UoQU5HTEUpIHdpbGwgZG93bmNhc3QgdGhlIGludGVyZmFjZQorICAgICAgICB0
byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBkbyBu
b3QgbWFrZSBzZW5zZQorICAgICAgICB0byBleGlzdCBpbiB0aGUgQU5HTEUgdmVyc2lvbi4KKwor
ICAgICAgICBTbWFsbCBhbW91bnQgb2YgZnVuY3Rpb25zIGluIEdyYXBoaWNzQ29udGV4dEdMIGlu
dGVyZmFjZSBhcmUgcmUtb3JkZXJlZAorICAgICAgICB0byBlbmFibGUgbGF0ZXIgSVBDIGF1dG8t
Z2VuZXJhdGlvbiBmcm9tIHRoZSBpbnRlcmZhY2UuCisKKyAgICAgICAgRXh0ZW5zaW9uc0dMLmgg
aXMgcmVmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIFdlYktpdCBzdHlsZSB0byBlbmFibGUgbGF0ZXIK
KyAgICAgICAgSVBDIGF1dG8tZ2VuZXJhdGlvbiBmcm9tIHRoZSBpbnRlcmZhY2UuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxs
c2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdEVudGVyRnVsbHNjcmVlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQWN0aXZlSW5mby5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEdy
b3VwOjpnZXRBR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEdyb3VwLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dE9iamVjdDo6Z2V0QUdyYXBoaWNz
Q29udGV4dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25B
Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6ZGVsZXRlT2JqZWN0
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0
YWNobWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmRlbGV0ZU9iamVjdEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlSW5mb0lmTmVlZGVkKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1
ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUXVlcnk6OmRlbGV0ZU9iamVjdEltcGwp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUXVlcnkuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNIaWdoUGVyZm9ybWFuY2VDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlh
bGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlSW5kZXhBcnJheVByZWNp
c2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVEcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhJbWFn
ZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzVGV4
SW50ZXJuYWxGb3JtYXRDb2xvckJ1ZmZlckNvbWJpbmF0aW9uVmFsaWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliZnZJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRWZXJ0ZXhBdHRy
aWIwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJl
UmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpncmFwaGljc0NvbnRleHRHTCBjb25zdCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2FtcGxlcjo6
ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xTaGFkZXI6OmRlbGV0ZU9iamVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNp
b25Gb3JtYXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYXJlZE9iamVjdDo6Z2V0QUdyYXBoaWNzQ29udGV4
dEdMIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFN5bmM6OmRlbGV0ZU9iamVjdEltcGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
U3luYy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OmRlbGV0ZU9iamVjdEltcGwpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVk
YmFjazo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjay5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6ZGVs
ZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmpl
Y3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0Q29u
dmVydGVyOjpjb252ZXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpjb250ZXh0QXR0cmlidXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6c2V0Q29udGV4dEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlh
RW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6Om5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNh
bmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpmaWxlU2l6ZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4
dGVuc2lvbnNHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xF
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmFjY2Vzc0xvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybVNldFZpc2libGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1EdXJhdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTWF4VGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTWF4
VGltZUxvYWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjphc3NldFN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0
eSk6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNr
c0FuZE9sZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWVk
aWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmZsdXNoQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25zRm9yQmlw
bGFuYXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwb3NzaWJsZUZv
cm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0
dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlVW5pZm9ybUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om9yaWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1i
b2xDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5tYW5nbGVkSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTaGFkZXJTb3VyY2UpOgorCiAyMDIwLTExLTE2ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b11bR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJdIFN1cHBvcnQgcm91bmRlZCByZWN0IGNsaXBw
aW5nIGZvciBiYWNrZHJvcC1maWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2JhNjA0ZjlkMDRkMTBmYmY2ZmI2
NDAyZDkyOGFjOGVhMmQ4ZmQyYy4uMDcwMzA4ZDMzMDdlODEyMjQxYzU1Mjg0MTE1NDA4MGY1NmQ5
ZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMS0xNiAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsIHJlZmFjdG9yIGZvciBX
ZWJHTCBpbXBsZW1lbnRhdGlvbiB0byB1c2Ugb25seSBHcmFwaGljc0NvbnRleHRHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIENoYW5nZSBNZWRpYVBsYXll
clByaXZhdGUgdG8gdXNlIEdyYXBoaWNzQ29udGV4dEdMIGFic3RyYWN0IGNsYXNzCisgICAgICAg
IGluc3RlYWQgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY29uY3JldGUgY2xhc3MsIHNpbmNl
IHRoZQorICAgICAgICBjYWxsaW5nIGNvZGUgaXMgZG9pbmcgdGhlIHNhbWUgY2hhbmdlLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorCiAyMDIwLTExLTE1ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluaXRpYWwgaW1wbGVtZW50YXRp
b24gb2YgRE9NIHJlbmRlcmluZyB2aWEgdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBlMjQ0MjQyNzg0ZDA1MDFjZGM0YmFkYTQ0Yjc1
NjNlMTA2ZGIxZWEzLi42NDAyODg1N2Q2NGUwZjQzNjdjNTZjNzc5OTQ5ZTNkZDJiMDUxOWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMwMCw3ICszMDAs
NyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1l
ZGlhKCpwbGF5ZXIsIGRlc3RSZWN0KTsKIH0KIAotYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIEhUTUxWaWRl
b0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAg
ICBpZiAoIXBsYXllcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDgxZjA4M2E1MGM2NDc2MmJlMjk1YTNhNjMxMjQ0NmQ2
YmYyYjkzNjMuLmRjYThhYWFiNTc3NzM4NzZhNGU1Mjk2MTZlYjkyZjBiZGVmYWU4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlm
IHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KLSAgICBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZERpc3BsYXlQb3N0
ZXJJbWFnZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZlMGNmZjY4M2Y4N2YyODM2YzIwZDRi
ZDEzMTFmNWRkZjhmMmIzNzUuLjgwNzNhZGMxMTE0OTIxNWY1NmQxZTQ1ZGE2ODRkZTgyODU4MTdl
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFz
CiAgICAgcmV0dXJuIHJlbmRlcmluZ0NvbnRleHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJH
TDJSZW5kZXJpbmdDb250ZXh0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFz
QmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dD4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZh
c0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmIGNvbnRleHQsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIGF1dG8gcmVuZGVyaW5nQ29u
dGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsK
ICAgICAvLyBUaGlzIGlzIHZpcnR1YWwgYW5kIGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3Ry
dWN0b3IuCkBAIC0xMDUsNyArMTA1LDcgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMsIEdyYXBoaWNzQ29udGUKIHsKIH0K
IAotV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNC
YXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhp
Y3NDb250ZXh0R0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMpCiAgICAgOiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKGNhbnZhcywgV1RGTW92ZShj
b250ZXh0KSwgYXR0cmlidXRlcykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IGJlY2QyOTNiMWQ2ZDA2ZWI1ODJhNWUwYTQxMzAwZjJjZGFlOTI1ZGUuLmI4YjAzNmU0NDc2
YTRmMTVkNGU1MDY3NThjNTc1OTM1ZTBhMDYyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQpOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0Nv
bnRleHRHTD4mJiwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKIAogICAgIH5XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0KCk7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzKTsKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
LCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyk7CisgICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBo
aWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogCiAgICAgYm9v
bCBpc1dlYkdMMigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaAppbmRleCBhZTY5NTQyZWY3NmYwZGVl
MjRiN2EzMjlkZmMyMWE0ZjlhOGU5NjliLi40YzU4NDY1N2I2Y2VlYmIyMTEzYjU1YWE4ZDBjNzA3
OGExYTMzMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFj
dGl2ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUlu
Zm8uaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRl
eCAxZWNjM2NhNGZmY2YxZTdlYWYxZWU5ZWRkMzJlZGI5MjFlMmUzMDNiLi43YjU3N2E0OTQzMzJi
YmUwNTgxYTliZWM4MzgzNWJiOGE0M2JhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFdlYkdMQnVmZmVyOjp+V2ViR0xC
dWZmZXIoKQogICAgIHJ1bkRlc3RydWN0b3IoKTsKIH0KIAotdm9pZCBXZWJHTEJ1ZmZlcjo6ZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTEJ1ZmZl
cjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4
dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQz
ZC0+ZGVsZXRlQnVmZmVyKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuaAppbmRleCAwNWE4MGY5M2JmZDFkNDQ4ZDUyZjA4YTY2MGZmNjZiYzlhYzdkNmQy
Li4xZTZiYTc4NjM5ZmU1NzM1YWRiOWU3YWFhZjZkODRhY2UyNTU3Yzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
LSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgR0NHTGVudW0g
bV90YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEdyb3VwLmNwcAppbmRleCAzYTgyMGRlYjg1YjQ1N2I0MDAyNDM2MGY3MDRhMGM0YTk5
YzA0OTRmLi5kNmFiNTE2YWUyZmEyYTZmNzk2MjliNDJiNmY4MWYwMGNmODZiYWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhcmVkT2Jq
ZWN0LmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBXZWJHTENvbnRleHRHcm91cDo6aGFzQUNv
bnRleHQoKSBjb25zdAogICAgIHJldHVybiAhbV9jb250ZXh0cy5pc0VtcHR5KCk7CiB9CiAKLUdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBXZWJHTENvbnRleHRHcm91cDo6Z2V0QUdyYXBoaWNzQ29u
dGV4dEdMKCkKK0dyYXBoaWNzQ29udGV4dEdMJiBXZWJHTENvbnRleHRHcm91cDo6Z2V0QUdyYXBo
aWNzQ29udGV4dEdMKCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dHMuaXNFbXB0eSgpKTsKICAg
ICByZXR1cm4gKigqbV9jb250ZXh0cy5iZWdpbigpKS0+Z3JhcGhpY3NDb250ZXh0R0woKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5oCmluZGV4IDUy
MTIzMGRlNWE4ZDhkMjUxYTU3MWQ2YjdhYzQzOTQ5YTVhNjRmZGUuLjg1NWNlNzIzOTg2ZmUwNzc1
OThmMjQ2ODFhZTgwODZjODFlZGZhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmKTsKIAogICAgIGJvb2wgaGFzQUNvbnRl
eHQoKSBjb25zdDsKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgZ2V0QUdyYXBoaWNzQ29u
dGV4dEdMKCk7CisgICAgR3JhcGhpY3NDb250ZXh0R0wmIGdldEFHcmFwaGljc0NvbnRleHRHTCgp
OwogICAgIExvY2smIG9iamVjdEdyYXBoTG9ja0ZvckFDb250ZXh0KCk7CiAKICAgICB2b2lkIGxv
c2VDb250ZXh0R3JvdXAoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdENvbnRleHRNb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
Y3BwCmluZGV4IGE5Yjg0MzA1N2E5NjVmOTc5NzA1NDVhODdhNzRmYTc3OWYyYWM5MjAuLjdjOTE5
ZjJiNjY1NmI2N2IxNmNhNjM0MGIwYjJhNGI2NDVkMDQ2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtNjEsNyArNjEsNyBA
QCBXVEY6OkxvY2smIFdlYkdMQ29udGV4dE9iamVjdDo6b2JqZWN0R3JhcGhMb2NrRm9yQ29udGV4
dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCk7CiB9CiAKLUdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBXZWJHTENvbnRleHRPYmplY3Q6OmdldEFHcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0CitHcmFwaGljc0NvbnRleHRHTCogV2ViR0xDb250ZXh0T2JqZWN0OjpnZXRB
R3JhcGhpY3NDb250ZXh0R0woKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQgPyBtX2Nv
bnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAppbmRleCAzODM1ZDgwYWE3YTk3
MWY2OTMxOGZjZGVjMTQwNzRlZTBlMjUzYzM1Li5kYmZkZDZiZmMwZWY0NGViODgyZWI5YzU5YjAw
OGQyOTgxMTI2NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbnRleHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRPYmplY3QuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7
CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogCiAvLyBXZWJHTENvbnRleHRPYmpl
Y3QgdGhlIGJhc2UgY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBhcmUgb3duZWQgYnkgYSBzcGVjaWZp
YwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQ7
CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGdldEFHcmFwaGljc0NvbnRl
eHRHTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBnZXRBR3JhcGhp
Y3NDb250ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggYWYyZWQ5MDk2YzFiZWVmOGIwMTYyMDVm
MjUwOWU1OWExMWM1NGNmZi4uYTY5MTUzMjNhODQ5NDRlNTliYzE3MmQzZjViOTQzMzcyNjgxNDM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJl
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMRGVwdGhUZXh0
dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQorYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dEdMJiBjb250ZXh0KQogewogICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGNvbnRleHQuZ2V0RXh0ZW5zaW9ucygpOwogICAgIHJldHVybiBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAppbmRleCA2MTYxMDBhN2FiMDhiMThiMWJkOWE5
YWM4MzZiY2U5NzMyZGI4MTI0Li5lZTIwYzJlYjk3YmJkMDZmZDA1ZjgyZGYyOTE5ZDZjOTc0M2I5
ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJl
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhUZXh0
dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlcHRo
VGV4dHVyZSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dEdMJik7
CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IGI1
YzQxMTI2MWExZDFkMDU4N2UzN2MzNjYwODJjZWJjNGUwY2M5YzkuLjljYjBmODU2YjU4ZTEwZTZm
NDczMDllNmZlM2MxMGUyNjcwOTcxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2ViR0xEcmF3
QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBidWZmZXJz
KQogLy8gc3RhdGljCiBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWly
ZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIHdlYmdsQ29udGV4dCkKIHsKLSAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCA9IHdlYmdsQ29udGV4dC5ncmFwaGljc0Nv
bnRleHRHTCgpOworICAgIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0
LmdyYXBoaWNzQ29udGV4dEdMKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciB3ZSBt
YWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCiAgICAgR0NHTGludCBt
YXhEcmF3QnVmZmVycyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCmluZGV4IGZlMWE4N2U1YmUyYjBkMTkzOGJkZDQ2N2ExM2Y3YWZmMjRl
NzQyOGUuLjAxYTAyZjUxZDcyZDg5MmVhYjhlOGMyNzA1MDZjYmZjNGU3MzY1NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC0zNyw2
ICszNyw5IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+
CiAKKyNpZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CisjZW5kaWYKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTU3LDkgKzYw
LDkgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2
b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgb25EZXRhY2hlZChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKikgb3ZlcnJpZGU7
Ci0gICAgICAgIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCB1bmF0
dGFjaChHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRH
TCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBK
U0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAKICAgICAgICAgV2ViR0xSZW5kZXJidWZmZXJB
dHRhY2htZW50KCkgeyB9OwpAQCAtMTIwLDE4ICsxMjMsMTggQEAgbmFtZXNwYWNlIHsKICAgICAg
ICAgICAgIG1fcmVuZGVyYnVmZmVyLT5zZXRJbml0aWFsaXplZCgpOwogICAgIH0KIAotICAgIHZv
aWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0KQorICAgIHZv
aWQgV2ViR0xSZW5kZXJidWZmZXJBdHRhY2htZW50OjpvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0KQogICAgIHsKICAgICAg
ICAgbV9yZW5kZXJidWZmZXItPm9uRGV0YWNoZWQobG9ja2VyLCBjb250ZXh0KTsKICAgICB9CiAK
LSAgICB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudDo6YXR0YWNoKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1l
bnQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
KQogICAgIHsKICAgICAgICAgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QgPSBvYmplY3RPclplcm8o
bV9yZW5kZXJidWZmZXIuZ2V0KCkpOwogICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZG
RVIsIG9iamVjdCk7CiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0dGFjaG1l
bnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlckF0
dGFjaG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCiAgICAgewogI2lmICFVU0UoQU5HTEUpCiAgICAg
ICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQpIHsKQEAgLTE2Myw5ICsxNjYsOSBAQCBuYW1lc3BhY2UgewogICAgICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92
ZXJyaWRlOwotICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCBvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290
cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAog
ICAgICAgICBXZWJHTFRleHR1cmVBdHRhY2htZW50KCkgeyB9OwpAQCAtMjMyLDEyICsyMzUsMTIg
QEAgbmFtZXNwYWNlIHsKICAgICAgICAgLy8gVGV4dHVyZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW5p
dGlhbGl6ZWQuCiAgICAgfQogCi0gICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50OjpvbkRl
dGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBjb250ZXh0KQorICAgIHZvaWQgV2ViR0xUZXh0dXJlQXR0YWNobWVudDo6b25EZXRhY2hl
ZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4
dCkKICAgICB7CiAgICAgICAgIG1fdGV4dHVyZS0+b25EZXRhY2hlZChsb2NrZXIsIGNvbnRleHQp
OwogICAgIH0KIAotICAgIHZvaWQgV2ViR0xUZXh0dXJlQXR0YWNobWVudDo6YXR0YWNoKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRhY2htZW50OjphdHRhY2goR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVu
dCkKICAgICB7CiAgICAgICAgIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJv
KG1fdGV4dHVyZS5nZXQoKSk7CiAgICAgICAgIGlmIChtX3RhcmdldCA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8zRCB8fCBtX3RhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV8yRF9BUlJBWSkKQEAgLTI0Niw3ICsyNDksNyBAQCBuYW1lc3BhY2UgewogICAgICAgICAgICAg
Y29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCBtX3Rhcmdl
dCwgb2JqZWN0LCBtX2xldmVsKTsKICAgICB9CiAKLSAgICB2b2lkIFdlYkdMVGV4dHVyZUF0dGFj
aG1lbnQ6OnVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpCisgICAgdm9pZCBXZWJHTFRleHR1cmVBdHRh
Y2htZW50Ojp1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KQogICAgIHsKICNpZiBVU0UoQU5HTEUpCiAgICAgICAg
IC8vIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCBhdHRhY2htZW50IGlzIHZhbGlkIGluIEVT
My4KQEAgLTU0Nyw3ICs1NTAsNyBAQCBHQ0dMZW51bSBXZWJHTEZyYW1lYnVmZmVyOjpjaGVja1N0
YXR1cyhjb25zdCBjaGFyKiogcmVhc29uKSBjb25zdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEU7CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6
b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioq
IHJlYXNvbikKK2Jvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0
R0wqIGNvbnRleHQzZCwgY29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoY2hlY2tTdGF0
dXMocmVhc29uKSAhPSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU2Myw3ICs1NjYsNyBAQCBib29sIFdlYkdMRnJhbWVi
dWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhdHRhY2htZW50ICYm
IGF0dGFjaG1lbnQtPmlzVmFsaWQoKTsKIH0KIAotdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJH
TEZyYW1lYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2Nr
ZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0
KQogewogICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IG1fYXR0YWNobWVudHMudmFsdWVzKCkp
CiAgICAgICAgIGF0dGFjaG1lbnQtPm9uRGV0YWNoZWQobG9ja2VyLCBjb250ZXh0M2QpOwpAQCAt
NTcyLDcgKzU3NSw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvCiB9CiAKICNpZiAhVVNFKEFO
R0xFKQotYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGczZCwgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jvb2wgV2ViR0xG
cmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4dEdMKiBnM2Qs
IGNvbnN0IGNoYXIqKiByZWFzb24pCiB7CiAgICAgaWYgKCFjb250ZXh0KCkpIHsKICAgICAgICAg
Ly8gQ29udGV4dCBoYXMgYmVlbiBkZWxldGVkIC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKaW5kZXgg
Zjg4YjA2YTVlNGM2NDUyNWMyYjI2MmZkOWI4ZTM5MmE5OTA1ZDcyMy4uYTE0MGRiZDNiZTAyOWVi
ZjgyYjA5Y2I5OTFhMmFlYWYxNzY4ZDE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRnJhbWVidWZmZXIuaApAQCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNJbml0aWFsaXplZCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEluaXRp
YWxpemVkKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVu
YXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFjaGVkKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gYXR0YWNobWVudCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdW5hdHRhY2go
R3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBKU0M6OlNsb3RWaXNpdG9yJikgPSAwOwogCiAgICAgcHJv
dGVjdGVkOgpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlm
IHRoZSBmcmFtZWJ1ZmZlciBpcyBpbmNvbXBsZXRlOyBvdGhlcndpc2UgaW5pdGlhbGl6ZQogICAg
IC8vIHRoZSBidWZmZXJzIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIGluaXRpYWxpemVkIGFuZAogICAg
IC8vIG5lZWRUb0luaXRpYWxpemVBdHRhY2htZW50cyBpcyB0cnVlLgotICAgIGJvb2wgb25BY2Nl
c3MoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBi
b29sIG9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dEdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CiAK
ICAgICAvLyBTb2Z0d2FyZSB2ZXJzaW9uIG9mIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygpLCBl
eGNlcHQgdGhhdCB3aGVuCiAgICAgLy8gRlJBTUVCVUZGRVJfQ09NUExFVEUgaXMgcmV0dXJuZWQs
IGl0IGlzIHN0aWxsIHBvc3NpYmxlIGZvcgpAQCAtMTE5LDEzICsxMTksMTMgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICBXZWJH
TEF0dGFjaG1lbnQqIGdldEF0dGFjaG1lbnQoR0NHTGVudW0pIGNvbnN0OwogCiAjaWYgIVVTRShB
TkdMRSkKICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0ZS4K
LSAgICBib29sIGluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHRHTE9wZW5HTCos
IGNvbnN0IGNoYXIqKiByZWFzb24pOworICAgIGJvb2wgaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdy
YXBoaWNzQ29udGV4dEdMKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CiAjZW5kaWYKIAogICAgIC8v
IENoZWNrIGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBjdXJyZW50bHkgYm91bmQgdG8gdGhlIGdpdmVu
IHRhcmdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAppbmRl
eCBhYjVjMTRmNTZiMTkyOGIxNWVlZDdmNmY1NjEzMDRkMjA3ZGFhODMwLi4xOTE3ODZhYjk2OGJj
NzA0NzVjM2NmYzQ3NDRjN2ZkOTYwZTcxNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xPYmplY3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1
bkRlc3RydWN0b3IoKQogICAgIH0KIH0KIAotdm9pZCBXZWJHTE9iamVjdDo6ZGVsZXRlT2JqZWN0
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBj
b250ZXh0M2QpCit2b2lkIFdlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsKICAgICBtX2Rl
bGV0ZWQgPSB0cnVlOwogICAgIGlmICghbV9vYmplY3QpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
V2ViR0xPYmplY3Q6OmRldGFjaCgpCiAgICAgbV9hdHRhY2htZW50Q291bnQgPSAwOyAvLyBNYWtl
IHN1cmUgT3BlbkdMIHJlc291cmNlIGlzIGRlbGV0ZWQuCiB9CiAKLXZvaWQgV2ViR0xPYmplY3Q6
Om9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqIGNvbnRleHQzZCkKK3ZvaWQgV2ViR0xPYmplY3Q6Om9uRGV0YWNoZWQoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCkKIHsK
ICAgICBpZiAobV9hdHRhY2htZW50Q291bnQpCiAgICAgICAgIC0tbV9hdHRhY2htZW50Q291bnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaAppbmRleCBmMGFhMjEzN2Ez
ZWFlNWY5N2Y4YWQ5YmI5MWQ5MDMzZTAwOWYxNmExLi5jYWQ0NzljZTI3NzEwYzg5NDEzZWZkOWRh
ZGM2Y2JjMzgzZGQyZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0
LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTG9jazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdM
OwogY2xhc3MgV2ViR0xDb250ZXh0R3JvdXA7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOwogCkBAIC01MywxMCArNTMsMTAgQEAgcHVibGljOgogICAgIC8vIFRoZSBBYnN0cmFjdExv
Y2tlciBhcmd1bWVudCBlbmZvcmNlcyBhdCBjb21waWxlIHRpbWUgdGhhdCB0aGUgb2JqZWN0R3Jh
cGhMb2NrCiAgICAgLy8gaXMgaGVsZC4gVGhpcyBpc24ndCBuZWNlc3NhcnkgZm9yIGFsbCBvYmpl
Y3QgdHlwZXMsIGJ1dCBlbm91Z2ggb2YgdGhlbSB0aGF0CiAgICAgLy8gaXQncyBkb25lIGZvciBh
bGwgb2YgdGhlbS4KLSAgICB2b2lkIGRlbGV0ZU9iamVjdChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdChj
b25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIHZv
aWQgb25BdHRhY2hlZCgpIHsgKyttX2F0dGFjaG1lbnRDb3VudDsgfQotICAgIHZvaWQgb25EZXRh
Y2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
KTsKKyAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMKik7CiAKICAgICAvLyBUaGlzIGluZGljYXRlcyB3aGV0aGVyIHRoZSBjbGll
bnQgc2lkZSBpc3N1ZSBhIGRlbGV0ZSBjYWxsIGFscmVhZHksIG5vdAogICAgIC8vIHdoZXRoZXIg
dGhlIE9wZW5HTCByZXNvdXJjZSBpcyBkZWxldGVkLgpAQCAtODIsMTMgKzgyLDEzIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJ1bkRlc3RydWN0b3IoKTsKIAogICAgIC8vIGRlbGV0ZU9iamVjdElt
cGwgc2hvdWxkIGJlIG9ubHkgY2FsbGVkIG9uY2UgdG8gZGVsZXRlIHRoZSBPcGVuR0wgcmVzb3Vy
Y2UuCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBoYXNHcm91cE9yQ29udGV4dCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
Q29udGV4dEdMKiBnZXRBR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6
CiAgICAgUGxhdGZvcm1HTE9iamVjdCBtX29iamVjdCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IDUwNjYwYzc1YzUwYWYxM2M1OTQ1MTIx
NThkZDVjYmEzMTIzN2ZkZDQuLmM4YzNiODIyNjUyNTNjMGUwNGVlMDFhNmI0MTI5YzljNWYxODA1
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAt
MzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKKyNpZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIYXNoTWFw
PFdlYkdMUHJvZ3JhbSosIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqPiYgV2ViR0xQcm9ncmFt
OjppbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCkBAIC05NSw3ICs5OSw3IEBAIHZvaWQgV2Vi
R0xQcm9ncmFtOjpjb250ZXh0RGVzdHJveWVkKCkKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCi12b2lkIFdlYkdMUHJvZ3JhbTo6ZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iaikKK3ZvaWQgV2ViR0xQcm9n
cmFtOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqKQogewogICAgIGNv
bnRleHQzZC0+ZGVsZXRlUHJvZ3JhbShvYmopOwogICAgIGlmIChtX3ZlcnRleFNoYWRlcikgewpA
QCAtMjA4LDcgKzIxMiw3IEBAIHZvaWQgV2ViR0xQcm9ncmFtOjphZGRNZW1iZXJzVG9PcGFxdWVS
b290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpTQzo6U2xvdFZpc2l0CiAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KG1fZnJhZ21lbnRTaGFkZXIuZ2V0KCkpOwogfQogCi12b2lkIFdlYkdMUHJv
Z3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQzZCkKK3ZvaWQgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9u
cyhHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkKQogewogICAgIG1fYWN0aXZlQXR0cmliTG9j
YXRpb25zLmNsZWFyKCk7CiAKQEAgLTIxNyw3ICsyMjEsMTEgQEAgdm9pZCBXZWJHTFByb2dyYW06
OmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0M2QKICAgICBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9ucy5yZXNpemUoc3RhdGljX2Nhc3Q8c2l6
ZV90PihudW1BdHRyaWJzKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdHRyaWJzOyAr
K2kpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gaW5mbzsKLSAgICAg
ICAgY29udGV4dDNkLT5nZXRBY3RpdmVBdHRyaWJJbXBsKG9iamVjdCgpLCBpLCBpbmZvKTsKKyNp
ZiBVU0UoQU5HTEUpCisgICAgICAgIGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0cmliKG9iamVjdCgp
LCBpLCBpbmZvKTsKKyNlbHNlCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKj4oY29udGV4dDNkKS0+Z2V0QWN0aXZlQXR0cmliSW1wbChvYmplY3QoKSwgaSwgaW5m
byk7CisjZW5kaWYKICAgICAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnNbaV0gPSBjb250ZXh0
M2QtPmdldEF0dHJpYkxvY2F0aW9uKG9iamVjdCgpLCBpbmZvLm5hbWUpOwogICAgIH0KIH0KQEAg
LTIzMCw3ICsyMzgsNyBAQCB2b2lkIFdlYkdMUHJvZ3JhbTo6Y2FjaGVJbmZvSWZOZWVkZWQoKQog
ICAgIGlmICghb2JqZWN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0ID0gZ2V0QUdyYXBoaWNzQ29udGV4dEdMKCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQgPSBnZXRBR3JhcGhpY3NDb250ZXh0R0woKTsKICAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBHQ0dMaW50IGxpbmtTdGF0dXMgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaAppbmRleCA4ZjcwZDBkMmIw
ZTQ3NTVmNTJmNGVhOWEzYmJkYzQ5ZDg0Mzg4MzM3Li41YTM1MGNiMTNhZjgyNjk0MTUxYzY2MDA5
YjBhMmM2NzI1YmRlZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaApAQCAtOTMsOSArOTMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMUHJvZ3Jh
bShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xP
YmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCopOworICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqKTsKICAgICB2b2lkIGNhY2hlSW5mb0lmTmVlZGVkKCk7
CiAKICAgICBWZWN0b3I8R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IDE2NjIwYmQ4ZDg1ODI0Yjk1
ZTU3MzhkNTYwMjVmMTFhOWNiZWY4NjAuLjYxMjVkY2JmNGE4NDhiOTk5N2U3ZGNiZGViYjNkYjJk
ZWM1ZjA3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVl
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIFdlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0R0woKS0+Y3Jl
YXRlUXVlcnkoKSk7CiB9CiAKLXZvaWQgV2ViR0xRdWVyeTo6ZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBs
YXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFF1ZXJ5OjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxh
dGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dDNkLT5kZWxldGVRdWVyeShvYmpl
Y3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDVhNmMw
MzYxYTU5ODNiNzJlNGI0NmY4ZTgyNDk4Y2VjNjE5ZGUxNjUuLjk5MmY3Yzg3OGU4ODA4OGU0M2Fk
YzE3ZGY5MjE2ZDk1MmFmMTk3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1
ZXJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRl
T2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIG1faXNSZXN1bHRBdmFpbGFibGUg
eyBmYWxzZSB9OwogICAgIEdDR0xlbnVtIG1fdGFyZ2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCmluZGV4IGQ0MGQ0ZTBiODU2
MWFmNTViZWZhZTdlNTEyZjAwNjE0MjUxMDk3ZjQuLmZkZTk5OThlMGZhMTc4OWM2MGQ3OGY4YjRj
MWU3ZWZkNDY3ZmIyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6Oldl
YkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBzZXRP
YmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xP
YmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRm
b3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlUmVuZGVyYnVmZmVy
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaAppbmRleCA0YTdmYTZjOWEyMzYxMmU0MWQyMzVkZWRhNGRjYzEwYzQyY2VjMDcxLi4x
MjRiNDM4Y2M1OWNmZGVjZjNjYzk0ZGY1MmIxNjgzYjEwY2Y0OWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1JlbmRlcmJ1ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggMzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0ZjM1OTE3NjZkMmIw
NC4uZDJmYWMyMDM2MjQ5OTU4NWUwZDUxNTU2Y2M1Y2E0ZTNhYWMzM2RhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmCiAgICAgcmV0dXJuIHJlbmRl
cmluZ0NvbnRleHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzKQorc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3Jh
cGhpY3NDb250ZXh0R0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiB7CiAgICAgYXV0byByZW5kZXJpbmdDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4obmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dChjYW52YXMs
IFdURk1vdmUoY29udGV4dCksIGF0dHJpYnV0ZXMpKTsKICAgICAvLyBUaGlzIGlzIHZpcnR1YWwg
YW5kIGNhbid0IGJlIGNhbGxlZCBpbiB0aGUgY29uc3RydWN0b3IuCkBAIC0xMDUsNyArMTA1LDcg
QEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFz
ZSYgY2FudmFzLCBHcmFwaGljc0NvbnRleHQKIHsKIH0KIAotV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCitXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJiBjYW52YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTD4mJiBjb250ZXh0LCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICA6IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UoY2FudmFzLCBXVEZNb3ZlKGNvbnRleHQpLCBhdHRyaWJ1dGVzKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDk0NWQ0YmIxMDUxM2QyZGI0ZjVhNDNlOTQ5
MTdhNjgyMWRiMjYyYjcuLmE3MTBhMGYxZTYyOTgyZWIyMGMwNzk1ODlmZTY1NDJmZWVlY2ZmZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBmaW5h
bCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJiwg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+JiYsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNC
YXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMpOwogCiAgICAgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOwotICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiYmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmPEdyYXBoaWNzQ29udGV4dEdMPiYmLCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCA5YTg3NjkzZGExNzk5OGY3YTZiMjgyZGFiZmQxZDcxZmVjN2I1NjUx
Li42YzM3Mjk5ZDQzNzdhYTAzYzI5NTFjMjQwNTA1ODllOGIzYzMwZmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTYxNyw3ICs2MTgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaWRBcHBseSB7IGZhbHNlIH07CiB9OwogCi1zdGF0aWMgYm9vbCBpc0hpZ2hQ
ZXJmb3JtYW5jZUNvbnRleHQoY29uc3QgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYg
Y29udGV4dCkKK3N0YXRpYyBib29sIGlzSGlnaFBlcmZvcm1hbmNlQ29udGV4dChjb25zdCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+JiBjb250ZXh0KQogewogICAgIHJldHVybiBjb250ZXh0LT5w
b3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSA9PSBXZWJHTFBvd2VyUHJlZmVyZW5jZTo6
SGlnaFBlcmZvcm1hbmNlOwogfQpAQCAtNzUzLDcgKzc1NCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYgY2FudmFzLCBX
ZWJHTENvCiAgICAgICAgIG1fY2hlY2tGb3JDb250ZXh0TG9zc0hhbmRsaW5nVGltZXIuc3RhcnRP
bmVTaG90KGNoZWNrQ29udGV4dExvc3NIYW5kbGluZ0RlbGF5KTsKIH0KIAotV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiBjYW52
YXMsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiBjb250ZXh0LCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmPEdyYXBoaWNzQ29udGV4
dEdMPiYmIGNvbnRleHQsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICA6
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dChjYW52YXMpCiAgICAgLCBtX2NvbnRleHQo
V1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fcmVzdG9yZVRpbWVyKGNhbnZhcy5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVS
ZXN0b3JlQ29udGV4dCkKQEAgLTE3ODYsNyArMTc4Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxlCiAgICAgaWYgKCF2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwod2lkdGgsIGhlaWdodCwgbGV2
ZWwsICJjb21wcmVzc2VkVGV4SW1hZ2UyRCIpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSAgICBtX2NvbnRleHQtPmNv
bXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LAorICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250
ZXh0LmdldCgpKS0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgIGJvcmRlciwgZGF0YS5ieXRlTGVuZ3RoKCks
IGRhdGEuYmFzZUFkZHJlc3MoKSk7CiAgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCkpIHsKICAgICAgICAgLy8gVGhlIGNvbXByZXNzZWRUZXhJbWFnZTJE
IGZ1bmN0aW9uIGZhaWxlZC4gVGVsbCB0aGUgV2ViR0xUZXh0dXJlIGl0IGRvZXNuJ3QgaGF2ZSB0
aGUgZGF0YSBmb3IgdGhpcyBsZXZlbC4KQEAgLTE4MjksNyArMTgzMCw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50CiAgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25z
KCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGV4LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ3JhcGhpY3NDb250ZXh0R0woKS0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLmJ5
dGVMZW5ndGgoKSwgZGF0YS5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGF0aWNfY2FzdDxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCo+KGdyYXBoaWNzQ29udGV4dEdMKCkpLT5jb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGRhdGEuYnl0ZUxlbmd0aCgpLCBkYXRhLmJhc2VBZGRyZXNzKCkpOwogICAgIHRleC0+
c2V0Q29tcHJlc3NlZCgpOwogI2VuZGlmCiB9CkBAIC0zMjA1LDcgKzMyMDYsNyBAQCBXZWJHTEFu
eSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJv
Z3JhbSYgcHJvZ3JhbSwgRwogI2lmIFVTRShBTkdMRSkKICAgICAgICAgbV9jb250ZXh0LT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CiAjZWxzZQotICAgICAg
ICBtX2NvbnRleHQtPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVj
dCgpLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT5nZXROb25CdWlsdEluQWN0aXZlU3ltYm9sQ291
bnQocHJvZ3JhbS5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7CiAjZW5kaWYgLy8gVVNFKEFOR0xF
KQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgZGVmYXVsdDoKQEAgLTM1NDksOSArMzU1MCwx
MSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdM
UHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDogewogICAgICAgICBHQ0dMZmxvYXQgdmFs
dWVbMTZdID0gezB9OworI2lmICFVU0UoQU5HTEUpCiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVz
c0VYVFN1cHBvcnRlZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdl
dG5Vbmlmb3JtZnZFWFQocHJvZ3JhbS5vYmplY3QoKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdD
R0xmbG9hdCksIHZhbHVlKTsKICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwog
ICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMF07CkBA
IC0zNTU5LDkgKzM1NjIsMTEgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICB9CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5UOiB7CiAgICAgICAgIEdDR0xpbnQgdmFsdWVbNF0g
PSB7MH07CisjaWYgIVVTRShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3Vw
cG9ydGVkKQogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZv
cm1pdkVYVChwcm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwg
dmFsdWUpOwogICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWl2KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlm
IChsZW5ndGggPT0gMSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKQEAgLTM1NzYsOSAr
MzU4MSwxMSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3Jt
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpCT09MOiB7CiAgICAgICAgIEdDR0xpbnQgdmFsdWVbNF0gPSB7MH07Cisj
aWYgIVVTRShBTkdMRSkKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQog
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1pdkVYVChw
cm9ncmFtLm9iamVjdCgpLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQ0dMaW50KSwgdmFsdWUpOwog
ICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0ub2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGgg
PiAxKSB7CiAgICAgICAgICAgICBWZWN0b3I8Ym9vbD4gdmVjdG9yKGxlbmd0aCk7CkBAIC0zNjE5
LDcgKzM2MjYsNyBAQCBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTAogI2lmIFVTRShBTkdMRSkKICAg
ICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLm9iamVjdCgpLCBHcmFwaGljc0NvbnRl
eHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwogI2Vsc2UKLSAgICBtX2Nv
bnRleHQtPmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudChwcm9ncmFtLm9iamVjdCgpLCBH
cmFwaGljc0NvbnRleHRHTDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+
Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KHByb2dyYW0ub2JqZWN0KCksIEdyYXBoaWNz
Q29udGV4dEdMOjpBQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7CiAjZW5kaWYKICAg
ICBmb3IgKEdDR0xpbnQgaSA9IDA7IGkgPCBhY3RpdmVVbmlmb3JtczsgaSsrKSB7CiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGluZm87CkBAIC0zODkzLDggKzM5MDAsOCBA
QCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEludmFs
aWRhdGluZ0F0dHJpYkxvY2F0aW9ucyhXZQogICAgIH0KIAogI2lmICFVU0UoQU5HTEUpCi0gICAg
aWYgKCFtX2NvbnRleHQtPnByZWNpc2lvbnNNYXRjaChvYmplY3RPclplcm8odmVydGV4U2hhZGVy
LmdldCgpKSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyLmdldCgpKSkKLSAgICAgICAgfHwg
IW1fY29udGV4dC0+Y2hlY2tWYXJ5aW5nc1BhY2tpbmcob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRl
ci5nZXQoKSksIG9iamVjdE9yWmVybyhmcmFnbWVudFNoYWRlci5nZXQoKSkpKSB7CisgICAgaWYg
KCFzdGF0aWNfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSkt
PnByZWNpc2lvbnNNYXRjaChvYmplY3RPclplcm8odmVydGV4U2hhZGVyLmdldCgpKSwgb2JqZWN0
T3JaZXJvKGZyYWdtZW50U2hhZGVyLmdldCgpKSkKKyAgICAgICAgfHwgIXN0YXRpY19jYXN0PEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKj4obV9jb250ZXh0LmdldCgpKS0+Y2hlY2tWYXJ5aW5nc1Bh
Y2tpbmcob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlci5nZXQoKSksIG9iamVjdE9yWmVybyhmcmFn
bWVudFNoYWRlci5nZXQoKSkpKSB7CiAgICAgICAgIHByb2dyYW0tPnNldExpbmtTdGF0dXMoZmFs
c2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDI1Nyw3ICs0MjY0LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB9CiAKICNkZWZpbmUgSU5URVJOQUxfRk9STUFU
X0NIRUNLKHR5cGVNYWNybywgcGl4ZWxUeXBlTWFjcm8pIFwKLSAgICBpZiAodHlwZSAhPSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dHlwZU1hY3JvIHx8IHBpeGVscy5nZXRUeXBlKCkgIT0gSlND
OjpwaXhlbFR5cGVNYWNybykgeyBcCisgICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0R0w6
OnR5cGVNYWNybyB8fCBwaXhlbHMuZ2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsg
XAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9F
TlVNLCAicmVhZFBpeGVscyIsICJ0eXBlIGRvZXMgbm90IG1hdGNoIGludGVybmFsIGZvcm1hdCIp
OyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXApAQCAtNDI2OCw3ICs0Mjc1LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICBDSEVDS19DT01QT05FTlRfQ09VTlQKIAogI2RlZmlu
ZSBJTlRFUk5BTF9GT1JNQVRfSU5URUdFUl9DSEVDSyh0eXBlTWFjcm8sIHBpeGVsVHlwZU1hY3Jv
KSBcCi0gICAgaWYgKHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnR5cGVNYWNybyB8
fCBwaXhlbHMuZ2V0VHlwZSgpICE9IEpTQzo6cGl4ZWxUeXBlTWFjcm8pIHsgXAorICAgIGlmICh0
eXBlICE9IEdyYXBoaWNzQ29udGV4dEdMOjp0eXBlTWFjcm8gfHwgcGl4ZWxzLmdldFR5cGUoKSAh
PSBKU0M6OnBpeGVsVHlwZU1hY3JvKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAidHlwZSBkb2VzIG5v
dCBtYXRjaCBpbnRlcm5hbCBmb3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwK
QEAgLTQyNzgsMTMgKzQyODUsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB9IFwK
ICAgICBDSEVDS19DT01QT05FTlRfQ09VTlQKIAotI2RlZmluZSBDQVNFX1BBQ0tFRF9JTlRFUk5B
TF9GT1JNQVRfQ0hFQ0soaW50ZXJuYWxGb3JtYXRNYWNybywgZm9ybWF0TWFjcm8sIHR5cGUwTWFj
cm8sIHBpeGVsVHlwZTBNYWNybywgdHlwZTFNYWNybywgcGl4ZWxUeXBlMU1hY3JvKSBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCi0gICAgaWYgKCEo
dHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHlwZTBNYWNybyAmJiBwaXhlbHMuZ2V0
VHlwZSgpID09IEpTQzo6cGl4ZWxUeXBlME1hY3JvKSBcCi0gICAgICAgICYmICEodHlwZSA9PSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dHlwZTFNYWNybyAmJiBwaXhlbHMuZ2V0VHlwZSgpID09
IEpTQzo6cGl4ZWxUeXBlMU1hY3JvKSkgeyBcCisjZGVmaW5lIENBU0VfUEFDS0VEX0lOVEVSTkFM
X0ZPUk1BVF9DSEVDSyhpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTBNYWNy
bywgcGl4ZWxUeXBlME1hY3JvLCB0eXBlMU1hY3JvLCBwaXhlbFR5cGUxTWFjcm8pIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OmludGVybmFsRm9ybWF0TWFjcm86IFwKKyAgICBpZiAoISh0eXBlID09
IEdyYXBoaWNzQ29udGV4dEdMOjp0eXBlME1hY3JvICYmIHBpeGVscy5nZXRUeXBlKCkgPT0gSlND
OjpwaXhlbFR5cGUwTWFjcm8pIFwKKyAgICAgICAgJiYgISh0eXBlID09IEdyYXBoaWNzQ29udGV4
dEdMOjp0eXBlMU1hY3JvICYmIHBpeGVscy5nZXRUeXBlKCkgPT0gSlNDOjpwaXhlbFR5cGUxTWFj
cm8pKSB7IFwKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfRU5VTSwgInJlYWRQaXhlbHMiLCAidHlwZSBkb2VzIG5vdCBtYXRjaCBpbnRlcm5hbCBm
b3JtYXQiKTsgXAogICAgICAgICByZXR1cm47IFwKICAgICB9IFwKLSAgICBpZiAoZm9ybWF0ICE9
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JtYXRNYWNybykgeyBcCisgICAgaWYgKGZvcm1h
dCAhPSBHcmFwaGljc0NvbnRleHRHTDo6Zm9ybWF0TWFjcm8pIHsgXAogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAicmVhZFBpeGVscyIs
ICJJbnZhbGlkIGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVybjsgXAogICAgIH0gXApAQCAtNDY5
OSw3ICs0NzA2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICAgICAgICAgICAgICAgICAv
LyBUaGUgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViB0eXBlIHBhY2svdW5wYWNrIGlzbid0
IGltcGxlbWVudGVkLgogICAgICAgICAgICAgICAgIHR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6
RkxPQVQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW1fY29udGV4dC0+ZXh0cmFj
dEltYWdlRGF0YShwaXhlbHMuZ2V0KCksIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpEYXRhRm9y
bWF0OjpSR0JBOCwgYWRqdXN0ZWRTb3VyY2VJbWFnZVJlY3QsIGRlcHRoLCB1bnBhY2tJbWFnZUhl
aWdodCwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxw
aGEsIGRhdGEpKSB7CisgICAgICAgICAgICBpZiAoIW1fY29udGV4dC0+ZXh0cmFjdEltYWdlRGF0
YShwaXhlbHMuZ2V0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JBOCwgYWRq
dXN0ZWRTb3VyY2VJbWFnZVJlY3QsIGRlcHRoLCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0
eXBlLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7CiAg
ICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJ0ZXhJbWFnZTJEIiwgImJhZCBpbWFnZSBkYXRhIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KQEAgLTUwMTMsNyArNTAyMCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHCiAgICAgQVNTRVJUKHRleCk7CiAgICAgQVNTRVJUKHZhbGlkYXRl
TlBPVFRleHR1cmVMZXZlbCh3aWR0aCwgaGVpZ2h0LCBsZXZlbCwgInRleEltYWdlMkQiKSk7CiAg
ICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQtPnRleEltYWdlMkRSZXNv
dXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCkpCisgICAgICAgIGlmICghc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqPihtX2NvbnRleHQuZ2V0KCkpLT50ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZVNldHRh
YmxlVGV4SW50ZXJuYWxGb3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5hbEZvcm1hdCkpOwpAQCAt
NTQ4NSw4ICs1NDkyLDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW8KICAgICBVTlVTRURfUEFS
QU0oaW50ZXJuYWxGb3JtYXQpOwogI2Vsc2UKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29tYmlu
YXRpb24gb2YgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgYW5kIHR5cGUgaXMgc3VwcG9ydGVkLgot
I2RlZmluZSBJTlRFUk5BTF9GT1JNQVRfQ0FTRShpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRN
YWNybywgdHlwZTAsIHR5cGUxLCB0eXBlMiwgdHlwZTMsIHR5cGU0KSBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjppbnRlcm5hbEZvcm1hdE1hY3JvOiBcCi0gICAgaWYgKGZvcm1hdCAhPSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Zm9ybWF0TWFjcm8pIHsgXAorI2RlZmluZSBJTlRFUk5B
TF9GT1JNQVRfQ0FTRShpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRNYWNybywgdHlwZTAsIHR5
cGUxLCB0eXBlMiwgdHlwZTMsIHR5cGU0KSBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjppbnRlcm5h
bEZvcm1hdE1hY3JvOiBcCisgICAgaWYgKGZvcm1hdCAhPSBHcmFwaGljc0NvbnRleHRHTDo6Zm9y
bWF0TWFjcm8pIHsgXAogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0IGZvciBp
bnRlcm5hbGZvcm1hdCIpOyBcCiAgICAgICAgIHJldHVybiBmYWxzZTsgXAogICAgIH0gXApAQCAt
NTYyNSw3ICs1NjMyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICBHQ0dMaW50IGNs
aXBwZWRYLCBjbGlwcGVkWTsKICAgICBHQ0dMc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVp
Z2h0OwogICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRSZWFkRnJh
bWVidWZmZXJXaWR0aCgpLCBnZXRCb3VuZFJlYWRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBl
ZFgsICZjbGlwcGVkWSwgJmNsaXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLAorICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPnRleEltYWdlMkRSZXNvdXJj
ZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwKICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfQllURSwgbV91bnBhY2tBbGlnbm1lbnQpOwogICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4g
MCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBjbGlwcGVkWCAtIHgsIGNsaXBwZWRZIC0geSwKQEAg
LTY0MDYsOCArNjQxMyw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
RmFsbGJhY2tCbGFja1RleHR1cmVzMXgxKCkKIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjppc1RleEludGVybmFsRm9ybWF0Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKEdDR0xl
bnVtIHRleEludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBjb2xvckJ1ZmZlckZvcm1hdCkKIHsKLSAg
ICBhdXRvIG5lZWQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Q2hhbm5lbEJpdHNCeUZv
cm1hdCh0ZXhJbnRlcm5hbEZvcm1hdCk7Ci0gICAgYXV0byBoYXZlID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQoY29sb3JCdWZmZXJGb3JtYXQpOworICAg
IGF1dG8gbmVlZCA9IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KHRl
eEludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIGhhdmUgPSBHcmFwaGljc0NvbnRleHRHTDo6Z2V0
Q2hhbm5lbEJpdHNCeUZvcm1hdChjb2xvckJ1ZmZlckZvcm1hdCk7CiAgICAgcmV0dXJuIChuZWVk
ICYgaGF2ZSkgPT0gbmVlZDsKIH0KIApAQCAtNzQ4NCw3ICs3NDkxLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICBpZiAoIWhvc3RX
aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKG1fYXR0cmlidXRl
cywgaG9zdFdpbmRvdykpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY29udGV4dChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKG1fYXR0cmlidXRlcywgaG9zdFdpbmRvdykp
OwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBpZiAobV9jb250ZXh0TG9zdE1vZGUgPT0g
UmVhbExvc3RDb250ZXh0KQogICAgICAgICAgICAgbV9yZXN0b3JlVGltZXIuc3RhcnRPbmVTaG90
KHNlY29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVtcHRzKTsKQEAgLTc3NjAsNyArNzc2Nyw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjCiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wy
KQogICAgIGlmIChpc1dlYkdMMigpKQotICAgICAgICBtX2NvbnRleHQtPnByaW1pdGl2ZVJlc3Rh
cnRJbmRleChnZXRSZXN0YXJ0SW5kZXgodHlwZSkpOworICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCo+KG1fY29udGV4dC5nZXQoKSktPnByaW1pdGl2ZVJlc3RhcnRJ
bmRleChnZXRSZXN0YXJ0SW5kZXgodHlwZSkpOwogI2VuZGlmCiAKICAgICBtX2NvbnRleHQtPmRy
YXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0NHTGlu
dHB0cj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAyOTFiOWFlZGYzMzg0
MTZlYmFlZGIzODlhNzk1YTI5ZmE4YWRkYmViLi5hNzFkMDM2YWEwZGVhNTJiNDU3OTA5ZmJmZmRj
M2FkZjgwZjUxMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJTdXNwZW5kYWJsZVRpbWVyLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTEyNCw3ICsxMjQsNyBAQCB1c2luZyBXZWJHTENhbnZh
cyA9IFdURjo6VmFyaWFudDxSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+LCBSZWZQdHI8T2Zmc2Ny
ZWVuQ2FudgogdXNpbmcgV2ViR0xDYW52YXMgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50Pj47CiAjZW5kaWYKIAotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6
IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Q2xpZW50LCBwdWJsaWMgR1BVQmFzZWRD
YW52YXNSZW5kZXJpbmdDb250ZXh0LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ciB7CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQsIHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHBy
aXZhdGUgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gY3JlYXRlKENhbnZhc0Jh
c2UmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzJiwgY29uc3QgU3RyaW5nJik7CkBAIC0zNzcsNyAr
Mzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9zZUNvbnRleHRJbXBsKExvc3RDb250ZXh0TW9k
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCk7CiAK
LSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBHcmFwaGljc0NvbnRleHRHTCogZ3JhcGhp
Y3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KICAgICBXZWJH
TENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0R3Jv
dXAuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBSZWY8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRH
TD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7CiAKICAgICBmcmllbmQgY2xhc3MgRVhUVGV4
dHVyZUNvbXByZXNzaW9uUkdUQzsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsK
QEAgLTUyNyw3ICs1MjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBuZWVkc1ByZXBhcmF0aW9u
Rm9yRGlzcGxheSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHByZXBh
cmVGb3JEaXNwbGF5KCkgZmluYWw7CiAKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+IG1fY29udGV4dDsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IG1fY29udGV4dDsK
ICAgICBSZWZQdHI8V2ViR0xDb250ZXh0R3JvdXA+IG1fY29udGV4dEdyb3VwOwogICAgIExvY2sg
bV9vYmplY3RHcmFwaExvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNh
bXBsZXIuY3BwCmluZGV4IGI3MjA0MjU4MjNlMzYzNTZlYTJmNzA0NTcwOGNlNTE0MTVhY2IwNzUu
LmIwYjdkZGQ5YzQzY2YyMDA1OTU0OGYwNDhkMzljMDMxNDQ4ODAzYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJH
TFNhbXBsZXI6OldlYkdMU2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAg
ICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVTYW1wbGVyKCkpOwog
fQogCi12b2lkIFdlYkdMU2FtcGxlcjo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmpl
Y3Qgb2JqZWN0KQordm9pZCBXZWJHTFNhbXBsZXI6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0M2QtPmRlbGV0ZVNhbXBsZXIob2JqZWN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKaW5kZXggOWIxMTgzZTVk
NzNkZTI2MDVlNzFkNDk4NzBhNjg0MDkwYzIxMTVlMC4uNGUxMGQ3NzE3MzUwMTA5Yzg4YTE5OWM1
MWU3ZjIxYWQ4MDVhODJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1w
bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYkdMU2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0gICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAppbmRleCBjNzBkMGE0NmQ2Yzli
OGU0ZmZkODIwNTVhMzEyMmRiMGJkMTYxMTQ0Li43ZjIyMTliNGIyNTc3ZTg3NTY3ZTY2ODQxNDY3
OWYxNDFjNDFkMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkdMU2hhZGVyOjp+V2ViR0xTaGFkZXIoKQogICAgIHJ1
bkRlc3RydWN0b3IoKTsKIH0KIAotdm9pZCBXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFNoYWRlcjo6ZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2Qs
IFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQzZC0+ZGVsZXRlU2hhZGVy
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAppbmRl
eCA3YjQ3MzNhYmNlN2VjNGFlYzQ3YTRmZDUwMjlmMTQyMDZjOGZmODc5Li45MzRiM2RjMThhZjM0
N2MzZDUwZmFlNGIwNjVjOTgyOWYwYmQ5OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBX
ZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0NHTGVudW0pOwogCi0gICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAogICAgIEdDR0xlbnVtIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaAppbmRleCA3YWI0MjIwYWUxMGQxNzdkNTE4
ZTI4MTFhOGYxYWQzMDc4N2RiZTM5Li41OTdkM2YwMGI0YzNmNjM5NDJlMWQzNmNmYTBlNGQxMWJl
MjIxNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRl
clByZWNpc2lvbkZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHTCkKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYXJlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YXJlZE9iamVjdC5jcHAKaW5kZXggNzE4MjZhNGY1MzA3NmFmYjgxZDFkZmY3ZDZmYjM5MGQwZWFi
MDNiMy4uOTM2Yzk4MWM5OTI5MGQ4ZTdjZWY5OGIxM2I1NjkzY2JlYjIzNzk4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcApAQCAtNzcs
NyArNzcsNyBAQCBib29sIFdlYkdMU2hhcmVkT2JqZWN0OjpoYXNHcm91cE9yQ29udGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY29udGV4dEdyb3VwICYmIG1fY29udGV4dEdyb3VwLT5oYXNBQ29u
dGV4dCgpOwogfQogCi1HcmFwaGljc0NvbnRleHRHTE9wZW5HTCogV2ViR0xTaGFyZWRPYmplY3Q6
OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CitHcmFwaGljc0NvbnRleHRHTCogV2ViR0xT
aGFyZWRPYmplY3Q6OmdldEFHcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY29udGV4dEdyb3VwID8gJm1fY29udGV4dEdyb3VwLT5nZXRBR3JhcGhpY3NDb250ZXh0R0wo
KSA6IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYXJlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFy
ZWRPYmplY3QuaAppbmRleCBiZGNlYzZlMDJlNGFmNmYyMjc4M2EzZTYxMTM5YzIwNDQxNjBhMmY1
Li41ZDEzYWZhMzg0NmFhMjE1MzBjMGFiZDUzOTBhYTFlNzk4ZTllMWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgTG9jazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgV2ViR0xDb250
ZXh0R3JvdXA7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogCkBAIC02Niw3ICs2
Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzR3JvdXBPckNvbnRleHQoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBnZXRBR3JhcGhpY3NDb250
ZXh0R0woKSBjb25zdCBvdmVycmlkZTsKKyAgICBHcmFwaGljc0NvbnRleHRHTCogZ2V0QUdyYXBo
aWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViR0xDb250
ZXh0R3JvdXAqIG1fY29udGV4dEdyb3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U3luYy5jcHAKaW5kZXggMTc5ZDQ4NmFiMjIyMGY0ZTk1MmI0MTdkZDc0ZDY3NTIwZjUwZTViOS4u
NGE0MjBiZjBhMTE2Y2NjYWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkdMU3luYzo6
V2ViR0xTeW5jKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBzZXRPYmplY3Qo
LTEpOwogfQogCi12b2lkIFdlYkdMU3luYzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xP
YmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFN5bmM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBjb250ZXh0M2Qt
PmRlbGV0ZVN5bmMobV9zeW5jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU3luYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgK
aW5kZXggYzNkMzI2NGI4NjBkZTlmN2RlNzM0MzUwYjMxMDhlZjlkM2E3YzAyZi4uNjBhYjA2YTky
M2Y1ZTA5MjZjYzliZjg1YjBhMDUxZjJlNGRhODAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTeW5jLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBHQ0dMaW50IG1f
c3luY1N0YXR1cyA9IHsgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkFMRUQgfTsKICAgICBHQ0dM
c3luYyBtX3N5bmM7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5jcHAKaW5kZXggYTM5ODZkYTUwMmI5ZTRlMGNiNmU2MDg0ODhlMjYwOWVi
ZmYzMWVkOC4uMGE3YTAxZDI5NWIxNTFhYjU1YjI5NGIzNzA4MmZlMzgyMTZhYTA1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgV2ViR0xUZXh0dXJlOjpzZXRUYXJnZXQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IG1heExldmVsKQogI2VuZGlmIC8vIFVTRShBTkdMRSkKIH0KIAotdm9pZCBXZWJHTFRleHR1cmU6
OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xU
ZXh0dXJlOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29u
dGV4dDNkLT5kZWxldGVUZXh0dXJlKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVGV4dHVyZS5oCmluZGV4IGRlMjlmOGI4NzU3ZTc5MWNkYTk5ZThlMDE5ZWI3ZGI4
YTU5ZTJiMTguLmE4NWFjNzg4ZTdmMTc5NzZiZWE1NDY3YzNkMjAxZGM4OGZmZDZlZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzVGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNr
LmNwcAppbmRleCAwMjZlYmI3YTJjMTMyMmJjOWNiYTA1Yzg5MTQ4ODljZTNhODM2OGZlLi5hNDU0
OWJkOTU4OGMzZDM5ZWZlMTNiZTE0OTRlYjI2ZDdiMGU5OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGN0eCkKICAgICBtX2JvdW5kSW5kZXhlZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVycy5yZXNpemUoY3R4Lm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVB
dHRyaWJzKCkpOwogfQogCi12b2lkIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OmRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29u
dGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjazo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29u
dGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRl
eHQzZC0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAppbmRleCA3Yjk5
NGIzMDZkZTQ0NmFhZmUxZmNkNzBkZmJiMDdiZWI1ZGY1MjliLi43YmMyMTMyOTk4MmIzZWMzOTcz
ZDlkYTE4NzA2MDhiYTU0NDA2ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Jik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIAog
ICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0LmNwcAppbmRleCA0ZWJkZWJjYWE3M2FlNTgyODRlN2ZhMWQ1NzRjNDFhNTJjNmI3MDU4
Li5kMGVlZDdhNDVhOWNiYjMyOGI0YzM2MjhhZjEzZjBjODhjYmY0MWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcApA
QCAtNTgsNyArNTgsNyBAQCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpXZWJHTFZlcnRleEFycmF5
T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleAogICAgIHNldE9iamVjdCh0
aGlzLT5jb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dEdMKCktPmNyZWF0ZVZlcnRleEFycmF5KCkp
OwogfQogCi12b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmRlbGV0ZU9iamVjdEltcGwoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRl
eHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7CiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkRlZmF1bHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKaW5kZXggNDc0
ZmJkNDM1NGE4YmM5MTA0NDE0ZDMzYjY2Y2Q2ZTM0ZmUxNWY2MC4uZjdiMzZhOWY5OGYyZWQ0ZGYx
NTJmN2NjYTM4YTZjZGM3MGJjYmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCgpOwogcHJpdmF0ZToKICAgICBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBUeXBlKTsK
LSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RCYXNlLmgKaW5kZXggMWM2YjY3MmEwN2ZhMmY0MTVhNzZjOTM4M2I0NDBm
MTcyYTJiMTgzNC4uNWE5MzZiMjg0ZmMxZmRkZjZhZmVkZTc1ZWZkYzg2MTVlNzcyZGY3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpCiAKLSNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMLmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTENvbnRl
eHRPYmplY3QuaCIKIApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwg
VHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
ID0gMDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGUgPSAwOwog
CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgYm9vbCBtX2hhc0V2ZXJCZWVuQm91bmQgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmNwcAppbmRleCA1ZmU4MWRiZmY4OGJhNGZjNmFiYjg4ZTIzYTk3ODNlZThj
MWFjMWQzLi5kZTRhZjdlN2E2YTU5MWQ2Mjg0NTkxNmM5MzhjZGNmNGNjYzIwY2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTLmNwcApAQCAtNTksNyArNTksNyBAQCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjp+
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpCiAgICAgcnVuRGVzdHJ1Y3RvcigpOwogfQogCi12
b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4
dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIs
IEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQog
ewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5oCmluZGV4IDBjMTU5ZWFjZTkyNmIwOTVkYjVlYTYzMmRlM2FhNjE0MjVjMDc2ZWYuLjYyYzhm
N2MzMmZlNTY1YjZiNTcyYjdmMGRlMTIxZjgzZDZhMzkzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMoKTsKIHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3Jt
R0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5h
bDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA2OTM3NzhkZjZlMDIw
Y2IwMTgwMWU3NWM4ZTM5OTUzZDlmMTcyNjJjLi43YTA0MjBkN2ZmYWZkNjQ4ZTRiNmQ1NzE0OGNk
MDI0N2IzODRlZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclNoYWRlclByb2dyYW0uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1
ZGUgIldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aCIKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDE5ZDJhODFlMDRi
ZGNkMmE3ZjgwODE1YTRhYjY3M2VlYmJmYzk4MGYuLjgyNDI5OTAwMmVlNjYwZjBiYWUzZjE2M2Fk
MWM4OWIwM2Q0ZGRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTI1MSw3ICsyNTEsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGJvb2wgY29weVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0LCBHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBjb25zdCBvdmVy
cmlkZQorICAgIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiBj
b250ZXh0LCBHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0
dXJlLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGZsaXBZKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmNv
cHlUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0YXJnZXQsIGRlc3RpbmF0aW9uVGV4dHVyZSwg
aW50ZXJuYWxmb3JtYXQsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggMGY1ZGJiYWJmYjE0
OGRmMGFkMjMyN2UwNGVkMzEwZmQ3MThlMWVjOS4uMzRmMTdlYzYxYjMzMTAzNzFjMmRkYmQwYTAx
NzVjNjBiOTNkMTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uc0dMLmgKQEAgLTI2Niw2ICsyNjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIENPTE9S
X0FUVEFDSE1FTlQxNV9FWFQgPSAweDhDRUYKICAgICB9OwogCisgICAgLy8gV2ViR0wgZnVuY3Rp
b25zIGluIGZvcm1hdCBnZW5lcmF0ZS1ncHVwLXdlYmdsIHVuZGVyc3RhbmRzLgorCiAgICAgLy8g
R0xfQVJCX3JvYnVzdG5lc3MKICAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRp
ZmZlcnMgZnJvbSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKICAgICAvLyBzcGVjaWZpY2F0aW9uIGlu
IHRoZSBmb2xsb3dpbmcgd2F5OgpAQCAtMjczLDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICAvLyBJ
ZiBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBj
b250aW51ZQogICAgIC8vIHJldHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCBpcyBoYW5kbGVkCiAgICAgLy8gZXh0ZXJuYWxseS4KLSAg
ICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOworICAgIHZpcnR1
YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAgLy8gR0xf
QU5HTEVfZnJhbWVidWZmZXJfYmxpdAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
bG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RY
MCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNr
LCB1bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOwpAQCAtMjkwLDExICsyOTIsNiBAQCBwdWJsaWM6
CiAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0g
MDsKIAotICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCCi0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNp
emUsIGludCAqcGFyYW1zKSA9IDA7Ci0KICAgICAvLyBHTF9FWFRfZGVidWdfbWFya2VyCiAgICAg
dmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpID0gMDsKQEAg
LTMwOCw2ICszMDUsODQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBs
b25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
ID0gMDsKIAorICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CisgICAgdmlydHVh
bCB2b2lkIGdldEJvb2xlYW52Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGJvb2xlYW4qIGRhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHZSb2J1c3RB
TkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMZmxvYXQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRl
Z2VydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJv
Z3JhbWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hh
ZGVyaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzaGFkZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xm
bG9hdCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoq
IHBvaW50ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQq
IHBpeGVscykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCog
cGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0
IEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xz
aXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCB0ZXhJbWFnZTNEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IGNvbnN0IEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlp
dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGlu
ZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIGRhdGEp
ID0gMDsgLy8gTk9MSU5UCisgICAgdmlydHVhbCB2b2lkIGdldEludGVybmFsZm9ybWF0aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJh
bXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCog
ZGF0YSkgPSAwOyAvLyBOT0xJTlQKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
aTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50KiBw
YXJhbSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xmbG9hdCogcGFyYW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFuaV92Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMYm9vbGVhbiogZGF0YSkgPSAwOyAvLyBOT0xJTlQKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxv
YXQqIHZhbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBw
YXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBk
YXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCog
cGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShH
Q0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFt
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHVpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQqIHBhcmFtKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCogcGFyYW0p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50
KiBwYXJhbXMpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpID0gMDsKKworICAgIC8vIE90aGVyIGZ1bmN0aW9u
cy4KKyNpZiAhVVNFKEFOR0xFKQorICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCCisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBk
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFy
YW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzQU1EKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0ludGVsKCkgPSAw
OwpAQCAtMzE5LDc1ICszOTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSA9IDA7CiAKLSAgICAvLyBHTF9BTkdMRV9y
b2J1c3RfY2xpZW50X21lbW9yeQotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudlJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xib29sZWFuICpkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RmxvYXR2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpkYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpkYXRh
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQg
c2hhZGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRQ
aXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dz
LCB2b2lkICpwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9h
dCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQg
eW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdl
U2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
aW50IGxldmVsLCBpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IHZvaWQgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRl
Z2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBpbnQgKmRhdGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9u
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEludGVnZXI2NHZSb2J1c3RBTkdMRShHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
NjQgKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcjY0aV92Um9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50NjQgKmRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVyUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
TGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFByb2dy
YW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29s
ZWFuaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMYm9vbGVhbiAqZGF0YSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0gcG5h
bWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xmbG9hdCAqdmFsKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQg
KnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMdWludCAqcGFyYW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NH
TGludCAqcGFyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlckl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRT
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50NjQgKnBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRR
dWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50NjQgKnBhcmFtcykg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKaW5kZXggMTBiNTk5NzAy
MzY4Nzc3MWM2ZWY0MTcwOTQ1MzM2MGY1YzMxOWIwYS4uZGNiYzhiYjQwODVlYmJjZDZjYzNjNTM5
MzdkZTQzNzc0NzJiODUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCkBAIC0xNzE5LDcgKzE3MTksNyBAQCBBTFdBWVNf
SU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgRm9ybWF0Q29udmVydGVyOjpjb252ZXJ0KCkKICAgICB9
CiAKICAgICAvLyBPbmx5IHRleHR1cmVzIHVwbG9hZGVkIGZyb20gRE9NIGVsZW1lbnRzIG9yIElt
YWdlRGF0YSBjYW4gYWxsb3cgRHN0Rm9ybWF0ICE9IFNyY0Zvcm1hdC4KLSAgICBjb25zdCBib29s
IHNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YSA9IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEoU3JjRm9y
bWF0KTsKKyAgICBjb25zdCBib29sIHNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdl
RGF0YSA9IEdyYXBoaWNzQ29udGV4dEdMOjpzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJ
bWFnZURhdGEoU3JjRm9ybWF0KTsKICAgICBpZiAoIXNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1l
bnRPckltYWdlRGF0YSAmJiBTcmNGb3JtYXQgIT0gRHN0Rm9ybWF0KSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBB
TFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgRm9ybWF0Q29udmVydGVyOjpjb252ZXJ0KCkK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgaWYgKCghR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omhhc0FscGhhKFNyY0Zvcm1hdCkgfHwg
IUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpoYXNDb2xvcihTcmNGb3JtYXQpIHx8ICFHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6aGFzQ29sb3IoRHN0Rm9ybWF0KSkgJiYgYWxwaGFPcCAhPSBHcmFw
aGljc0NvbnRleHRHTDo6QWxwaGFPcDo6RG9Ob3RoaW5nKSB7CisgICAgaWYgKCghR3JhcGhpY3ND
b250ZXh0R0w6Omhhc0FscGhhKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29udGV4dEdMOjpoYXND
b2xvcihTcmNGb3JtYXQpIHx8ICFHcmFwaGljc0NvbnRleHRHTDo6aGFzQ29sb3IoRHN0Rm9ybWF0
KSkgJiYgYWxwaGFPcCAhPSBHcmFwaGljc0NvbnRleHRHTDo6QWxwaGFPcDo6RG9Ob3RoaW5nKSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIu
aAppbmRleCBmNGNkZDZlN2ZlODc3NmM4OGI2Zjk2NmJjYjQwNGRkNjQwODM5MDgwLi5jNmY1MTI2
ZWRlNWNiZDZjNzUzMjkzOGJjY2U4NmM5Mzc2NTQzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApAQCAtMjksNyArMjksNyBA
QAogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpCiAKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMDhhYjNiMjIwMGZhOWQyZDdkNWJhNWU1YmIz
YTU4YWRjYzEyNTZjMy4uNDUzOWZiYjZkYmYzZWM3ODNjNjEzMzg2ZWEyNTQ5NGY0ZWI2YjFhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgTWVkaWFQbGF5ZXI7CiBjbGFzcyBSb3VuZGVkUmVjdDsKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBQYXRoOwog
Y2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmlu
ZGV4IGExNmY1OGRiM2E0MGE0YWU1N2ZmOWE3YWMxMTU4ZDc4NzFhM2VmZjMuLmRmNGExMTlhMzIw
ZGFjNmFlYjYzMDZkNGM1MDk1NTE1ODhhMTk3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTczNCw4NyAr
NzM0LDYgQEAgR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1dGVJbWFnZVNpemVJbkJ5
dGVzKEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHkKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0R0w6Ok5PX0VSUk9SOwogfQogCi0jaWYgIVVTRShBTkdMRSkKLWJvb2wgR3JhcGhpY3NDb250
ZXh0R0w6OnBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSYgZm9ybWF0LCBHQ0dMZW51bSYgdHlwZSkKLXsKLSNkZWZp
bmUgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShpbnRlcm5hbEZvcm1hdE1hY3JvLCBmb3JtYXRN
YWNybywgdHlwZU1hY3JvKSBjYXNlIGludGVybmFsRm9ybWF0TWFjcm86IFwKLSAgICAgICAgZm9y
bWF0ID0gZm9ybWF0TWFjcm87IFwKLSAgICAgICAgdHlwZSA9IHR5cGVNYWNybzsgXAotICAgICAg
ICBicmVhazsKLQotICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpIHsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShSR0IsIFJHQiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQSwgUkdCQSwgVU5TSUdORURfQllURSk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoTFVNSU5BTkNFX0FMUEhBLCBMVU1JTkFOQ0Vf
QUxQSEEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KExVTUlOQU5DRSwgTFVNSU5BTkNFLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShBTFBIQSwgQUxQSEEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4LCBSRUQsIFVOU0lHTkVEX0JZVEUpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4X1NOT1JNLCBSRUQsIEJZVEUpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIxNkYsIFJFRCwgSEFMRl9GTE9BVCk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMyRiwgUkVELCBGTE9BVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0JZ
VEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFI4SSwgUkVEX0lOVEVHRVIs
IEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIxNlVJLCBSRURfSU5U
RUdFUiwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFIxNkksIFJFRF9JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUjMyVUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9JTlQpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFIzMkksIFJFRF9JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NT
SUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOCwgUkcsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOF9TTk9STSwgUkcsIEJZVEUpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMTZGLCBSRywgSEFMRl9GTE9BVCk7Ci0gICAgICAg
IFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkYsIFJHLCBGTE9BVCk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4VUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUp
OwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHOEksIFJHX0lOVEVHRVIsIEJZ
VEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHMTZVSSwgUkdfSU5URUdF
UiwgVU5TSUdORURfU0hPUlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJH
MTZJLCBSR19JTlRFR0VSLCBTSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkczMlVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9JTlQpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHMzJJLCBSR19JTlRFR0VSLCBJTlQpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFJHQjgsIFJHQiwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoU1JHQjgsIFJHQiwgVU5TSUdORURfQllURSk7Ci0gICAg
ICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNTY1LCBSR0IsIFVOU0lHTkVEX1NIT1JU
XzVfNl81KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4X1NOT1JNLCBS
R0IsIEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFIxMUZfRzExRl9C
MTBGLCBSR0IsIFVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYpOwotICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFJHQjlfRTUsIFJHQiwgVU5TSUdORURfSU5UXzVfOV85XzlfUkVW
KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkYsIFJHQiwgSEFMRl9G
TE9BVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJGLCBSR0IsIEZM
T0FUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I4VUksIFJHQl9JTlRF
R0VSLCBVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShS
R0I4SSwgUkdCX0lOVEVHRVIsIEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQjE2VUksIFJHQl9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZJLCBSR0JfSU5URUdFUiwgU0hPUlQpOwotICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMyVUksIFJHQl9JTlRFR0VSLCBVTlNJR05F
RF9JTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQjMySSwgUkdCX0lO
VEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTgsIFJH
QkEsIFVOU0lHTkVEX0JZVEUpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFNS
R0I4X0FMUEhBOCwgUkdCQSwgVU5TSUdORURfQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1B
VF9UWVBFX0NBU0UoUkdCQThfU05PUk0sIFJHQkEsIEJZVEUpOwotICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQjVfQTEsIFJHQkEsIFVOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwot
ICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkE0LCBSR0JBLCBVTlNJR05FRF9T
SE9SVF80XzRfNF80KTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxMF9B
MiwgUkdCQSwgVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVf
Rk9STUFUX1RZUEVfQ0FTRShSR0JBMTZGLCBSR0JBLCBIQUxGX0ZMT0FUKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMzJGLCBSR0JBLCBGTE9BVCk7Ci0gICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQThVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9C
WVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOEksIFJHQkFfSU5U
RUdFUiwgQllURSk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTBfQTJV
SSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYpOwotICAgICAgICBQ
T1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVE
X1NIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMTZJLCBSR0JB
X0lOVEVHRVIsIFNIT1JUKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JB
MzJJLCBSR0JBX0lOVEVHRVIsIElOVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkdCQTMyVUksIFJHQkFfSU5URUdFUiwgVU5TSUdORURfSU5UKTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQxNiwgREVQVEhfQ09NUE9ORU5ULCBV
TlNJR05FRF9TSE9SVCk7Ci0gICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhf
Q09NUE9ORU5ULCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKLSAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQyNCwgREVQVEhfQ09NUE9ORU5U
LCBVTlNJR05FRF9JTlQpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRI
X0NPTVBPTkVOVDMyRiwgREVQVEhfQ09NUE9ORU5ULCBGTE9BVCk7Ci0gICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoREVQVEhfU1RFTkNJTCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURf
SU5UXzI0XzgpOwotICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMjRfU1RF
TkNJTDgsIERFUFRIX1NURU5DSUwsIFVOU0lHTkVEX0lOVF8yNF84KTsKLSAgICAgICAgUE9TU0lC
TEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSDMyRl9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgRkxP
QVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZ
UEVfQ0FTRShFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBFeHRlbnNpb25zR0w6OlNSR0JfRVhULCBV
TlNJR05FRF9CWVRFKTsKLSAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShFeHRlbnNp
b25zR0w6OlNSR0JfQUxQSEFfRVhULCBFeHRlbnNpb25zR0w6OlNSR0JfQUxQSEFfRVhULCBVTlNJ
R05FRF9CWVRFKTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
I3VuZGVmIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UKLQotICAgIHJldHVybiB0cnVlOwotfQot
I2VuZGlmIC8vICFVU0UoQU5HTEUpCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OnBhY2tJbWFn
ZURhdGEoSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkKiBwaXhlbHMsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgQWxwaGFPcCBhbHBoYU9wLCBEYXRhRm9ybWF0IHNv
dXJjZUZvcm1hdCwgdW5zaWduZWQgc291cmNlSW1hZ2VXaWR0aCwgdW5zaWduZWQgc291cmNlSW1h
Z2VIZWlnaHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xlLCBpbnQgZGVw
dGgsIHVuc2lnbmVkIHNvdXJjZVVucGFja0FsaWdubWVudCwgaW50IHVucGFja0ltYWdlSGVpZ2h0
LCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgaWYgKCFpbWFnZSB8fCAhcGl4ZWxzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggMDA3YzkzYzEwZDE3ZjY4MmMyYTU4NmJmNzEwMTE5YWFlY2MxNGU0NS4uZDll
NTg4YWZhMzBkYmE3MzA5MzBmOTZjOTg3MjkxMzQwMTI5OGMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC05MTks
NyArOTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7
IG1fY2xpZW50cy5hZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQm
IGNsaWVudCkgeyBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CiAKLSAgICAvLyA9PT09PT09
PT09IFdlYkdMIDEgZW50cnkgcG9pbnRzLgorICAgIC8vIFdlYkdMIGZ1bmN0aW9ucyBpbiBmb3Jt
YXQgZ2VuZXJhdGUtZ3B1cC13ZWJnbCB1bmRlcnN0YW5kcy4KIAogICAgIHZpcnR1YWwgdm9pZCBh
Y3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBzaGFk
ZXIpID0gMDsKQEAgLTEwOTksNTMgKzEwOTksMjkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpcHRyIHNpemUsIEdDR0xlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZm
ZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
cHRyLCBjb25zdCBHQ0dMdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIsIGNvbnN0IEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRh
dGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkgPSAwOwotCi0gICAgdmlydHVhbCBib29sIHRleElt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0IEdDR0x2b2lkKiBw
aXhlbHMpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1j
b3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVu
dW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRy
aWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJzOyB9Ci0gICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQotICAg
IC8vIENvbmNlc3Npb24gdG8gQ2FudmFzIGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5
bmFtaWNhbGx5IHNldAotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9y
ZGVyIHRvIGF2b2lkIGltcGxpY2l0IGNsZWFycy4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2Vu
ZXJhbGx5IGRvIG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgotICAg
IHZpcnR1YWwgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLQogICAgIC8vIFZl
cnRleEFycmF5T2plY3QgY2FsbHMKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QpID0gMDsKICAgICB2aXJ0dWFsIEdDR0xib29sZWFuIGlzVmVydGV4QXJy
YXkoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kVmVydGV4QXJy
YXkoUGxhdGZvcm1HTE9iamVjdCkgPSAwOwogCi0jaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdF
QkdMMikKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSA9
IDA7Ci0jZW5kaWYKLQotICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBu
b24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKLSAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlu
cyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQotICAgIC8vIGN1cnJlbnQgaGFy
ZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KLSAgICAvLyBkZXRl
cm1pbmUgdGhpcy4KLSAgICB2aXJ0dWFsIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0g
MDsKLQogICAgIC8vID09PT09PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKLSAgICB2aXJ0
dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdD
R0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IGxlbmd0aCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGNvcHlCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRy
IHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRz
dE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkKiBtYXBCdWZm
ZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIg
bGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMdm9pZCog
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgR0NH
TGJvb2xlYW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xp
bnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdD
R0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBm
aWx0ZXIpID0gMDsKQEAgLTEyNDMsMTkgKzEyMTksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSA9IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrUGFyYW1ldGVyCi0gICAgdmlydHVhbCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybUJs
b2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSA9IDA7CiAKLSAgICAvLyB0ZXhT
dWJJbWFnZTJEIHdpdGggcGl4ZWwgcGFjayBidWZmZXIsIGFuZCBzcmNEYXRhK29mZnNldCwgYXJl
Ci0gICAgLy8gc3VwcG9ydGVkIG9ubHkgdmlhIEFOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Lgot
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIGNv
bnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
T3ZlcnJpZGUpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGlu
dCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0Rh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpID0gMDsK
LQogICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkg
PSAwOwpAQCAtMTI3MCwxMCArMTIzNiwyNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQp
ID0gMDsKKyAgICAvLyBPdGhlciBmdW5jdGlvbnMuCiAKLSAgICAvLyA9PT09PT09PT09IE5vbi1X
ZWJHTCBiYXNlZCBlbnRyeSBwb2ludHMuCisgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsgfQorICAgIHZvaWQg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KKworICAgIC8vIEZJWE1FOiBUaGUgY2FsbGluZyBz
aXRlIHNob3VsZCBiZSBmaXhlZCwgdGhpcyBicmVha3MgdGhlIFdlYkdMIHNwZWMKKyAgICAvLyB3
cnQgcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IGZhbHNlIGJlaGF2aW9yLgorICAgIC8vIENvbmNl
c3Npb24gdG8gQ2FudmFzIGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFtaWNhbGx5
IHNldAorICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVyIHRvIGF2
b2lkIGltcGxpY2l0IGNsZWFycy4KKyAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJhbGx5IGRv
IG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgorICAgIHZpcnR1YWwg
dm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKKworICAgIC8vIFN1cHBvcnQgZm9y
IGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKKyAgICAv
LyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9u
IHRoZQorICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1
cHBvcnRzKCkgdG8KKyAgICAvLyBkZXRlcm1pbmUgdGhpcy4KKyAgICB2aXJ0dWFsIEV4dGVuc2lv
bnNHTCYgZ2V0RXh0ZW5zaW9ucygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZXh0Vmlz
aWJpbGl0eShib29sKSA9IDA7CiAKQEAgLTEyOTEsMjEgKzEyNzEsNDMgQEAgcHVibGljOgogICAg
IC8vIGdldEVycm9yIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQuCiAgICAgdmlydHVhbCB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSA9IDA7CiAKKyAgICAvLyBSZWFk
IHJlYWwgT3BlbkdMIGVycm9ycywgYW5kIG1vdmUgdGhlbSB0byB0aGUgc3ludGhldGljCisgICAg
Ly8gZXJyb3IgbGlzdC4gUmV0dXJuIHRydWUgaWYgYXQgbGVhc3Qgb25lIGVycm9yIGlzIG1vdmVk
LgorICAgIHZpcnR1YWwgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpID0gMDsKIAorICAgIC8vIEZJWE1F
OiBzaG91bGQgYmUgcmVtb3ZlZCwgY2FsbGVyIHNob3VsZCBrZWVwIHRyYWNrIG9mIGNoYW5nZWQg
c3RhdGUuCisgICAgdmlydHVhbCB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpID0gMDsKKworICAg
IC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgY2FsbGVyIGlzIGludGVyZXN0ZWQg
aW4gYnVmZmVyIGNsZWFyIHN0YXR1cyBhbmQKKyAgICAvLyBzaG91bGQgdHJhY2sgdGhhdCBpbiBh
IHZhcmlhYmxlIHRoYXQgdGhlIGNhbGxlciBob2xkcy4gQ2FsbGVyIHNob3VsZCByZWNlaXZlCisg
ICAgLy8gdGhlIHZhbHVlIGZyb20gcmVzaGFwZSgpIGFuZCBkaWRDb21wb3NpdGUoKS4KKyAgICB2
aXJ0dWFsIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSA9IDA7CisgICAgdmlydHVhbCBH
Q0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgPSAwOworCisgICAgLy8g
RklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCB0aGV5J3JlIHBhcnQgb2YgZHJhd2luZyBi
dWZmZXIgYW5kCisgICAgLy8gZGlzcGxheSBidWZmZXIgYWJzdHJhY3Rpb25zIHRoYXQgdGhlIGNh
bGxlciBzaG91bGQgaG9sZCBzZXBhcmF0ZSB0bworICAgIC8vIHRoZSBjb250ZXh0LgorICAgIHZp
cnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9IDA7CisKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
YmUgcmVtb3ZlZC4gVGhlIGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQorICAg
IC8vIHByZXBhcmluZyBmb3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFu
ZCB0aGUgbGF5ZXIgYWdyZWUKKyAgICAvLyBvbiB0aGUgY29udGVudC4KKyAgICB2aXJ0dWFsIHZv
aWQgbWFya0xheWVyQ29tcG9zaXRlZCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0
ZUNvbnRleHRDaGFuZ2VkKCkgPSAwOworCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQogICAgIC8vIFJldHVybnMgaW50ZXJmYWNlIGZvciBDViBpbnRlcmFjdGlvbiBpZiB0
aGUgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50LgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
R0xDViogYXNDVigpID0gMDsKICNlbmRpZgogCi0jaWYgIVVTRShBTkdMRSkKLSAgICAvLyBIZWxw
ZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBpeGVsPT0wIGNhc2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6
ZWQgdG8gMC4KLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBubyBHTCBlcnJvciBpcyBzeW50aGVzaXpl
ZC4KLSAgICAvLyBCeSBkZWZhdWx0LCBhbGlnbm1lbnQgaXMgNCwgdGhlIE9wZW5HTCBkZWZhdWx0
IHNldHRpbmcuCi0gICAgdmlydHVhbCBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpID0gIDA7Ci0jZW5kaWYK
IAogICAgIEludFNpemUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVy
biBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpOyB9CiAKQEAgLTEzMzUs
MTAgKzEzMzcsNiBAQCBwdWJsaWM6CiAgICAgLy8gICBJTlZBTElEX0VOVU0gaWYgZm9ybWF0L3R5
cGUgaXMgaWxsZWdhbC4KICAgICBzdGF0aWMgR0NHTGVudW0gY29tcHV0ZUltYWdlU2l6ZUluQnl0
ZXMoR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgY29uc3QgUGl4ZWxTdG9yZVBhcmFtcyYsIHVu
c2lnbmVkKiBpbWFnZVNpemVJbkJ5dGVzLCB1bnNpZ25lZCogcGFkZGluZ0luQnl0ZXMsIHVuc2ln
bmVkKiBza2lwU2l6ZUluQnl0ZXMpOwogCi0jaWYgIVVTRShBTkdMRSkKLSAgICBzdGF0aWMgYm9v
bCBwb3NzaWJsZUZvcm1hdEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdChHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0mIGZvcm1hdCwgR0NHTGVudW0mIHR5cGUpOwotI2VuZGlmIC8vICFV
U0UoQU5HTEUpCi0KICAgICAvLyBFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIElt
YWdlRGF0YSBpbnRvIHRoZSBwYXNzZWQgVmVjdG9yLAogICAgIC8vIHBhY2tpbmcgdGhlIHBpeGVs
IGRhdGEgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQgYW5kIHR5cGUsCiAgICAgLy8gYW5k
IG9iZXlpbmcgdGhlIGZsaXBZIGFuZCBwcmVtdWx0aXBseUFscGhhIGZsYWdzLiBSZXR1cm5zIHRy
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKaW5kZXggZjM1MWNmYjhkOGZlMTZiNzY4ZjIzYTRkYTZiZGE3NDUwNWRkNjFmOS4uNjk5
ZGUyOGJhZWI5MmNjMjUzMzk0ZGJhODBiN2U3YTc4ZTEzZjQ0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgdHlwZWRlZiBjaGFyIEdDR0xjaGFyOwogdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0
OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKIHR5cGVkZWYgc3RydWN0
IF9fR0xzeW5jKiBHQ0dMc3luYzsKK3R5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKIAogdHlwZWRlZiBH
Q0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAyYmQxY2RlZjU4MWRjZmRjNzZmMDlkYjdhNGQy
ZTNhYWE3MzJhZGU1Li44MmMzNjEyYzAwZmU5NzViZDM4OTcxNTkzMjNiNmFjODEwMWI5MjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAg
LTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogY3VycmVudCBpbXBsZW1l
bnRhdGlvbnMgb2YgdGhpcyBtZXRob2QgaGF2ZSB0aGUgcmVzdHJpY3Rpb24gdGhhdCB0aGV5IG9u
bHkgd29yawogICAgIC8vIHdpdGggdGV4dHVyZXMgdGhhdCBhcmUgUkdCIG9yIFJHQkEgZm9ybWF0
LCBhbmQgVU5TSUdORURfQllURSB0eXBlLgotICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMJiwgR0NHTGVudW0sIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwogICAgIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAppbmRleCA1MDI0YjIwOGUxM2I2MjNkOWFmNTI3YjFmMGYwYWJlMmE1NjU2
NGY0Li41ODA2NzE1YTdiMmM4NzU3NjkwMmE3NzM1ODRkZjE4MDU4MjUxMDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dEdMOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1hZ2VE
YXRhOwpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0
YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAg
IHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0luVXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAy
ODgzNDhlNTJhMWVlM2ZiOWQxYTE3ZDc3NDY4NGQ2OWQ2YjQxMjM5Li44YjBkNzNlOGQ4MjRmZGI2
OWNmZjA2OThjODJmODlkMDkxODVhNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikK
ICAgICBtX3ByaXZhdGUtPnBhaW50KHAsIHIpOwogfQogCi1ib29sIE1lZGlhUGxheWVyOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxh
eWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wq
IGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQs
IHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDJhYjE1ODk5NWQ3ZDJlZWRhZjMwN2M2Nzk1MmMz
ZmY2YmVkZjRjNzEuLmQyNTIwYWNiYmJiMWE2OThjYTNkNDA3MDY2MmYxZDNmZDk2ODcwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
NjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1NvdXJjZVByb3Zp
ZGVyOwogY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOwogY2xh
c3MgTGVnYWN5Q0RNOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZGVz
dGluYXRpb24gdGV4dHVyZSBtYXkgbmVlZCB0byBiZSByZXNpemVkIHRvIHRvIHRoZSBkaW1lbnNp
b25zIG9mIHRoZSBzb3VyY2UgdGV4dHVyZSBvciByZS1kZWZpbmVkIHRvIHRoZSByZXF1aXJlZCBp
bnRlcm5hbEZvcm1hdC4KICAgICAvLyBUaGUgY3VycmVudCByZXN0cmljdGlvbnMgcmVxdWlyZSB0
aGF0IGZvcm1hdCBzaG91ZCBiZSBSR0Igb3IgUkdCQSwgdHlwZSBzaG91bGQgYmUgVU5TSUdORURf
QllURSBhbmQgbGV2ZWwgc2hvdWxkIGJlIDAuIEl0IG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVy
ZS4KIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7Cisg
ICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAogICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4
IDdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYuLmY5YjkyMDYxOTBkNWFl
ZDA2ZDBkODhjMGM3NDE1Y2UxNjRkYTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjAsNyArMTYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQo
Yywgcik7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0s
IEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBH
Q0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNl
dFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
CmluZGV4IDEzZmFmNWRiNjRmZmIyODZiZTZhZDk1Nzk1MDk1ZmNjOTNmMzMzOTQuLjFjOGJjNDI1
NTBmMWMxZDk1YzMwODJmNjczNzZhNTY5NTA2YmZhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5j
cHAKQEAgLTE0OCwyMSArMTQ4LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6aW5pdGlhbGl6
ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFibGVFeHRlbnNp
b25zID0gdHJ1ZTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNFWFQo
aW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVpLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgdm9pZCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9y
bWZ2RVhUKEdDR0x1aW50LCBpbnQsIEdDR0xzaXplaSwgZmxvYXQgKikKLXsKLSAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgaW50LCBHQ0dMc2l6
ZWksIGludCAqKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRk
aW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgpAQCAtNDYyLDYg
KzQ0Nyw4IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEUm9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2CiAgICAgICAgIHJldHVybjsKIAogICAg
IGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgYnVmU2l6ZSwgZGF0
YSk7CisgICAgbV9jb250ZXh0LT5tX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fY29udGV4
dC0+bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworCiB9CiAKIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKQpAQCAtNDcwLDYgKzQ1Nyw3IEBA
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGJ1ZlNpemUsIGRhdGEpOwor
ICAgIG1fY29udGV4dC0+bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX2NvbnRleHQtPm1f
c3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBFeHRlbnNpb25zR0xBTkdM
RTo6Y29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5o
CmluZGV4IDQ2YWFjOWYyMWVlMjdjYzc1YTA4Y2Y3YzFiNzVhMTBhZTQ1NzI4MjAuLjEyNTY5NTY3
YzE3YzkyNmI3MWE5MWJiNGJiMTE5NTU2YmEwNmYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0cyhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKKyAgICBHQ0dMaW50IGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3Qg
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNjMsMTEgKzYzLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHBy
aW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50
IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAotICAgIC8vIEVYVCBSb2J1c3Ru
ZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLSAgICB2b2lkIHJlYWRuUGl4
ZWxzRVhUKGludCB4LCBpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCB2b2lkICpk
YXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3Jh
bSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSBvdmVycmlkZTsKLQogICAgIGJv
b2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzTlZJRElBOyB9CiAgICAgYm9vbCBp
c0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBTUQ7IH0KICAgICBib29sIGlzSW50ZWwoKSBv
dmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0KQEAgLTg4LDM0ICs4MywzNCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRTaGFkZXJpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHNoYWRlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAq
cGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3RB
TkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlYWRQaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVp
ICpyb3dzLCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTHNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0ZXhJbWFnZTJEUm9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwogICAg
IHZvaWQgdGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
b21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwg
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFO
R0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIGludCBi
b3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCB2b2lk
KiBkYXRhKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCB4b2Zmc2V0LCBpbnQgeW9mZnNl
dCwgaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBvdmVycmlkZTsKLQotICAgIHZvaWQgdGV4SW1h
Z2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4U3ViSW1h
Z2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgeG9mZnNldCwg
aW50IHlvZmZzZXQsIGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICB2b2lkIHRl
eFN1YkltYWdlMkRSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xzaXplaSBidWZTaXplLCBjb25z
dCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgY29uc3QgR0NHTHZvaWQqIGRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eEltYWdlM0RSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xz
aXplaSBidWZTaXplLCBjb25zdCBHQ0dMdm9pZCogZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNv
bnN0IEdDR0x2b2lkKiBkYXRhKSBvdmVycmlkZTsKKworICAgIHZvaWQgdGV4SW1hZ2UzRFJvYnVz
dEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRRdWVyeWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRC
dWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMdWludCBpbmRleCwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBp
bnQgKmRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqZGF0YSkgb3ZlcnJpZGU7IC8vIE5PTElOVAogICAgIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIHZv
aWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBh
cmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2
NCAqZGF0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRJbnRl
Z2VyNjRpX3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQ2NCAqZGF0YSkgb3ZlcnJp
ZGU7IC8vIE5PTElOVAogICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTHVpbnQgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBjb25zdCBHQ0dMaW50ICpwYXJhbSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMdWludCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0xmbG9hdCAqcGFyYW0p
IG92ZXJyaWRlOwpAQCAtMTI0LDE2ICsxMTksMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEJvb2xlYW5p
X3ZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xib29sZWFuICpkYXRhKSBvdmVycmlkZTsg
Ly8gTk9MSU5UCiAgICAgdm9pZCBnZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0xmbG9hdCAqdmFsKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOworICAg
IHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFRleExl
dmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RB
TkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhl
bHNSb2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2
b2lkICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIGdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpw
YXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNv
bHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMp
IG92ZXJyaWRlOworICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIGNvbnN0IEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRl
eCA1MDA5ODljYmE5NjVkN2NkYzk5ZDE1NTA2MDU5OGY3N2VhMDQ1YjQxLi5kZjZmMzRjOWQ2MThk
MDdhZGYyMTk4NWEzMDFjYmU0MTQyOTM5MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcApAQCAtMjA1MCwyNCArMjA1MCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMCiAg
ICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1
cmUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCi17Ci0gICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFk
ZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1
cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci19Ci0KIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKQEAgLTIyODcsMTYgKzIyNjksNiBAQCBHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLAogICAg
IHJldHVybiBnbDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFt
ZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAg
ICBSRUxFQVNFX0xPRyhXZWJHTCwgIlVzZSBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFIGluc3RlYWQuIik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVT
RURfUEFSQU0ocG5hbWUpOwotICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBB
U1NFUlQocHJvZ3JhbSk7CkBAIC0yNDU5LDM0ICsyNDMxLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRl
eCwgUGwKICAgICBnbDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKLSAgICBVTlVTRURfUEFS
QU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRzdEJ5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNEYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsK
LX0KLQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCkKLXsKLSAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRzdERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTShsZW5ndGgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpi
bGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNY
MSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBk
c3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjkyMSw1OCArMjg2NSw2IEBA
IFZlY3RvcjxHQ0dMdWludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1JbmRp
Y2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgR0NHTGludHB0ciBvZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxmb3Jt
YXQpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGJvcmRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhP
dmVycmlkZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
LXsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGV2ZWwpOwot
ICAgIFVOVVNFRF9QQVJBTSh4b2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oeW9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBV
TlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKLSAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0o
eG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHlvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTSh3
aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1h
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0RhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGhPdmVycmlkZSk7Ci19Ci0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzA2MSwyOSArMjk1Myw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhCiAgICAgZ2w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQotewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAg
ICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURf
UEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFS
QU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgp
OwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci19Ci0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YXNDVigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNzg5ZTI2ZjkyMWExYmZmMTdi
OWQ0YjY3ZTczYTYxZGMwMGU4ZDVkYy4uZjcxMzEyNjVlY2M2ODNkMThjMjk1ODUxZDhiZWZkMzNk
Y2MxZTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
ZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7
CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDA3OGViYmE0MjhkNzNmNzJiMWQ4NGY2NWM2MTA0M2QzOGQ4NjU0ODYu
LjVmMGEyNDYwNDM2MTc4NjE5NGZhOGUwYzZjY2Q0YzYwMzI0Y2NhOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtNDIsOCArNDIsOCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENH
LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbXBvcnQg
IkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIKICNpbXBvcnQgIkluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aCIKQEAgLTIzMjUsNyArMjMyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKIH0KIAot
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRU
ZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMTEyMjVjZWIzMTIyOTQ3OTFlNGU3NTYwNmM3NDIyY2Q5
MmY2ZTU5My4uMzA2NTRlMjY4ZGM0NGUyZTNhMDdlMTNkZmQwOTE1ZTA3N2UzZGY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAg
IGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOworICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxh
dGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0Fj
Y2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gY2FsbGVkIHdoZW4g
dGhlIHJlbmRlcmluZyBzeXN0ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0IG9mIGFjY2VsZXJhdGVk
IHJlbmRlcmluZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGRiNGQ0M2M1
ZjBlODdhN2ZhMWYxODEzZGI5MDQ4MWY2MzMyMTdhMzMuLmI0MDI0YTkxNDhlMWFlMjViM2M5NDI3
ODM4NDY5MmFiMDFhZWE2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMzLDgg
KzMzLDggQEAKICNpbXBvcnQgIkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKICNp
bXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCIK
ICNpbXBvcnQgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIgpAQCAtNjIzLDcgKzYyMyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRG
cmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCi1ib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9y
bUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRU
ZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICAvLyBXZSBoYXZlIGJlZW4gYXNrZWQgdG8g
cGFpbnQgaW50byBhIFdlYkdMIGNhbnZhcywgc28gdGFrZSB0aGF0IGFzIGEgc2lnbmFsIHRvIGNy
ZWF0ZQogICAgIC8vIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9uLCBldmVuIGlmIHRoYXQgbWVhbnMg
dGhlIG5hdGl2ZSB2aWRlbyBjYW4ndCBhbHNvIGJlIGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IGEwZTUx
MWFlMzVmMDA1ODljZDIxZWIyMWI0ZmQxOWUyNzcxNWQwOTIuLjQ2NjZlM2Q5ZGZmYmE5MDc0N2Ix
ZGNiOWZhMTk5ZjFiODM0MzY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQg
IklPU3VyZmFjZS5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJT1N1cmZhY2VQb29sLmgiCiAjaW1w
b3J0ICJJbWFnZUJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCAzYTdhMDcyNjA3YmFiNWY2MDk4NzI3
MWFhOGU2M2E2YmVlMTRjZDNiLi40NGZmOTJlYTE0ZmVlZjUzMzllNTI2Mjk4MzQyNzNiYjMwNjZi
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcApAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKEVHTCkKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0wuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMC4uN2UwYWQ1NDc4
Y2ExNzkxOWEwZTliMzMxOWNmZjQ2YzJmZmMxMDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMxODIsNyArMzE4Miw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjCiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQotYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRw
dXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wq
IGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0
VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2
MmU3Mzc5MDhhZDEwOS4uZTAxNjE1YjBmM2EzNTBkNmYwNzUwODYyZTM2MGE2YjBjZGI3NzQ5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtOTMs
NyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiBj
bGFzcyBHTENvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgSW50U2l6ZTsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI7CkBAIC0y
MTUsNyArMjE1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQot
ICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVu
dW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDViZTVhOWQ2NzNiNmRhMDlkZjIzZDhiNTI0ZmQ4
MjNjYjZjODkzZGQuLmYxNWI3ZjI5NWE5NTFiMmQ4OTRlYzBmYTkxOTU0ZTk2ZjQ3YTRjMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtOTcsNiArOTcsODggQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGUKICNlbmRpZgogCiAKKyNpZiAhVVNFKEFOR0xFKQorYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJu
YWxGb3JtYXQoR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xl
bnVtJiB0eXBlKQoreworI2RlZmluZSBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKGludGVybmFs
Rm9ybWF0TWFjcm8sIGZvcm1hdE1hY3JvLCB0eXBlTWFjcm8pIGNhc2UgaW50ZXJuYWxGb3JtYXRN
YWNybzogXAorICAgICAgICBmb3JtYXQgPSBmb3JtYXRNYWNybzsgXAorICAgICAgICB0eXBlID0g
dHlwZU1hY3JvOyBcCisgICAgICAgIGJyZWFrOworCisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1h
dCkgeworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQiwgUkdCLCBVTlNJR05F
RF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBLCBSR0JBLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShMVU1JTkFO
Q0VfQUxQSEEsIExVTUlOQU5DRV9BTFBIQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoTFVNSU5BTkNFLCBMVU1JTkFOQ0UsIFVOU0lHTkVEX0JZVEUp
OworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEFMUEhBLCBBTFBIQSwgVU5TSUdO
RURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjgsIFJFRCwgVU5T
SUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjhfU05PUk0s
IFJFRCwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2RiwgUkVE
LCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJGLCBS
RUQsIEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSOFVJLCBSRURf
SU5URUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUjhJLCBSRURfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUjE2VUksIFJFRF9JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJ
QkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjE2SSwgUkVEX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAg
UE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSMzJVSSwgUkVEX0lOVEVHRVIsIFVOU0lHTkVEX0lO
VCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUjMySSwgUkVEX0lOVEVHRVIs
IElOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4LCBSRywgVU5TSUdO
RURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkc4X1NOT1JNLCBS
RywgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkYsIFJHLCBI
QUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyRiwgUkcs
IEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzhVSSwgUkdfSU5U
RUdFUiwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0Uo
Ukc4SSwgUkdfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NB
U0UoUkcxNlVJLCBSR19JTlRFR0VSLCBVTlNJR05FRF9TSE9SVCk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoUkcxNkksIFJHX0lOVEVHRVIsIFNIT1JUKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSRzMyVUksIFJHX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7
CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkczMkksIFJHX0lOVEVHRVIsIElO
VCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOCwgUkdCLCBVTlNJR05F
RF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShTUkdCOCwgUkdCLCBV
TlNJR05FRF9CWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0I1NjUs
IFJHQiwgVU5TSUdORURfU0hPUlRfNV82XzUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQjhfU05PUk0sIFJHQiwgQllURSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoUjExRl9HMTFGX0IxMEYsIFJHQiwgVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JF
Vik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCOV9FNSwgUkdCLCBVTlNJ
R05FRF9JTlRfNV85XzlfOV9SRVYpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNF
KFJHQjE2RiwgUkdCLCBIQUxGX0ZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVf
Q0FTRShSR0IzMkYsIFJHQiwgRkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQjhVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJM
RV9GT1JNQVRfVFlQRV9DQVNFKFJHQjhJLCBSR0JfSU5URUdFUiwgQllURSk7CisgICAgICAgIFBP
U1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMTZVSSwgUkdCX0lOVEVHRVIsIFVOU0lHTkVEX1NI
T1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0IxNkksIFJHQl9JTlRF
R0VSLCBTSE9SVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCMzJVSSwg
UkdCX0lOVEVHRVIsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBF
X0NBU0UoUkdCMzJJLCBSR0JfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0JBOCwgUkdCQSwgVU5TSUdORURfQllURSk7CisgICAgICAgIFBPU1NJQkxF
X0ZPUk1BVF9UWVBFX0NBU0UoU1JHQjhfQUxQSEE4LCBSR0JBLCBVTlNJR05FRF9CWVRFKTsKKyAg
ICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOF9TTk9STSwgUkdCQSwgQllURSk7
CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCNV9BMSwgUkdCQSwgVU5TSUdO
RURfU0hPUlRfNV81XzVfMSk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdC
QTQsIFJHQkEsIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKFJHQjEwX0EyLCBSR0JBLCBVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYp
OworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkExNkYsIFJHQkEsIEhBTEZf
RkxPQVQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKFJHQkEzMkYsIFJHQkEs
IEZMT0FUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBOFVJLCBSR0JB
X0lOVEVHRVIsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9D
QVNFKFJHQkE4SSwgUkdCQV9JTlRFR0VSLCBCWVRFKTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFU
X1RZUEVfQ0FTRShSR0IxMF9BMlVJLCBSR0JBX0lOVEVHRVIsIFVOU0lHTkVEX0lOVF8yXzEwXzEw
XzEwX1JFVik7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9UWVBFX0NBU0UoUkdCQTE2VUksIFJH
QkFfSU5URUdFUiwgVU5TSUdORURfU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQ
RV9DQVNFKFJHQkExNkksIFJHQkFfSU5URUdFUiwgU0hPUlQpOworICAgICAgICBQT1NTSUJMRV9G
T1JNQVRfVFlQRV9DQVNFKFJHQkEzMkksIFJHQkFfSU5URUdFUiwgSU5UKTsKKyAgICAgICAgUE9T
U0lCTEVfRk9STUFUX1RZUEVfQ0FTRShSR0JBMzJVSSwgUkdCQV9JTlRFR0VSLCBVTlNJR05FRF9J
TlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVOVDE2
LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX1NIT1JUKTsKKyAgICAgICAgUE9TU0lCTEVfRk9S
TUFUX1RZUEVfQ0FTRShERVBUSF9DT01QT05FTlQsIERFUFRIX0NPTVBPTkVOVCwgVU5TSUdORURf
U0hPUlQpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIX0NPTVBPTkVO
VDI0LCBERVBUSF9DT01QT05FTlQsIFVOU0lHTkVEX0lOVCk7CisgICAgICAgIFBPU1NJQkxFX0ZP
Uk1BVF9UWVBFX0NBU0UoREVQVEhfQ09NUE9ORU5UMzJGLCBERVBUSF9DT01QT05FTlQsIEZMT0FU
KTsKKyAgICAgICAgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRShERVBUSF9TVEVOQ0lMLCBERVBU
SF9TVEVOQ0lMLCBVTlNJR05FRF9JTlRfMjRfOCk7CisgICAgICAgIFBPU1NJQkxFX0ZPUk1BVF9U
WVBFX0NBU0UoREVQVEgyNF9TVEVOQ0lMOCwgREVQVEhfU1RFTkNJTCwgVU5TSUdORURfSU5UXzI0
XzgpOworICAgICAgICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKERFUFRIMzJGX1NURU5DSUw4
LCBERVBUSF9TVEVOQ0lMLCBGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYpOworICAgICAg
ICBQT1NTSUJMRV9GT1JNQVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9FWFQsIEV4dGVu
c2lvbnNHTDo6U1JHQl9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgICAgICBQT1NTSUJMRV9GT1JN
QVRfVFlQRV9DQVNFKEV4dGVuc2lvbnNHTDo6U1JHQl9BTFBIQV9FWFQsIEV4dGVuc2lvbnNHTDo6
U1JHQl9BTFBIQV9FWFQsIFVOU0lHTkVEX0JZVEUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjdW5kZWYgUE9TU0lCTEVfRk9STUFUX1RZUEVfQ0FTRQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gIVVTRShBTkdMRSkKKworCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2li
aWxpdHkoYm9vbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMjQ0
Mjg5ZDViZWQyMGI5MGMwZTY2YzNjMzc1NDM1MTJmMjQ5MDlhYi4uNzc1ZjkwNDA2ZjQyYTYwOTFk
ZGMzZmVhMWU1MGI3YzJiMGFlNGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTEyOSw3ICsxMjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVNoYWRlckRp
cmVjdChQbGF0Zm9ybUdMT2JqZWN0KTsKIAogI2lmICFVU0UoQU5HTEUpCi0gICAgYm9vbCB0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGln
bm1lbnQgPSA0KSBmaW5hbDsKKyAgICAvLyBIZWxwZXIgdG8gdGV4SW1hZ2UyRCB3aXRoIHBpeGVs
PT0wIGNhc2U6IHBpeGVscyBhcmUgaW5pdGlhbGl6ZWQgdG8gMC4KKyAgICAvLyBSZXR1cm4gdHJ1
ZSBpZiBubyBHTCBlcnJvciBpcyBzeW50aGVzaXplZC4KKyAgICAvLyBCeSBkZWZhdWx0LCBhbGln
bm1lbnQgaXMgNCwgdGhlIE9wZW5HTCBkZWZhdWx0IHNldHRpbmcuCisgICAgYm9vbCB0ZXhJbWFn
ZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGlu
dCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1l
bnQgPSA0KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmlu
YWw7CkBAIC0xNjMsOCArMTY2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbG9yTWFzayhHQ0dM
Ym9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9v
bGVhbiBhbHBoYSkgZmluYWw7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmpl
Y3QpIGZpbmFsOwogCi0gICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSBmaW5hbDsKKyNp
ZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisjZW5kaWYKICAgICB2
b2lkIGNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKSBmaW5hbDsKICAgICB2b2lkIGNvcHlU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgY3VsbEZhY2UoR0NHTGVudW0g
bW9kZSkgZmluYWw7CkBAIC0yOTMsNyArMjk4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aWV3
cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KSBmaW5hbDsKIAotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwor
ICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwogCiAgICAgdm9p
ZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CiAgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgZmluYWw7CkBAIC0z
MDcsMTEgKzMxMiwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyA9PT09PT09PT09IFdlYkdMMiBlbnRy
eSBwb2ludHMuCiAKLSAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2
b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBs
ZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpIGZpbmFsOwotCisjaWYgIVVTRShBTkdMRSkKKyAgICB2
b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51
bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOworICAgIHZvaWQg
YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwg
Y29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgp
OworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
c3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBH
Q0dMdWludCBsZW5ndGgpOworI2VuZGlmCiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zm
c2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNC
eXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1
aW50IGxlbmd0aCkgZmluYWw7CisKICAgICB2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQpIGZpbmFsOwogCkBAIC00MDcsMTUgKzQxNCwxNiBAQCBwdWJsaWM6CiAKICAgICBHQ0dM
dWludCBnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrUGFyYW1ldGVyCi0gICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrQmluZGluZykgZmluYWw7CiAKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBmaW5hbDsKLSAgICB2b2lkIGNvbXByZXNz
ZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBi
b3JkZXIsIGNvbnN0IHZvaWQqIHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoT3ZlcnJpZGUpIGZpbmFsOworI2lmICFVU0UoQU5HTEUpCisgICAgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xp
bnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKTsKIAotICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZz
ZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KSBm
aW5hbDsKLSAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBjb25zdCB2b2lkKiBz
cmNEYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aE92ZXJyaWRlKSBm
aW5hbDsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGhPdmVycmlkZSk7CisjZW5kaWYKIAogICAgIHZvaWQgdW5pZm9ybTFmdihHQ0dM
aW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm0yZnYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkgZmluYWw7CkBAIC00MzEsMTYgKzQzOSwxOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkgZmluYWw7CiAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkgZmluYWw7CiAKLSAgICB2b2lkIHJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNl
dCkgZmluYWw7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KSBmaW5hbDsKKyNp
ZiAhVVNFKEFOR0xFKQorICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBk
c3RPZmZzZXQpOworI2VuZGlmCiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAgIHZvaWQg
cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRl
eHQmKTsKIAotICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBtYXJrTGF5
ZXJDb21wb3NpdGVkKCk7Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2
b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpIGZpbmFsOworICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29udGV4dCgpOwog
CkBAIC00NDgsMTkgKzQ1OCwxOSBAQCBwdWJsaWM6CiAgICAgLy8gcmVzZXQgbWV0aG9kIGlzIHBy
ZXNlbnQgdG8ga2VlcCBjYWxsaW5nIGNvZGUgc2ltcGxlciwgc28gaXQKICAgICAvLyBkb2Vzbid0
IGhhdmUgdG8ga25vdyB3aGljaCBidWZmZXJzIHdlcmUgYWxsb2NhdGVkLgogICAgIHZvaWQgcmVz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKLSAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihH
Q0dMYml0ZmllbGQpOwotICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFs
OworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAgICAgdm9p
ZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdm9pZCBzaW11bGF0
ZUNvbnRleHRDaGFuZ2VkKCk7CisgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmlu
YWw7CiAKLSAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVy
Kik7Ci0gICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKTsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KSBmaW5hbDsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpIGZpbmFsOworICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKikgZmluYWw7CiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wy
KQotICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KSBmaW5hbDsKKyAgICB2
b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBQTEFURk9STShNQUMpCkBAIC00ODcsMTAgKzQ5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKLQotICAgIC8vIFJl
YWQgcmVhbCBPcGVuR0wgZXJyb3JzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBzeW50aGV0aWMKLSAg
ICAvLyBlcnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgbW92
ZWQuCi0gICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBib29s
IG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwogCiAgICAgLy8gU3VwcG9y
dCBmb3IgZXh0ZW5zaW9ucy4gUmV0dXJucyBhIG5vbi1udWxsIG9iamVjdCwgdGhvdWdoIG5vdAog
ICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0
ZWQgb24gdGhlCkBAIC01MTMsNiArNTIwLDEwIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHRHTENWKiBhc0NWKCkgZmluYWw7CiAjZW5kaWYKIAorI2lmICFVU0UoQU5HTEUpCisgICAgc3Rh
dGljIGJvb2wgcG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQoR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtJiBmb3JtYXQsIEdDR0xlbnVtJiB0eXBlKTsKKyNlbmRp
ZiAvLyAhVVNFKEFOR0xFKQorCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIERlc3RpbmF0aW9uID0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbiwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENv
bnRleHQgPSBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggOTg0ZjYyZDBiNTRkZDhhOGFlYTM5N2IwODE3N2ViOGI0NmM5ZmY3
MS4uYjBjMWYxZGZkNDNkNDE1MDQyN2ZmNTIxYWNmNjg0MzYyNzI0MDA1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yOTQzLDE0ICsyOTQz
LDYgQEAgR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1CbG9ja0lu
ZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHBhcmFtcykKLXsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLSAgICBVTlVTRURfUEFSQU0ocG5hbWUp
OwotICAgIFVOVVNFRF9QQVJBTShwYXJhbXMpOwotfQotCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7CkBAIC0yOTc1LDEwICsyOTY3LDYgQEAgR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFMKICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NraXYoUGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dM
aW50KikKLXsKLX0KLQogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQogewogICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDc5YTIx
MTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUuLmUwOWFmMGRjMzJiYjFiYmE1ZWJk
ODZlNGRjMDY3MGEwMmZmN2NkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTgwNSw3ICs4MDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0
LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwg
Ym9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDJhM2MyNjQ1NWNhNmY1NjVhZWM0MjM0OWIyMTFiNTE4
YTBlMjA3ODguLmYzNjM3MjUwOWVhOWU0ZjhlMWE3ZDhmN2Y1Mjc2M2MzNGYxMWU0YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7
Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGlu
dCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CisgICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0s
IEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>