<?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>229128</bug_id>
          
          <creation_ts>2021-08-15 19:46:45 -0700</creation_ts>
          <short_desc>[Metal ANGLE] Fix over-autorelease of rx::DisplayMtl::getMetalDeviceMatchingAttribute() and various Objective-C leaks</short_desc>
          <delta_ts>2022-01-18 15:40:14 -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>ANGLE</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235282</see_also>
          <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>235281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonlee</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784418</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-15 19:46:45 -0700</bug_when>
    <thetext>Fix over-autorelease of rx::DisplayMtl::getMetalDeviceMatchingAttribute() and various Objective-C leaks.

The clang static analyzer flags several leaks in Metal ANGLE code, and I noticed an over-autorelease of the return value of rx::DisplayMtl::getMetalDeviceMatchingAttribute() in the process.

To make this easier/cleaner to fix, I wrote an rx::mtl::adoptObjCObj&lt;&gt;() helper function, which was modeled after WTF::RetainPtr&lt;&gt; in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784419</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-15 19:47:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/81964007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784420</commentid>
    <comment_count>2</comment_count>
      <attachid>435576</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-15 19:50:07 -0700</bug_when>
    <thetext>Created attachment 435576
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784421</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-08-15 19:50:58 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784675</commentid>
    <comment_count>4</comment_count>
      <attachid>435576</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-08-16 15:57:45 -0700</bug_when>
    <thetext>Comment on attachment 435576
Patch v1

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

This looks good - and correct - to me overall, but it would be better if kpiddington, kkinnunen or dino reviewed as well. One small comment.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:190
&gt; +        if (![captureManager startCaptureWithDescriptor:captureDescriptor.get() error:&amp;error])

Note, the example at https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/capturing_gpu_command_data_programmatically?language=objc looks like startCaptureWithDescriptor:error: releases the MTLCaptureDescriptor even if an error occurred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784710</commentid>
    <comment_count>5</comment_count>
      <attachid>435576</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-16 18:18:43 -0700</bug_when>
    <thetext>Comment on attachment 435576
Patch v1

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

Looks fine.  I&apos;ll approve tomorrow if nobody else has yet.

We should be moving towards ARC.  I wonder if upstream ANGLE would have any appetite for something like this at some point:
#if !__has_feature(objc_arc)
#error &quot;ANGLE requires ARC&quot;
#endif

&gt;&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:190
&gt;&gt; +        if (![captureManager startCaptureWithDescriptor:captureDescriptor.get() error:&amp;error])
&gt; 
&gt; Note, the example at https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/capturing_gpu_command_data_programmatically?language=objc looks like startCaptureWithDescriptor:error: releases the MTLCaptureDescriptor even if an error occurred.

It looks to me like that example assumes you&apos;re using ARC.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_state_cache.mm:1049
&gt; +            [newState ANGLE_MTL_RELEASE];

ditto to my comment below.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_state_cache.mm:1242
&gt; +            [newState ANGLE_MTL_RELEASE];

This function returns a AutoObjCPtr.  Why don&apos;t we just adopt the value returned by newComputePipelineStateWithFunction then remove the autorelease below?  That would have the added benefit of reducing the autorelease pool size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784779</commentid>
    <comment_count>6</comment_count>
      <attachid>435576</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-17 04:05:10 -0700</bug_when>
    <thetext>Comment on attachment 435576
Patch v1

Clearing r? to address feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784811</commentid>
    <comment_count>7</comment_count>
      <attachid>435576</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-17 07:53:48 -0700</bug_when>
    <thetext>Comment on attachment 435576
Patch v1

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

&gt;&gt;&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/IOSurfaceSurfaceMtl.mm:190
&gt;&gt;&gt; +        if (![captureManager startCaptureWithDescriptor:captureDescriptor.get() error:&amp;error])
&gt;&gt; 
&gt;&gt; Note, the example at https://developer.apple.com/documentation/metal/frame_capture_debugging_tools/capturing_gpu_command_data_programmatically?language=objc looks like startCaptureWithDescriptor:error: releases the MTLCaptureDescriptor even if an error occurred.
&gt; 
&gt; It looks to me like that example assumes you&apos;re using ARC.

Yes, the coding example assumes ARC.

&gt;&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_state_cache.mm:1242
&gt;&gt; +            [newState ANGLE_MTL_RELEASE];
&gt; 
&gt; This function returns a AutoObjCPtr.  Why don&apos;t we just adopt the value returned by newComputePipelineStateWithFunction then remove the autorelease below?  That would have the added benefit of reducing the autorelease pool size.

LOL...good catch.  Honestly, this was the last thing I fixed, and I didn&apos;t scroll up far enough to see the return type (just thought it returned a bare, autoreleased NS object pointer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784812</commentid>
    <comment_count>8</comment_count>
      <attachid>435684</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-17 07:55:36 -0700</bug_when>
    <thetext>Created attachment 435684
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784813</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-17 07:56:56 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #8)
&gt; Created attachment 435684 [details]
&gt; Patch v2

Fixed methods in mtl_state_cache.mm to remove the -autorelease and use adoptObjCObj&lt;&gt;() instead..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784901</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-08-17 12:43:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; We should be moving towards ARC.  I wonder if upstream ANGLE would have any
&gt; appetite for something like this at some point:
&gt; #if !__has_feature(objc_arc)
&gt; #error &quot;ANGLE requires ARC&quot;
&gt; #endif

After talking with some other Chromium engineers, we&apos;d be glad to work toward this. Let&apos;s wait until Apple&apos;s changes to ANGLE&apos;s Metal backend are fully upstreamed - please see https://bugs.chromium.org/p/angleproject/issues/detail?id=5505 - and current ANGLE is rolled back into WebKit. Currently we&apos;re resolving 1+ year of parallel development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784903</commentid>
    <comment_count>11</comment_count>
      <attachid>435684</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-08-17 12:46:26 -0700</bug_when>
    <thetext>Comment on attachment 435684
Patch v2

Still looks good to me but I defer to achristensen&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784923</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-17 13:32:37 -0700</bug_when>
    <thetext>Committed r281160 (240610@main): &lt;https://commits.webkit.org/240610@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435684.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785227</commentid>
    <comment_count>13</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-08-18 14:53:03 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785228</commentid>
    <comment_count>14</comment_count>
      <attachid>435800</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-08-18 14:53:05 -0700</bug_when>
    <thetext>Created attachment 435800
Patch v1.2 - Resolve failing test in DEBUG, make sure all selectors make it to the frontend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785229</commentid>
    <comment_count>15</comment_count>
      <attachid>435800</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-08-18 14:54:22 -0700</bug_when>
    <thetext>Comment on attachment 435800
Patch v1.2 - Resolve failing test in DEBUG, make sure all selectors make it to the frontend

Type in bug number, this patch doesn&apos;t belong here. Sorry.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435576</attachid>
            <date>2021-08-15 19:50:07 -0700</date>
            <delta_ts>2021-08-17 07:55:34 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-229128-20210815195006.patch</filename>
            <type>text/plain</type>
            <size>21180</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNmRkODg4MTNlOTA5ZWQ0NDViMDhlMGFjOTM4NjBmN2ZlOTU4ZjhmNy4uZTMwYTZiYzIyYTBj
ODg3NDE4ZWQ3NjQ3MzQ4OWYzOTljOTg5NTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTA4LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBGaXggb3Zlci1hdXRvcmVsZWFzZSBv
ZiByeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZSgpIGFuZCB2
YXJpb3VzIE9iamVjdGl2ZS1DIGxlYWtzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MjkxMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTk2NDAwNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9EaXNwbGF5TXRsLmg6CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxE
ZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZSk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHJldHVybiBtdGw6
OkF1dG9PYmpDUHRyPD4gdG8gbWFrZSBvd25lcnNoaXAgY2xlYXIuCisgICAgICAgIChyeDo6RGlz
cGxheU10bDo6bU1ldGFsRGV2aWNlKToKKyAgICAgICAgLSBObyBuZWVkIHRvIGluaXRpYWxpemUg
dG8gbmlsLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlN
dGwubW06CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6aW5pdGlhbGl6ZUltcGwpOgorICAgICAg
ICAtIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRl
KCkuCisgICAgICAgIChyeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJp
YnV0ZSk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHJldHVybiBtdGw6OkF1dG9PYmpDUHRyPD4gdG8g
bWFrZSBvd25lcnNoaXAgY2xlYXIuCisgICAgICAgIC0gRml4IGxlYWsgb2YgYGRldmljZUxpc3Rg
LCBgZXh0ZXJuYWxHUFVzYCwgYGludGVncmF0ZWRHUFVzYCwgYW5kCisgICAgICAgICAgYGRpc2Ny
ZXRlR1BVc2AuCisgICAgICAgIC0gVXNlIG10bDo6YWRvcHRPYmpDT2JqPD4oKSB0byBwcmV2ZW50
IGxlYWsgb2YKKyAgICAgICAgICBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkuCisKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5t
bToKKyAgICAgICAgLSBGaXggbGVhayBvZiBgY2FwdHVyZURlc2NyaXB0b3JgIGluIHR3byBkaWZm
ZXJlbnQgaWYgYmxvY2tzLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1Byb2dyYW1NdGwubW06CisgICAgICAgIC0gRml4IGxlYWsgb2YgYGZ1bmNDb25zdGFudHNgIGlu
IGVhcmx5IHJldHVybiBvbiBlcnJvciBwYXRoLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1Byb3Zva2luZ1ZlcnRleEhlbHBlci5tbToKKyAgICAgICAgKHJ4OjpQcm92
b2tpbmdWZXJ0ZXhIZWxwZXI6OmdldFNwZWNpYWxpemVkU2hhZGVyKToKKyAgICAgICAgLSBGaXgg
bGVhayBvZiBgZmNWYWx1ZXNgLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL1N1cmZhY2VNdGwubW06CisgICAgICAgIC0gRml4IGxlYWsgb2YgYGNhcHR1cmVEZXNjcmlw
dG9yYCBpbiB0d28gZGlmZmVyZW50IGlmIGJsb2Nrcy4KKworICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmg6CisgICAgICAgIChyeDo6bXRsOjpXcmFwcGVk
T2JqZWN0OjpyZXRhaW5Bc3NpZ24pOgorICAgICAgICAtIE1vdmUgc3RhdGVtZW50IGluc2lkZSAj
aWYvI2VuZGlmIHRoYXQgaXNuJ3QgbmVlZGVkIGZvciBBUkMuCisgICAgICAgIChyeDo6bXRsOjpX
cmFwcGVkT2JqZWN0Ojp1bnJldGFpbkFzc2lnbik6IEFkZC4KKyAgICAgICAgKHJ4OjptdGw6OkF1
dG9PYmpDUHRyOjpBdXRvT2JqQ1B0cik6IEFkZC4KKyAgICAgICAgKHJ4OjptdGw6OmFkb3B0T2Jq
Q09iaik6IEFkZC4KKyAgICAgICAgLSBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGFkb3B0IGFuIE9i
amVjdGl2ZS1DIG9iamVjdCB0bworICAgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBhdXRv
cmVsZWFzZSBhICsxIHJldGFpbmVkIG9iamVjdCBiZWZvcmUKKyAgICAgICAgICBhbiBtdGw6OkF1
dG9PYmpDUHRyPD4gb2JqZWN0IHdyYXBzIGl0LiAgTW9kZWxlZCBhZnRlcgorICAgICAgICAgIFdU
Rjo6UmV0YWluUHRyPD4gaW4gV2ViS2l0LgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5tbToKKyAgICAgICAgKHJ4OjptdGw6OlJlbmRlclBp
cGVsaW5lQ2FjaGU6OmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUpOgorICAgICAgICAocng6Om10
bDo6UHJvdm9raW5nVmVydGV4Q29tcHV0ZVBpcGVsaW5lQ2FjaGU6OmNyZWF0ZUNvbXB1dGVQaXBl
bGluZVN0YXRlKToKKyAgICAgICAgLSBGaXggcG90ZW50aWFsIGxlYWsgb2YgYG5ld1N0YXRlYCBp
biBlYXJseSByZXR1cm4gY29kZSBwYXRocy4KKwogMjAyMS0wOC0xNSAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgICJtYWtlIGFuYWx5emUiIHNob3VsZCBydW4g
Y2xhbmcgc3RhdGljIGFuYWx5emVyIGluIGRlZXAgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNw
bGF5TXRsLmgKaW5kZXggZTEyODI3YTAwYWU3NGNlM2Y0YTA4NGFhNTVkODI4OGE2N2U2NGYxMy4u
ZWJjZWQwYjk3YzQwZjA4NjdhNmQxNzY5MWE0NDY0NWRkNjYzZDUyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlN
dGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvRGlzcGxheU10bC5oCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBjbGFzcyBEaXNwbGF5TXRs
IDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgdm9pZCBpbml0aWFsaXplRmVhdHVyZXMoKTsKICAg
ICB2b2lkIGluaXRpYWxpemVMaW1pdGF0aW9ucygpOwogICAgIEVHTGVudW0gRUdMRHJhd2luZ0J1
ZmZlclRleHR1cmVUYXJnZXQoKTsKLSAgICBpZDxNVExEZXZpY2U+IGdldE1ldGFsRGV2aWNlTWF0
Y2hpbmdBdHRyaWJ1dGUoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworICAgIG10
bDo6QXV0b09iakNQdHI8aWQ8TVRMRGV2aWNlPj4gZ2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJp
YnV0ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgYW5nbGU6OlJlc3Vs
dCBpbml0aWFsaXplU2hhZGVyTGlicmFyeSgpOwogCi0gICAgbXRsOjpBdXRvT2JqQ1B0cjxpZDxN
VExEZXZpY2U+PiBtTWV0YWxEZXZpY2UgPSBuaWw7CisgICAgbXRsOjpBdXRvT2JqQ1B0cjxpZDxN
VExEZXZpY2U+PiBtTWV0YWxEZXZpY2U7CiAgICAgdWludDMyX3QgbU1ldGFsRGV2aWNlVmVuZG9y
SWQgICAgICAgICAgICAgICAgPSAwOwogCiAgICAgbXRsOjpDb21tYW5kUXVldWUgbUNtZFF1ZXVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0Rpc3BsYXlNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQppbmRleCBmN2FlNDg4MzFmNGU3NmNl
OTg1ODM1NjNjYmU4NmZiZmQ5ZmU1YzdhLi5jYjNhZmZmNDNlM2Q2MTZjMGYxOTdhYzY3OGNmOWUx
ZWIzYmJjNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQpAQCAtMTM5LDcg
KzEzOSw3IEBAIGFuZ2xlOjpSZXN1bHQgRGlzcGxheU10bDo6aW5pdGlhbGl6ZUltcGwoZWdsOjpE
aXNwbGF5ICpkaXNwbGF5KQogewogICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgewotICAg
ICAgICBtTWV0YWxEZXZpY2UgPSBbZ2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZShkaXNw
bGF5LT5nZXRBdHRyaWJ1dGVNYXAoKSkgQU5HTEVfTVRMX0FVVE9SRUxFQVNFXTsKKyAgICAgICAg
bU1ldGFsRGV2aWNlID0gZ2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZShkaXNwbGF5LT5n
ZXRBdHRyaWJ1dGVNYXAoKSk7CiAgICAgICAgIC8vSWYgd2UgY2FuJ3QgY3JlYXRlIGEgZGV2aWNl
LCBmYWlsIGluaXRpYWxpemF0aW9uLgogICAgICAgICBpZighbU1ldGFsRGV2aWNlLmdldCgpKQog
ICAgICAgICB7CkBAIC0yNDQsMzAgKzI0NCwzMCBAQCBlZ2w6OkVycm9yIERpc3BsYXlNdGw6OnZh
bGlkYXRlQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogfQog
CiAKLWlkPE1UTERldmljZT4gRGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJp
YnV0ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK210bDo6QXV0b09iakNQdHI8
aWQ8TVRMRGV2aWNlPj4gRGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0
ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX01BQ09TKSB8fCBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ0NBVEFMWVNUKQog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGFuZ2xlUHJlZmVycmVkRGV2aWNlID0gYW5nbGU6OkdldEVu
dmlyb25tZW50VmFyKGtBTkdMRVByZWZlcnJlZERldmljZUVudik7Ci0gICAgTlNBcnJheTxpZDxN
VExEZXZpY2U+PiAqZGV2aWNlTGlzdCA9IE1UTENvcHlBbGxEZXZpY2VzKCk7CisgICAgYXV0byBk
ZXZpY2VMaXN0ID0gbXRsOjphZG9wdE9iakNPYmooTVRMQ29weUFsbERldmljZXMoKSk7CiAgICAg
aWYgKGFuZ2xlUHJlZmVycmVkRGV2aWNlICE9ICIiKQogICAgIHsKLSAgICAgICAgZm9yIChpZDxN
VExEZXZpY2U+IGRldmljZSBpbiBkZXZpY2VMaXN0KQorICAgICAgICBmb3IgKGlkPE1UTERldmlj
ZT4gZGV2aWNlIGluIGRldmljZUxpc3QuZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChbZGV2aWNlLm5hbWUubG93ZXJjYXNlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgIGNvbnRh
aW5zU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphbmdsZVByZWZlcnJlZERl
dmljZS5jX3N0cigpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxv
d2VyY2FzZVN0cmluZ10pCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJV
c2luZyBNZXRhbCBEZXZpY2U6ICVAIiwgW2RldmljZSBuYW1lXSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICBkZXZpY2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIE5T
TXV0YWJsZUFycmF5PGlkPE1UTERldmljZT4+ICpleHRlcm5hbEdQVXMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBOU011dGFibGVBcnJheTxpZDxNVExEZXZpY2U+PiAqaW50
ZWdyYXRlZEdQVXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBOU011dGFi
bGVBcnJheTxpZDxNVExEZXZpY2U+PiAqZGlzY3JldGVHUFVzID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF07Ci0gICAgZm9yIChpZCA8TVRMRGV2aWNlPiBkZXZpY2UgaW4gZGV2aWNlTGlz
dCkgeworICAgIGF1dG8gZXh0ZXJuYWxHUFVzID0gbXRsOjphZG9wdE9iakNPYmo8TlNNdXRhYmxl
QXJyYXk8aWQ8TVRMRGV2aWNlPj4+KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIGludGVncmF0ZWRHUFVzID0gbXRsOjphZG9wdE9iakNPYmo8TlNNdXRhYmxlQXJyYXk8
aWQ8TVRMRGV2aWNlPj4+KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGRpc2NyZXRlR1BVcyA9IG10bDo6YWRvcHRPYmpDT2JqPE5TTXV0YWJsZUFycmF5PGlkPE1UTERl
dmljZT4+PihbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChpZCA8TVRM
RGV2aWNlPiBkZXZpY2UgaW4gZGV2aWNlTGlzdC5nZXQoKSkgewogICAgICAgICBpZiAoZGV2aWNl
LnJlbW92YWJsZSkKICAgICAgICAgewogICAgICAgICAgICAgW2V4dGVybmFsR1BVcyBhZGRPYmpl
Y3Q6ZGV2aWNlXTsKQEAgLTI4NiwyMiArMjg2LDIyIEBAIGlkPE1UTERldmljZT4gRGlzcGxheU10
bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
CiAgICAgaWYgKGF0dHJpYnMuZ2V0KEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFLCBFR0xfTE9X
X1BPV0VSX0FOR0xFKSA9PSBFR0xfSElHSF9QT1dFUl9BTkdMRSkKICAgICB7CiAgICAgICAgIC8v
U2VhcmNoIGZvciBhIGRpc2NyZXRlIEdQVSBmaXJzdC4KLSAgICAgICAgZm9yIChpZDxNVExEZXZp
Y2U+IGRldmljZSBpbiBkaXNjcmV0ZUdQVXMpIHsKKyAgICAgICAgZm9yIChpZDxNVExEZXZpY2U+
IGRldmljZSBpbiBkaXNjcmV0ZUdQVXMuZ2V0KCkpIHsKICAgICAgICAgICAgIGlmKCFbZGV2aWNl
IGlzSGVhZGxlc3NdKQogICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgLy9JZiB3ZSd2ZSBzZWxlY3RlZCBhIGxvdyBwb3dlciBkZXZpY2UsIGxvb2sg
dGhyb3VnaCBpbnRlZ3JhdGVkIGRldmljZXMuCi0gICAgZm9yIChpZDxNVExEZXZpY2U+IGRldmlj
ZSBpbiBpbnRlZ3JhdGVkR1BVcykgeworICAgIGZvciAoaWQ8TVRMRGV2aWNlPiBkZXZpY2UgaW4g
aW50ZWdyYXRlZEdQVXMuZ2V0KCkpIHsKICAgICAgICAgaWYoIVtkZXZpY2UgaXNIZWFkbGVzc10p
CiAgICAgICAgICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KICAgICAvL0lmIHdlIHNlbGVjdGVk
IGEgbG93IHBvd2VyIGRldmljZSBhbmQgdGhlcmUncyBubyBsb3ctcG93ZXIgZGV2aWNlcyBhdmFp
YWxibGUsIHJldHVybiB0aGUgZmlyc3QgKGRlZmF1bHQpIGRldmljZS4KLSAgICBpZihkZXZpY2VM
aXN0LmNvdW50ID4gMCkKKyAgICBpZiAoZGV2aWNlTGlzdC5nZXQoKS5jb3VudCA+IDApCiAgICAg
ICAgIHJldHVybiBkZXZpY2VMaXN0WzBdOwogI2VuZGlmCiAgICAgLy9JZiB3ZSBjYW4ndCBmaW5k
IGFueXRoaW5nLCBvciBhcmUgb24gYSBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBwb3dl
ciBvcHRpb25zLCBjcmVhdGUgYSBkZWZhdWx0IGRldmljZS4KLSAgICByZXR1cm4gTVRMQ3JlYXRl
U3lzdGVtRGVmYXVsdERldmljZSgpOworICAgIHJldHVybiBtdGw6OmFkb3B0T2JqQ09iaihNVExD
cmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JT1N1cmZhY2VTdXJm
YWNlTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwubW0KaW5kZXggOTkyOTFiMjhiZjU3MzM0ZTZkZGEy
MDZlNzllN2I1ZWZmZTY5NDlkMC4uNjY4YjU4YzMxODY3NDRmZmM2NTU0YWQwNmRjNGQ5MzU1NGZm
NmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0lPU3VyZmFjZVN1cmZhY2VNdGwu
bW0KQEAgLTE2OCwyNiArMTY4LDI2IEBAIHZvaWQgU3RhcnRGcmFtZUNhcHR1cmUoaWQ8TVRMRGV2
aWNlPiBtZXRhbERldmljZSwgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBtZXRhbENtZFF1CiAjICAgIGlm
ZGVmIF9fTUFDXzEwXzE1CiAgICAgaWYgKEFOR0xFX0FQUExFX0FWQUlMQUJMRV9YQ0koMTAuMTUs
IDEzLjAsIDEzKSkKICAgICB7Ci0gICAgICAgIE1UTENhcHR1cmVEZXNjcmlwdG9yICpjYXB0dXJl
RGVzY3JpcHRvciA9IFtbTVRMQ2FwdHVyZURlc2NyaXB0b3IgYWxsb2NdIGluaXRdOwotICAgICAg
ICBjYXB0dXJlRGVzY3JpcHRvci5jYXB0dXJlT2JqZWN0ICAgICAgICAgPSBtZXRhbERldmljZTsK
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZVBhdGggICAgICAgICAgICAgID0gR2V0TWV0
YWxDYXB0dXJlRmlsZSgpOworICAgICAgICBhdXRvIGNhcHR1cmVEZXNjcmlwdG9yICAgICAgICAg
ICAgICAgID0gbXRsOjphZG9wdE9iakNPYmooW1tNVExDYXB0dXJlRGVzY3JpcHRvciBhbGxvY10g
aW5pdF0pOworICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5nZXQoKS5jYXB0dXJlT2JqZWN0ID0g
bWV0YWxEZXZpY2U7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVQYXRoICAgICAgICAg
ICAgPSBHZXRNZXRhbENhcHR1cmVGaWxlKCk7CiAgICAgICAgIGlmIChmaWxlUGF0aCAhPSAiIikK
ICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgbnVtYmVyZWRQYXRoID0K
ICAgICAgICAgICAgICAgICBmaWxlUGF0aCArIHN0ZDo6dG9fc3RyaW5nKGdGcmFtZUNhcHR1cmVk
IC0gMSkgKyAiLmdwdXRyYWNlIjsKLSAgICAgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmRlc3Rp
bmF0aW9uID0gTVRMQ2FwdHVyZURlc3RpbmF0aW9uR1BVVHJhY2VEb2N1bWVudDsKLSAgICAgICAg
ICAgIGNhcHR1cmVEZXNjcmlwdG9yLm91dHB1dFVSTCA9CisgICAgICAgICAgICBjYXB0dXJlRGVz
Y3JpcHRvci5nZXQoKS5kZXN0aW5hdGlvbiA9IE1UTENhcHR1cmVEZXN0aW5hdGlvbkdQVVRyYWNl
RG9jdW1lbnQ7CisgICAgICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5nZXQoKS5vdXRwdXRVUkwg
PQogICAgICAgICAgICAgICAgIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmlu
Z1dpdGhVVEY4U3RyaW5nOm51bWJlcmVkUGF0aC5jX3N0cigpXQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNEaXJlY3Rvcnk6ZmFsc2VdOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHBhdXNlIGV4ZWN1dGlvbiBvbmx5IGlm
IGFwcGxpY2F0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkIGluc2lkZSBYY29kZQotICAgICAgICAgICAg
Y2FwdHVyZURlc2NyaXB0b3IuZGVzdGluYXRpb24gPSBNVExDYXB0dXJlRGVzdGluYXRpb25EZXZl
bG9wZXJUb29sczsKKyAgICAgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmRlc3RpbmF0
aW9uID0gTVRMQ2FwdHVyZURlc3RpbmF0aW9uRGV2ZWxvcGVyVG9vbHM7CiAgICAgICAgIH0KIAog
ICAgICAgICBOU0Vycm9yICplcnJvcjsKLSAgICAgICAgaWYgKCFbY2FwdHVyZU1hbmFnZXIgc3Rh
cnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6Y2FwdHVyZURlc2NyaXB0b3IgZXJyb3I6JmVycm9yXSkK
KyAgICAgICAgaWYgKCFbY2FwdHVyZU1hbmFnZXIgc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6
Y2FwdHVyZURlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6JmVycm9yXSkKICAgICAgICAgewogICAgICAg
ICAgICAgTlNMb2coQCJGYWlsZWQgdG8gc3RhcnQgY2FwdHVyZSwgZXJyb3IgJUAiLCBlcnJvcik7
CiAgICAgICAgIH0KQEAgLTE5NiwxMSArMTk2LDExIEBAIHZvaWQgU3RhcnRGcmFtZUNhcHR1cmUo
aWQ8TVRMRGV2aWNlPiBtZXRhbERldmljZSwgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBtZXRhbENtZFF1
CiAjICAgIGVuZGlmICAvLyBfX01BQ18xMF8xNQogICAgICAgICBpZiAoQU5HTEVfQVBQTEVfQVZB
SUxBQkxFX1hDSSgxMC4xNSwgMTMuMCwgMTMpKQogICAgIHsKLSAgICAgICAgTVRMQ2FwdHVyZURl
c2NyaXB0b3IgKmNhcHR1cmVEZXNjcmlwdG9yID0gW1tNVExDYXB0dXJlRGVzY3JpcHRvciBhbGxv
Y10gaW5pdF07Ci0gICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmNhcHR1cmVPYmplY3QgICAgICAg
ICA9IG1ldGFsRGV2aWNlOworICAgICAgICBhdXRvIGNhcHR1cmVEZXNjcmlwdG9yICAgICAgICAg
ICAgICAgID0gbXRsOjphZG9wdE9iakNPYmooW1tNVExDYXB0dXJlRGVzY3JpcHRvciBhbGxvY10g
aW5pdF0pOworICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5nZXQoKS5jYXB0dXJlT2JqZWN0ID0g
bWV0YWxEZXZpY2U7CiAKICAgICAgICAgTlNFcnJvciAqZXJyb3I7Ci0gICAgICAgIGlmICghW2Nh
cHR1cmVNYW5hZ2VyIHN0YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yOmNhcHR1cmVEZXNjcmlwdG9y
IGVycm9yOiZlcnJvcl0pCisgICAgICAgIGlmICghW2NhcHR1cmVNYW5hZ2VyIHN0YXJ0Q2FwdHVy
ZVdpdGhEZXNjcmlwdG9yOmNhcHR1cmVEZXNjcmlwdG9yLmdldCgpIGVycm9yOiZlcnJvcl0pCiAg
ICAgICAgIHsKICAgICAgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0IGNhcHR1cmUsIGVy
cm9yICVAIiwgZXJyb3IpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRs
Lm1tCmluZGV4IGNhNmJmZTJjY2IwZjQzODIzMzQwNzBkNDNkNGI2NzIzOWQxOWI4YTkuLjJmNWI5
NTZmYmNiNTM0NGFmNDZiZjRhYWU4YTcwNzdmMTdhZjUyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9Qcm9ncmFtTXRsLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFt
TXRsOjpnZXRTcGVjaWFsaXplZFNoYWRlcihtdGw6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBt
dGw6OlRyYW5zbGF0ZWRTaGFkZXJJbmZvICp0cmFuc2xhdGVkTXNsSW5mbyA9ICZtTXNsU2hhZGVy
VHJhbnNsYXRlSW5mb1tzaGFkZXJUeXBlXTsKICAgICBQcm9ncmFtU2hhZGVyT2JqVmFyaWFudE10
bCAqc2hhZGVyVmFyaWFudDsKLSAgICBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzICpmdW5jQ29u
c3RhbnRzID0gbmlsOworICAgIG10bDo6QXV0b09iakNPYmo8TVRMRnVuY3Rpb25Db25zdGFudFZh
bHVlcz4gZnVuY0NvbnN0YW50czsKIAogICAgIGlmIChzaGFkZXJUeXBlID09IGdsOjpTaGFkZXJU
eXBlOjpWZXJ0ZXgpCiAgICAgewpAQCAtNjM0LDcgKzYzNCw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbU10bDo6Z2V0U3BlY2lhbGl6ZWRTaGFkZXIobXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJh
c3Rlcml6YXRpb25EaXNjYXJkRW5hYmxlZENvbnN0TmFtZSgpXTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgZnVuY0NvbnN0YW50cyA9IFtbTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyBh
bGxvY10gaW5pdF07CisgICAgICAgICAgICBmdW5jQ29uc3RhbnRzID0gbXRsOjphZG9wdE9iakNP
YmooW1tNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAg
ICBbZnVuY0NvbnN0YW50cyBzZXRDb25zdGFudFZhbHVlOiZlbXVsYXRlRGlzY2FyZAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTpNVExEYXRhVHlwZUJvb2wKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aE5hbWU6ZGlzY2FyZEVuYWJsZWRT
dHJdOwpAQCAtNjcyLDcgKzY3Miw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6Z2V0U3Bl
Y2lhbGl6ZWRTaGFkZXIobXRsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldENvdmVyYWdlTWFza0VuYWJs
ZWRDb25zdE5hbWUoKV07CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmNDb25zdGFu
dHMgPSBbW01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgYWxsb2NdIGluaXRdOworICAgICAgICAg
ICAgZnVuY0NvbnN0YW50cyA9IG10bDo6YWRvcHRPYmpDT2JqKFtbTVRMRnVuY3Rpb25Db25zdGFu
dFZhbHVlcyBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2Z1bmNDb25zdGFudHMgc2V0Q29u
c3RhbnRWYWx1ZTomZW11bGF0ZUNvdmVyYWdlTWFzawogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZTpNVExEYXRhVHlwZUJvb2wKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aE5hbWU6Y292ZXJhZ2VNYXNrRW5hYmxlZFN0cl07CkBAIC02OTQs
OSArNjk0LDggQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtTXRsOjpnZXRTcGVjaWFsaXplZFNoYWRl
cihtdGw6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgLy8gQ3JlYXRlIE1ldGFsIHNoYWRlciBvYmpl
Y3QKICAgICBBTkdMRV9NVExfT0JKQ19TQ09QRQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKENy
ZWF0ZU1zbFNoYWRlcihjb250ZXh0LCB0cmFuc2xhdGVkTXNsSW5mby0+bWV0YWxMaWJyYXJ5LCBT
SEFERVJfRU5UUllfTkFNRSwgZnVuY0NvbnN0YW50cywKKyAgICAgICAgQU5HTEVfVFJZKENyZWF0
ZU1zbFNoYWRlcihjb250ZXh0LCB0cmFuc2xhdGVkTXNsSW5mby0+bWV0YWxMaWJyYXJ5LCBTSEFE
RVJfRU5UUllfTkFNRSwgZnVuY0NvbnN0YW50cy5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2hhZGVyVmFyaWFudC0+bWV0YWxTaGFkZXIpKTsKLSAgICAgICAgW2Z1
bmNDb25zdGFudHMgQU5HTEVfTVRMX0FVVE9SRUxFQVNFXTsKICAgICB9CiAKICAgICAvLyBTdG9y
ZSByZWZlcmVuY2UgdG8gdGhlIHRyYW5zbGF0ZWQgc291cmNlIGZvciBlYXNpbHkgcXVlcnlpbmcg
bWFwcGVkIGJpbmRpbmdzIGxhdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb3Zva2luZ1ZlcnRleEhlbHBlci5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm92
b2tpbmdWZXJ0ZXhIZWxwZXIubW0KaW5kZXggODk4Y2NjZTdjMWFlMGRiZGFhYWJiMTZlZGRmNTM4
MDJlNWI3ZTAyNi4uZDZjOTNjY2FhNzM2YjA4MDc5ODk1YzBjYjE3OTBlNTEyODMzMGZhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL1Byb3Zva2luZ1ZlcnRleEhlbHBlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvdm9raW5nVmVydGV4SGVscGVyLm1tCkBA
IC0xNzQsMTEgKzE3NCwxMiBAQCBhbmdsZTo6UmVzdWx0IFByb3Zva2luZ1ZlcnRleEhlbHBlcjo6
Z2V0U3BlY2lhbGl6ZWRTaGFkZXIocng6Om10bDo6Q29udGV4dCAqY29udAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPE1UTEZ1bmN0aW9uPiAqc2hhZGVyT3V0
KQogewogICAgIHVpbnQgaW5kZXhCdWZmZXJLZXkgPSBidWlsZEluZGV4QnVmZmVyS2V5KHBpcGVs
aW5lRGVzYyk7Ci0gICAgTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyAgKiBmY1ZhbHVlcyA9IFtb
TVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyBhbGxvY11pbml0XTsKKyAgICBhdXRvIGZjVmFsdWVz
ID0gbXRsOjphZG9wdE9iakNPYmooW1tNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzIGFsbG9jXSBp
bml0XSk7CiAgICAgW2ZjVmFsdWVzIHNldENvbnN0YW50VmFsdWU6JmluZGV4QnVmZmVyS2V5IHR5
cGU6TVRMRGF0YVR5cGVVSW50IHdpdGhOYW1lOkAiZml4SW5kZXhCdWZmZXJLZXkiXTsKICAgICAK
LSAgICByZXR1cm4gQ3JlYXRlTXNsU2hhZGVyKGNvbnRleHQsIG1Qcm92b2tpbmdWZXJ0ZXhMaWJy
YXJ5LCBAImZpeEluZGV4QnVmZmVyIiwgZmNWYWx1ZXMsIHNoYWRlck91dCk7CisgICAgcmV0dXJu
IENyZWF0ZU1zbFNoYWRlcihjb250ZXh0LCBtUHJvdm9raW5nVmVydGV4TGlicmFyeSwgQCJmaXhJ
bmRleEJ1ZmZlciIsIGZjVmFsdWVzLmdldCgpLCBzaGFkZXJPdXQpOwogfQorCiAvL1ByaXZhdGUg
Y29tbWFuZCBidWZmZXIKIGJvb2wgUHJvdm9raW5nVmVydGV4SGVscGVyOjpoYXNTcGVjaWFsaXpl
ZFNoYWRlcihnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IG10bDo6UHJvdm9raW5nVmVydGV4Q29tcHV0ZVBpcGVsaW5lRGVz
YyAmcmVuZGVyUGlwZWxpbmVEZXNjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbQpp
bmRleCAwZGUzYzU4MzBmYzhiYmI3MjQxYjViNDNlMWQ2MjYyNGZkMjI2YzA0Li4xNDkyNGUzYmI1
YTQ2MjUxMzkyOWZkZjQ1ZDhiMjhjMGNmY2RhYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3Vy
ZmFjZU10bC5tbQpAQCAtMTc3LDI2ICsxNzcsMjYgQEAgdm9pZCBTdGFydEZyYW1lQ2FwdHVyZShp
ZDxNVExEZXZpY2U+IG1ldGFsRGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IG1ldGFsQ21kUXUK
ICMgICAgaWZkZWYgX19NQUNfMTBfMTUKICAgICBpZiAoQU5HTEVfQVBQTEVfQVZBSUxBQkxFX1hD
SSgxMC4xNSwgMTMuMCwgMTMpKQogICAgIHsKLSAgICAgICAgTVRMQ2FwdHVyZURlc2NyaXB0b3Ig
KmNhcHR1cmVEZXNjcmlwdG9yID0gW1tNVExDYXB0dXJlRGVzY3JpcHRvciBhbGxvY10gaW5pdF07
Ci0gICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmNhcHR1cmVPYmplY3QgICAgICAgICA9IG1ldGFs
RGV2aWNlOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlUGF0aCAgICAgICAgICAgICAg
PSBHZXRNZXRhbENhcHR1cmVGaWxlKCk7CisgICAgICAgIGF1dG8gY2FwdHVyZURlc2NyaXB0b3Ig
ICAgICAgICAgICAgICAgPSBtdGw6OmFkb3B0T2JqQ09iaihbW01UTENhcHR1cmVEZXNjcmlwdG9y
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmNhcHR1cmVP
YmplY3QgPSBtZXRhbERldmljZTsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZVBhdGgg
ICAgICAgICAgICA9IEdldE1ldGFsQ2FwdHVyZUZpbGUoKTsKICAgICAgICAgaWYgKGZpbGVQYXRo
ICE9ICIiKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBudW1iZXJl
ZFBhdGggPQogICAgICAgICAgICAgICAgIGZpbGVQYXRoICsgc3RkOjp0b19zdHJpbmcoZ0ZyYW1l
Q2FwdHVyZWQgLSAxKSArICIuZ3B1dHJhY2UiOwotICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0
b3IuZGVzdGluYXRpb24gPSBNVExDYXB0dXJlRGVzdGluYXRpb25HUFVUcmFjZURvY3VtZW50Owot
ICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0b3Iub3V0cHV0VVJMID0KKyAgICAgICAgICAgIGNh
cHR1cmVEZXNjcmlwdG9yLmdldCgpLmRlc3RpbmF0aW9uID0gTVRMQ2FwdHVyZURlc3RpbmF0aW9u
R1BVVHJhY2VEb2N1bWVudDsKKyAgICAgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLm91
dHB1dFVSTCA9CiAgICAgICAgICAgICAgICAgW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNTdHJp
bmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bnVtYmVyZWRQYXRoLmNfc3RyKCldCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpc0RpcmVjdG9yeTpmYWxzZV07CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcGF1c2UgZXhlY3V0aW9u
IG9ubHkgaWYgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQgaW5zaWRlIFhjb2RlCi0gICAg
ICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5kZXN0aW5hdGlvbiA9IE1UTENhcHR1cmVEZXN0aW5h
dGlvbkRldmVsb3BlclRvb2xzOworICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuZ2V0KCku
ZGVzdGluYXRpb24gPSBNVExDYXB0dXJlRGVzdGluYXRpb25EZXZlbG9wZXJUb29sczsKICAgICAg
ICAgfQogCiAgICAgICAgIE5TRXJyb3IgKmVycm9yOwotICAgICAgICBpZiAoIVtjYXB0dXJlTWFu
YWdlciBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpjYXB0dXJlRGVzY3JpcHRvciBlcnJvcjom
ZXJyb3JdKQorICAgICAgICBpZiAoIVtjYXB0dXJlTWFuYWdlciBzdGFydENhcHR1cmVXaXRoRGVz
Y3JpcHRvcjpjYXB0dXJlRGVzY3JpcHRvci5nZXQoKSBlcnJvcjomZXJyb3JdKQogICAgICAgICB7
CiAgICAgICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBzdGFydCBjYXB0dXJlLCBlcnJvciAlQCIs
IGVycm9yKTsKICAgICAgICAgfQpAQCAtMjA1LDExICsyMDUsMTEgQEAgdm9pZCBTdGFydEZyYW1l
Q2FwdHVyZShpZDxNVExEZXZpY2U+IG1ldGFsRGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IG1l
dGFsQ21kUXUKICMgICAgZW5kaWYgIC8vIF9fTUFDXzEwXzE1CiAgICAgICAgIGlmIChBTkdMRV9B
UFBMRV9BVkFJTEFCTEVfWENJKDEwLjE1LCAxMy4wLCAxMykpCiAgICAgewotICAgICAgICBNVExD
YXB0dXJlRGVzY3JpcHRvciAqY2FwdHVyZURlc2NyaXB0b3IgPSBbW01UTENhcHR1cmVEZXNjcmlw
dG9yIGFsbG9jXSBpbml0XTsKLSAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuY2FwdHVyZU9iamVj
dCAgICAgICAgID0gbWV0YWxEZXZpY2U7CisgICAgICAgIGF1dG8gY2FwdHVyZURlc2NyaXB0b3Ig
ICAgICAgICAgICAgICAgPSBtdGw6OmFkb3B0T2JqQ09iaihbW01UTENhcHR1cmVEZXNjcmlwdG9y
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmNhcHR1cmVP
YmplY3QgPSBtZXRhbERldmljZTsKIAogICAgICAgICBOU0Vycm9yICplcnJvcjsKLSAgICAgICAg
aWYgKCFbY2FwdHVyZU1hbmFnZXIgc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6Y2FwdHVyZURl
c2NyaXB0b3IgZXJyb3I6JmVycm9yXSkKKyAgICAgICAgaWYgKCFbY2FwdHVyZU1hbmFnZXIgc3Rh
cnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6Y2FwdHVyZURlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6JmVy
cm9yXSkKICAgICAgICAgewogICAgICAgICAgICAgTlNMb2coQCJGYWlsZWQgdG8gc3RhcnQgY2Fw
dHVyZSwgZXJyb3IgJUAiLCBlcnJvcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2NvbW1vbi5oCmluZGV4IDQ5ZTI1MTk2YTY3YjkxMzA4MDliN2VhOGNkODIyY2E5YmQ5MTY0MWIu
LjJhMjg0ZDA3NDRmNWZlODEzNDFhODVmYjAxYWI0OGM1NzEzMzhhNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29t
bW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL210bF9jb21tb24uaApAQCAtMjA4LDE0ICsyMDgsMjAgQEAgY2xhc3MgV3JhcHBlZE9i
amVjdAogCiAgICAgdm9pZCByZXRhaW5Bc3NpZ24oVCBvYmopCiAgICAgewotICAgICAgICBUIHJl
dGFpbmVkID0gb2JqOwogI2lmICFfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorICAgICAgICBUIHJl
dGFpbmVkID0gb2JqOwogICAgICAgICBbcmV0YWluZWQgcmV0YWluXTsKICNlbmRpZgogICAgICAg
ICByZWxlYXNlKCk7CiAgICAgICAgIG1NZXRhbE9iamVjdCA9IG9iajsKICAgICB9CiAKKyAgICB2
b2lkIHVucmV0YWluQXNzaWduKFQgb2JqKQorICAgIHsKKyAgICAgICAgcmVsZWFzZSgpOworICAg
ICAgICBtTWV0YWxPYmplY3QgPSBvYmo7CisgICAgfQorCiAgIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWxlYXNlKCkKICAgICB7CkBAIC0yMjgsNiArMjM0LDIxIEBAIGNsYXNzIFdyYXBwZWRPYmplY3QK
ICAgICBUIG1NZXRhbE9iamVjdCA9IG5pbDsKIH07CiAKKy8vIEJlY2F1c2UgQVJDIGVuYWJsZW1l
bnQgaXMgYSBjb21waWxlLXRpbWUgY2hvaWNlLCBhbmQgd2UgY29tcGlsZSB0aGlzIGhlYWRlcgor
Ly8gYm90aCB3YXlzLCB3ZSBuZWVkIGEgc2VwYXJhdGUgY29weSBvZiBvdXIgY29kZSB3aGVuIEFS
QyBpcyBlbmFibGVkLgorI2lmIF9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisjZGVmaW5lIGFkb3B0
T2JqQ09iaiBhZG9wdE9iakNPYmpBcmMKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIEF1dG9PYmpDUHRyOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIEF1dG9P
YmpDT2JqID0gQXV0b09iakNQdHI8VCAqPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFU+CitBdXRv
T2JqQ09iajxVPiBhZG9wdE9iakNPYmooVSogTlNfUkVMRUFTRVNfQVJHVU1FTlQpIF9fYXR0cmli
dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKKwogLy8gVGhpcyBjbGFzcyBpcyBzaW1p
bGFyIHRvIFdyYXBwZWRPYmplY3QsIGhvd2V2ZXIsIGl0IGFsbG93cyBjaGFuZ2luZyB0aGUKIC8v
IGludGVybmFsIHBvaW50ZXIgd2l0aCBwdWJsaWMgbWV0aG9kcy4KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgpAQCAtMjkzLDcgKzMxNCwxMyBAQCBjbGFzcyBBdXRvT2JqQ1B0ciA6IHB1YmxpYyBXcmFw
cGVkT2JqZWN0PFQ+CiAKICAgICB1c2luZyBQYXJlbnRUeXBlOjpyZXRhaW5Bc3NpZ247CiAKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICBmcmllbmQgQXV0b09iakNPYmo8VT4gYWRvcHRP
YmpDT2JqKFUqIE5TX1JFTEVBU0VTX0FSR1VNRU5UKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51
c2VkX3Jlc3VsdF9fKSk7CisKICAgcHJpdmF0ZToKKyAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQg
fTsKKyAgICBBdXRvT2JqQ1B0cihUIHNyYywgQWRvcHRUYWcpIHsgdGhpcy0+dW5yZXRhaW5Bc3Np
Z24oc3JjKTsgfQorCiAgICAgdm9pZCB0cmFuc2ZlcihBdXRvT2JqQ1B0ciAmJnNyYykKICAgICB7
CiAgICAgICAgIHRoaXMtPnJldGFpbkFzc2lnbihzdGQ6Om1vdmUoc3JjLmdldCgpKSk7CkBAIC0z
MDEsOCArMzI4LDE4IEBAIGNsYXNzIEF1dG9PYmpDUHRyIDogcHVibGljIFdyYXBwZWRPYmplY3Q8
VD4KICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXVzaW5nIEF1dG9PYmpDT2Jq
ID0gQXV0b09iakNQdHI8VCAqPjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBVPgoraW5saW5lIEF1dG9P
YmpDT2JqPFU+IGFkb3B0T2JqQ09iaihVKiBOU19SRUxFQVNFU19BUkdVTUVOVCBzcmMpCit7Cisj
aWYgX19oYXNfZmVhdHVyZShvYmpjX2FyYykKKyAgICByZXR1cm4gc3JjOworI2VsaWYgZGVmaW5l
ZChPQkpDX05PX0dDKQorICAgIHJldHVybiBBdXRvT2JqQ1B0cjxVKj4oc3JjLCBBdXRvT2JqQ1B0
cjxVKj46OkFkb3B0KTsKKyNlbHNlCisjZXJyb3IgIk9iakMgR0Mgbm90IHN1cHBvcnRlZC4iCisj
ZW5kaWYKK30KKwogCiAvLyBOT1RFOiBTaGFyZWRFdmVudCBpcyBvbmx5IGRlY2xhcmVkIG9uIGlP
UyAxMi4wKyBvciBtYWMgMTAuMTQrCiAjaWYgZGVmaW5lZChfX0lQSE9ORV8xMl8wKSB8fCBkZWZp
bmVkKF9fTUFDXzEwXzE0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5tbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUu
bW0KaW5kZXggMDBkMzkyMTZjZGMxMjY1ZTAzMmMzZjU5OGM1NzM3NmQxZmExYzA2Yi4uZmQ2MTMy
ZjI4MDc3OTQ1ZmU3ODM5NDc5Yzg3YTc5MTdmZjk5Njk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9zdGF0ZV9jYWNo
ZS5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX3N0YXRlX2NhY2hlLm1tCkBAIC0xMDQ2LDYgKzEwNDYsNyBAQCBBdXRvT2JqQ1B0
cjxpZDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPj4gUmVuZGVyUGlwZWxpbmVDYWNoZTo6Y3JlYXRl
UmVuZGVyUGlwZWxpbgogICAgICAgICBpZiAoZXJyKQogICAgICAgICB7CiAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihlcnIsIF9fRklMRV9fLCBBTkdMRV9GVU5DVElPTiwgX19MSU5F
X18pOworICAgICAgICAgICAgW25ld1N0YXRlIEFOR0xFX01UTF9SRUxFQVNFXTsKICAgICAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIApAQCAtMTIzOCw2ICsxMjM5LDcgQEAgQXV0b09i
akNQdHI8aWQ8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+PiBQcm92b2tpbmdWZXJ0ZXhDb21wdXRl
UGlwZWxpbmVDYWNoZTo6Y3IKICAgICAgICAgaWYgKGVycikKICAgICAgICAgewogICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyLCBfX0ZJTEVfXywgQU5HTEVfRlVOQ1RJT04sIF9f
TElORV9fKTsKKyAgICAgICAgICAgIFtuZXdTdGF0ZSBBTkdMRV9NVExfUkVMRUFTRV07CiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435684</attachid>
            <date>2021-08-17 07:55:36 -0700</date>
            <delta_ts>2021-08-18 14:54:33 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-229128-20210817075535.patch</filename>
            <type>text/plain</type>
            <size>22013</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggMzJjZDI4ODYxNWY5MjdjNzJlMTFlYWQ4NGEyMjE0NDE1NGU0OTliOS4uNTMwNDJjNTcxMDMy
NDIzNzFhNTUyOGE3YzNkMzYzZDNkNWY1ZWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA4LTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBGaXggb3Zlci1hdXRvcmVsZWFzZSBv
ZiByeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZSgpIGFuZCB2
YXJpb3VzIE9iamVjdGl2ZS1DIGxlYWtzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MjkxMjg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTk2NDAwNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9EaXNwbGF5TXRsLmg6CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxE
ZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZSk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHJldHVybiBtdGw6
OkF1dG9PYmpDUHRyPD4gdG8gbWFrZSBvd25lcnNoaXAgY2xlYXIuCisgICAgICAgIChyeDo6RGlz
cGxheU10bDo6bU1ldGFsRGV2aWNlKToKKyAgICAgICAgLSBObyBuZWVkIHRvIGluaXRpYWxpemUg
dG8gbmlsLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlN
dGwubW06CisgICAgICAgIChyeDo6RGlzcGxheU10bDo6aW5pdGlhbGl6ZUltcGwpOgorICAgICAg
ICAtIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRl
KCkuCisgICAgICAgIChyeDo6RGlzcGxheU10bDo6Z2V0TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJp
YnV0ZSk6CisgICAgICAgIC0gQ2hhbmdlIHRvIHJldHVybiBtdGw6OkF1dG9PYmpDUHRyPD4gdG8g
bWFrZSBvd25lcnNoaXAgY2xlYXIuCisgICAgICAgIC0gRml4IGxlYWsgb2YgYGRldmljZUxpc3Rg
LCBgZXh0ZXJuYWxHUFVzYCwgYGludGVncmF0ZWRHUFVzYCwgYW5kCisgICAgICAgICAgYGRpc2Ny
ZXRlR1BVc2AuCisgICAgICAgIC0gVXNlIG10bDo6YWRvcHRPYmpDT2JqPD4oKSB0byBwcmV2ZW50
IGxlYWsgb2YKKyAgICAgICAgICBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkuCisKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5t
bToKKyAgICAgICAgLSBGaXggbGVhayBvZiBgY2FwdHVyZURlc2NyaXB0b3JgIGluIHR3byBkaWZm
ZXJlbnQgaWYgYmxvY2tzLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1Byb2dyYW1NdGwubW06CisgICAgICAgIC0gRml4IGxlYWsgb2YgYGZ1bmNDb25zdGFudHNgIGlu
IGVhcmx5IHJldHVybiBvbiBlcnJvciBwYXRoLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1Byb3Zva2luZ1ZlcnRleEhlbHBlci5tbToKKyAgICAgICAgKHJ4OjpQcm92
b2tpbmdWZXJ0ZXhIZWxwZXI6OmdldFNwZWNpYWxpemVkU2hhZGVyKToKKyAgICAgICAgLSBGaXgg
bGVhayBvZiBgZmNWYWx1ZXNgLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL1N1cmZhY2VNdGwubW06CisgICAgICAgIC0gRml4IGxlYWsgb2YgYGNhcHR1cmVEZXNjcmlw
dG9yYCBpbiB0d28gZGlmZmVyZW50IGlmIGJsb2Nrcy4KKworICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmg6CisgICAgICAgIChyeDo6bXRsOjpXcmFwcGVk
T2JqZWN0OjpyZXRhaW5Bc3NpZ24pOgorICAgICAgICAtIE1vdmUgc3RhdGVtZW50IGluc2lkZSAj
aWYvI2VuZGlmIHRoYXQgaXNuJ3QgbmVlZGVkIGZvciBBUkMuCisgICAgICAgIChyeDo6bXRsOjpX
cmFwcGVkT2JqZWN0Ojp1bnJldGFpbkFzc2lnbik6IEFkZC4KKyAgICAgICAgKHJ4OjptdGw6OkF1
dG9PYmpDUHRyOjpBdXRvT2JqQ1B0cik6IEFkZC4KKyAgICAgICAgKHJ4OjptdGw6OmFkb3B0T2Jq
Q09iaik6IEFkZC4KKyAgICAgICAgLSBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGFkb3B0IGFuIE9i
amVjdGl2ZS1DIG9iamVjdCB0bworICAgICAgICAgIGVsaW1pbmF0ZSB0aGUgbmVlZCB0byBhdXRv
cmVsZWFzZSBhICsxIHJldGFpbmVkIG9iamVjdCBiZWZvcmUKKyAgICAgICAgICBhbiBtdGw6OkF1
dG9PYmpDUHRyPD4gb2JqZWN0IHdyYXBzIGl0LiAgTW9kZWxlZCBhZnRlcgorICAgICAgICAgIFdU
Rjo6UmV0YWluUHRyPD4gaW4gV2ViS2l0LgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9zdGF0ZV9jYWNoZS5tbToKKyAgICAgICAgKHJ4OjptdGw6OlJlbmRlclBp
cGVsaW5lQ2FjaGU6OmNyZWF0ZVJlbmRlclBpcGVsaW5lU3RhdGUpOgorICAgICAgICAocng6Om10
bDo6UHJvdm9raW5nVmVydGV4Q29tcHV0ZVBpcGVsaW5lQ2FjaGU6OmNyZWF0ZUNvbXB1dGVQaXBl
bGluZVN0YXRlKToKKyAgICAgICAgLSBVc2UgYWRvcHRPYmpDT2JqPD4oKSB0byBmaXggcG90ZW50
aWFsIGxlYWsgb24gdGhlIGVhcmx5IHJldHVybgorICAgICAgICAgIHBhdGggc2luY2UgdGhlc2Ug
bWV0aG9kcyByZXR1cm4gYW4gbXRsOjpBdXRvT2JqQ1B0cjw+LgorCiAyMDIxLTA4LTE2ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgIm1ha2UgYW5hbHl6ZSIg
c2hvdWxkIHJ1biBjbGFuZyBzdGF0aWMgYW5hbHl6ZXIgaW4gZGVlcCBtb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlz
cGxheU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0Rpc3BsYXlNdGwuaAppbmRleCBlMTI4MjdhMDBhZTc0Y2UzZjRhMDg0YWE1NWQ4Mjg4
YTY3ZTY0ZjEzLi5lYmNlZDBiOTdjNDBmMDg2N2E2ZDE3NjkxYTQ0NjQ1ZGQ2NjNkNTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvRGlzcGxheU10bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLmgKQEAgLTE3NSwxMCArMTc1LDEwIEBAIGNsYXNz
IERpc3BsYXlNdGwgOiBwdWJsaWMgRGlzcGxheUltcGwKICAgICB2b2lkIGluaXRpYWxpemVGZWF0
dXJlcygpOwogICAgIHZvaWQgaW5pdGlhbGl6ZUxpbWl0YXRpb25zKCk7CiAgICAgRUdMZW51bSBF
R0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIGlkPE1UTERldmljZT4gZ2V0TWV0
YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cyk7CisgICAgbXRsOjpBdXRvT2JqQ1B0cjxpZDxNVExEZXZpY2U+PiBnZXRNZXRhbERldmljZU1h
dGNoaW5nQXR0cmlidXRlKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKICAgICBh
bmdsZTo6UmVzdWx0IGluaXRpYWxpemVTaGFkZXJMaWJyYXJ5KCk7CiAKLSAgICBtdGw6OkF1dG9P
YmpDUHRyPGlkPE1UTERldmljZT4+IG1NZXRhbERldmljZSA9IG5pbDsKKyAgICBtdGw6OkF1dG9P
YmpDUHRyPGlkPE1UTERldmljZT4+IG1NZXRhbERldmljZTsKICAgICB1aW50MzJfdCBtTWV0YWxE
ZXZpY2VWZW5kb3JJZCAgICAgICAgICAgICAgICA9IDA7CiAKICAgICBtdGw6OkNvbW1hbmRRdWV1
ZSBtQ21kUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCmluZGV4IGY3YWU0
ODgzMWY0ZTc2Y2U5ODU4MzU2M2NiZTg2ZmJmZDlmZTVjN2EuLmNiM2FmZmY0M2UzZDYxNmMwZjE5
N2FjNjc4Y2Y5ZTFlYjNiYmM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1t
CkBAIC0xMzksNyArMTM5LDcgQEAgYW5nbGU6OlJlc3VsdCBEaXNwbGF5TXRsOjppbml0aWFsaXpl
SW1wbChlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiB7CiAgICAgQU5HTEVfTVRMX09CSkNfU0NPUEUK
ICAgICB7Ci0gICAgICAgIG1NZXRhbERldmljZSA9IFtnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0
cmlidXRlKGRpc3BsYXktPmdldEF0dHJpYnV0ZU1hcCgpKSBBTkdMRV9NVExfQVVUT1JFTEVBU0Vd
OworICAgICAgICBtTWV0YWxEZXZpY2UgPSBnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRl
KGRpc3BsYXktPmdldEF0dHJpYnV0ZU1hcCgpKTsKICAgICAgICAgLy9JZiB3ZSBjYW4ndCBjcmVh
dGUgYSBkZXZpY2UsIGZhaWwgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgIGlmKCFtTWV0YWxEZXZp
Y2UuZ2V0KCkpCiAgICAgICAgIHsKQEAgLTI0NCwzMCArMjQ0LDMwIEBAIGVnbDo6RXJyb3IgRGlz
cGxheU10bDo6dmFsaWRhdGVDbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCiB9CiAKIAotaWQ8TVRMRGV2aWNlPiBEaXNwbGF5TXRsOjpnZXRNZXRhbERldmljZU1h
dGNoaW5nQXR0cmlidXRlKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQorbXRsOjpB
dXRvT2JqQ1B0cjxpZDxNVExEZXZpY2U+PiBEaXNwbGF5TXRsOjpnZXRNZXRhbERldmljZU1hdGNo
aW5nQXR0cmlidXRlKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogI2lmIGRl
ZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDT1MpIHx8IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFD
Q0FUQUxZU1QpCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgYW5nbGVQcmVmZXJyZWREZXZpY2UgPSBh
bmdsZTo6R2V0RW52aXJvbm1lbnRWYXIoa0FOR0xFUHJlZmVycmVkRGV2aWNlRW52KTsKLSAgICBO
U0FycmF5PGlkPE1UTERldmljZT4+ICpkZXZpY2VMaXN0ID0gTVRMQ29weUFsbERldmljZXMoKTsK
KyAgICBhdXRvIGRldmljZUxpc3QgPSBtdGw6OmFkb3B0T2JqQ09iaihNVExDb3B5QWxsRGV2aWNl
cygpKTsKICAgICBpZiAoYW5nbGVQcmVmZXJyZWREZXZpY2UgIT0gIiIpCiAgICAgewotICAgICAg
ICBmb3IgKGlkPE1UTERldmljZT4gZGV2aWNlIGluIGRldmljZUxpc3QpCisgICAgICAgIGZvciAo
aWQ8TVRMRGV2aWNlPiBkZXZpY2UgaW4gZGV2aWNlTGlzdC5nZXQoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKFtkZXZpY2UubmFtZS5sb3dlcmNhc2VTdHJpbmcKICAgICAgICAgICAgICAg
ICAgICAgY29udGFpbnNTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFuZ2xl
UHJlZmVycmVkRGV2aWNlLmNfc3RyKCldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAubG93ZXJjYXNlU3RyaW5nXSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBOU0xvZyhAIlVzaW5nIE1ldGFsIERldmljZTogJUAiLCBbZGV2aWNlIG5hbWVdKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIGRldmljZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCi0gICAgTlNNdXRhYmxlQXJyYXk8aWQ8TVRMRGV2aWNlPj4gKmV4dGVybmFsR1BVcyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgIE5TTXV0YWJsZUFycmF5PGlkPE1UTERl
dmljZT4+ICppbnRlZ3JhdGVkR1BVcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwot
ICAgIE5TTXV0YWJsZUFycmF5PGlkPE1UTERldmljZT4+ICpkaXNjcmV0ZUdQVXMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKGlkIDxNVExEZXZpY2U+IGRldmljZSBp
biBkZXZpY2VMaXN0KSB7CisgICAgYXV0byBleHRlcm5hbEdQVXMgPSBtdGw6OmFkb3B0T2JqQ09i
ajxOU011dGFibGVBcnJheTxpZDxNVExEZXZpY2U+Pj4oW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gaW50ZWdyYXRlZEdQVXMgPSBtdGw6OmFkb3B0T2JqQ09iajxOU011
dGFibGVBcnJheTxpZDxNVExEZXZpY2U+Pj4oW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gZGlzY3JldGVHUFVzID0gbXRsOjphZG9wdE9iakNPYmo8TlNNdXRhYmxlQXJy
YXk8aWQ8TVRMRGV2aWNlPj4+KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBm
b3IgKGlkIDxNVExEZXZpY2U+IGRldmljZSBpbiBkZXZpY2VMaXN0LmdldCgpKSB7CiAgICAgICAg
IGlmIChkZXZpY2UucmVtb3ZhYmxlKQogICAgICAgICB7CiAgICAgICAgICAgICBbZXh0ZXJuYWxH
UFVzIGFkZE9iamVjdDpkZXZpY2VdOwpAQCAtMjg2LDIyICsyODYsMjIgQEAgaWQ8TVRMRGV2aWNl
PiBEaXNwbGF5TXRsOjpnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRlKGNvbnN0IGVnbDo6
QXR0cmlidXRlTWEKICAgICBpZiAoYXR0cmlicy5nZXQoRUdMX1BPV0VSX1BSRUZFUkVOQ0VfQU5H
TEUsIEVHTF9MT1dfUE9XRVJfQU5HTEUpID09IEVHTF9ISUdIX1BPV0VSX0FOR0xFKQogICAgIHsK
ICAgICAgICAgLy9TZWFyY2ggZm9yIGEgZGlzY3JldGUgR1BVIGZpcnN0LgotICAgICAgICBmb3Ig
KGlkPE1UTERldmljZT4gZGV2aWNlIGluIGRpc2NyZXRlR1BVcykgeworICAgICAgICBmb3IgKGlk
PE1UTERldmljZT4gZGV2aWNlIGluIGRpc2NyZXRlR1BVcy5nZXQoKSkgewogICAgICAgICAgICAg
aWYoIVtkZXZpY2UgaXNIZWFkbGVzc10pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZTsK
ICAgICAgICAgfQogICAgIH0KICAgICAvL0lmIHdlJ3ZlIHNlbGVjdGVkIGEgbG93IHBvd2VyIGRl
dmljZSwgbG9vayB0aHJvdWdoIGludGVncmF0ZWQgZGV2aWNlcy4KLSAgICBmb3IgKGlkPE1UTERl
dmljZT4gZGV2aWNlIGluIGludGVncmF0ZWRHUFVzKSB7CisgICAgZm9yIChpZDxNVExEZXZpY2U+
IGRldmljZSBpbiBpbnRlZ3JhdGVkR1BVcy5nZXQoKSkgewogICAgICAgICBpZighW2RldmljZSBp
c0hlYWRsZXNzXSkKICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CiAgICAgfQogICAgIC8vSWYg
d2Ugc2VsZWN0ZWQgYSBsb3cgcG93ZXIgZGV2aWNlIGFuZCB0aGVyZSdzIG5vIGxvdy1wb3dlciBk
ZXZpY2VzIGF2YWlhbGJsZSwgcmV0dXJuIHRoZSBmaXJzdCAoZGVmYXVsdCkgZGV2aWNlLgotICAg
IGlmKGRldmljZUxpc3QuY291bnQgPiAwKQorICAgIGlmIChkZXZpY2VMaXN0LmdldCgpLmNvdW50
ID4gMCkKICAgICAgICAgcmV0dXJuIGRldmljZUxpc3RbMF07CiAjZW5kaWYKICAgICAvL0lmIHdl
IGNhbid0IGZpbmQgYW55dGhpbmcsIG9yIGFyZSBvbiBhIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBz
dXBwb3J0IHBvd2VyIG9wdGlvbnMsIGNyZWF0ZSBhIGRlZmF1bHQgZGV2aWNlLgotICAgIHJldHVy
biBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisgICAgcmV0dXJuIG10bDo6YWRvcHRP
YmpDT2JqKE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSk7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0lP
U3VyZmFjZVN1cmZhY2VNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQppbmRleCA5OTI5MWIyOGJm
NTczMzRlNmRkYTIwNmU3OWU3YjVlZmZlNjk0OWQwLi42NjhiNThjMzE4Njc0NGZmYzY1NTRhZDA2
ZGM0ZDkzNTU0ZmY2ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNlU3VyZmFjZU10bC5tbQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSU9TdXJmYWNl
U3VyZmFjZU10bC5tbQpAQCAtMTY4LDI2ICsxNjgsMjYgQEAgdm9pZCBTdGFydEZyYW1lQ2FwdHVy
ZShpZDxNVExEZXZpY2U+IG1ldGFsRGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IG1ldGFsQ21k
UXUKICMgICAgaWZkZWYgX19NQUNfMTBfMTUKICAgICBpZiAoQU5HTEVfQVBQTEVfQVZBSUxBQkxF
X1hDSSgxMC4xNSwgMTMuMCwgMTMpKQogICAgIHsKLSAgICAgICAgTVRMQ2FwdHVyZURlc2NyaXB0
b3IgKmNhcHR1cmVEZXNjcmlwdG9yID0gW1tNVExDYXB0dXJlRGVzY3JpcHRvciBhbGxvY10gaW5p
dF07Ci0gICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmNhcHR1cmVPYmplY3QgICAgICAgICA9IG1l
dGFsRGV2aWNlOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlUGF0aCAgICAgICAgICAg
ICAgPSBHZXRNZXRhbENhcHR1cmVGaWxlKCk7CisgICAgICAgIGF1dG8gY2FwdHVyZURlc2NyaXB0
b3IgICAgICAgICAgICAgICAgPSBtdGw6OmFkb3B0T2JqQ09iaihbW01UTENhcHR1cmVEZXNjcmlw
dG9yIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmNhcHR1
cmVPYmplY3QgPSBtZXRhbERldmljZTsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZVBh
dGggICAgICAgICAgICA9IEdldE1ldGFsQ2FwdHVyZUZpbGUoKTsKICAgICAgICAgaWYgKGZpbGVQ
YXRoICE9ICIiKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBudW1i
ZXJlZFBhdGggPQogICAgICAgICAgICAgICAgIGZpbGVQYXRoICsgc3RkOjp0b19zdHJpbmcoZ0Zy
YW1lQ2FwdHVyZWQgLSAxKSArICIuZ3B1dHJhY2UiOwotICAgICAgICAgICAgY2FwdHVyZURlc2Ny
aXB0b3IuZGVzdGluYXRpb24gPSBNVExDYXB0dXJlRGVzdGluYXRpb25HUFVUcmFjZURvY3VtZW50
OwotICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0b3Iub3V0cHV0VVJMID0KKyAgICAgICAgICAg
IGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmRlc3RpbmF0aW9uID0gTVRMQ2FwdHVyZURlc3RpbmF0
aW9uR1BVVHJhY2VEb2N1bWVudDsKKyAgICAgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgp
Lm91dHB1dFVSTCA9CiAgICAgICAgICAgICAgICAgW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNT
dHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bnVtYmVyZWRQYXRoLmNfc3RyKCldCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpc0RpcmVjdG9yeTpmYWxzZV07CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcGF1c2UgZXhlY3V0
aW9uIG9ubHkgaWYgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQgaW5zaWRlIFhjb2RlCi0g
ICAgICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5kZXN0aW5hdGlvbiA9IE1UTENhcHR1cmVEZXN0
aW5hdGlvbkRldmVsb3BlclRvb2xzOworICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuZ2V0
KCkuZGVzdGluYXRpb24gPSBNVExDYXB0dXJlRGVzdGluYXRpb25EZXZlbG9wZXJUb29sczsKICAg
ICAgICAgfQogCiAgICAgICAgIE5TRXJyb3IgKmVycm9yOwotICAgICAgICBpZiAoIVtjYXB0dXJl
TWFuYWdlciBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpjYXB0dXJlRGVzY3JpcHRvciBlcnJv
cjomZXJyb3JdKQorICAgICAgICBpZiAoIVtjYXB0dXJlTWFuYWdlciBzdGFydENhcHR1cmVXaXRo
RGVzY3JpcHRvcjpjYXB0dXJlRGVzY3JpcHRvci5nZXQoKSBlcnJvcjomZXJyb3JdKQogICAgICAg
ICB7CiAgICAgICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBzdGFydCBjYXB0dXJlLCBlcnJvciAl
QCIsIGVycm9yKTsKICAgICAgICAgfQpAQCAtMTk2LDExICsxOTYsMTEgQEAgdm9pZCBTdGFydEZy
YW1lQ2FwdHVyZShpZDxNVExEZXZpY2U+IG1ldGFsRGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+
IG1ldGFsQ21kUXUKICMgICAgZW5kaWYgIC8vIF9fTUFDXzEwXzE1CiAgICAgICAgIGlmIChBTkdM
RV9BUFBMRV9BVkFJTEFCTEVfWENJKDEwLjE1LCAxMy4wLCAxMykpCiAgICAgewotICAgICAgICBN
VExDYXB0dXJlRGVzY3JpcHRvciAqY2FwdHVyZURlc2NyaXB0b3IgPSBbW01UTENhcHR1cmVEZXNj
cmlwdG9yIGFsbG9jXSBpbml0XTsKLSAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuY2FwdHVyZU9i
amVjdCAgICAgICAgID0gbWV0YWxEZXZpY2U7CisgICAgICAgIGF1dG8gY2FwdHVyZURlc2NyaXB0
b3IgICAgICAgICAgICAgICAgPSBtdGw6OmFkb3B0T2JqQ09iaihbW01UTENhcHR1cmVEZXNjcmlw
dG9yIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmdldCgpLmNhcHR1
cmVPYmplY3QgPSBtZXRhbERldmljZTsKIAogICAgICAgICBOU0Vycm9yICplcnJvcjsKLSAgICAg
ICAgaWYgKCFbY2FwdHVyZU1hbmFnZXIgc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6Y2FwdHVy
ZURlc2NyaXB0b3IgZXJyb3I6JmVycm9yXSkKKyAgICAgICAgaWYgKCFbY2FwdHVyZU1hbmFnZXIg
c3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6Y2FwdHVyZURlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6
JmVycm9yXSkKICAgICAgICAgewogICAgICAgICAgICAgTlNMb2coQCJGYWlsZWQgdG8gc3RhcnQg
Y2FwdHVyZSwgZXJyb3IgJUAiLCBlcnJvcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRs
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L1Byb2dyYW1NdGwubW0KaW5kZXggY2E2YmZlMmNjYjBmNDM4MjMzNDA3MGQ0M2Q0YjY3MjM5ZDE5
YjhhOS4uMmY1Yjk1NmZiY2I1MzQ0YWY0NmJmNGFhZThhNzA3N2YxN2FmNTJiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1By
b2dyYW1NdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCBhbmdsZTo6UmVz
dWx0IFByb2dyYW1NdGw6OmdldFNwZWNpYWxpemVkU2hhZGVyKG10bDo6Q29udGV4dCAqY29udGV4
dCwKIAogICAgIG10bDo6VHJhbnNsYXRlZFNoYWRlckluZm8gKnRyYW5zbGF0ZWRNc2xJbmZvID0g
Jm1Nc2xTaGFkZXJUcmFuc2xhdGVJbmZvW3NoYWRlclR5cGVdOwogICAgIFByb2dyYW1TaGFkZXJP
YmpWYXJpYW50TXRsICpzaGFkZXJWYXJpYW50OwotICAgIE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMgKmZ1bmNDb25zdGFudHMgPSBuaWw7CisgICAgbXRsOjpBdXRvT2JqQ09iajxNVExGdW5jdGlv
bkNvbnN0YW50VmFsdWVzPiBmdW5jQ29uc3RhbnRzOwogCiAgICAgaWYgKHNoYWRlclR5cGUgPT0g
Z2w6OlNoYWRlclR5cGU6OlZlcnRleCkKICAgICB7CkBAIC02MzQsNyArNjM0LDcgQEAgYW5nbGU6
OlJlc3VsdCBQcm9ncmFtTXRsOjpnZXRTcGVjaWFsaXplZFNoYWRlcihtdGw6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2V0UmFzdGVyaXphdGlvbkRpc2NhcmRFbmFibGVkQ29uc3ROYW1lKCldOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jQ29uc3RhbnRzID0gW1tNVExGdW5jdGlvbkNvbnN0
YW50VmFsdWVzIGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGZ1bmNDb25zdGFudHMgPSBtdGw6
OmFkb3B0T2JqQ09iaihbW01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgYWxsb2NdIGluaXRdKTsK
ICAgICAgICAgICAgIFtmdW5jQ29uc3RhbnRzIHNldENvbnN0YW50VmFsdWU6JmVtdWxhdGVEaXNj
YXJkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOk1UTERhdGFU
eXBlQm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoTmFtZTpkaXNj
YXJkRW5hYmxlZFN0cl07CkBAIC02NzIsNyArNjcyLDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFt
TXRsOjpnZXRTcGVjaWFsaXplZFNoYWRlcihtdGw6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q292ZXJh
Z2VNYXNrRW5hYmxlZENvbnN0TmFtZSgpXTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ZnVuY0NvbnN0YW50cyA9IFtbTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyBhbGxvY10gaW5pdF07
CisgICAgICAgICAgICBmdW5jQ29uc3RhbnRzID0gbXRsOjphZG9wdE9iakNPYmooW1tNVExGdW5j
dGlvbkNvbnN0YW50VmFsdWVzIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZnVuY0NvbnN0
YW50cyBzZXRDb25zdGFudFZhbHVlOiZlbXVsYXRlQ292ZXJhZ2VNYXNrCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOk1UTERhdGFUeXBlQm9vbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoTmFtZTpjb3ZlcmFnZU1hc2tFbmFibGVkU3Ry
XTsKQEAgLTY5NCw5ICs2OTQsOCBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmdldFNwZWNp
YWxpemVkU2hhZGVyKG10bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAvLyBDcmVhdGUgTWV0YWwg
c2hhZGVyIG9iamVjdAogICAgIEFOR0xFX01UTF9PQkpDX1NDT1BFCiAgICAgewotICAgICAgICBB
TkdMRV9UUlkoQ3JlYXRlTXNsU2hhZGVyKGNvbnRleHQsIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRh
bExpYnJhcnksIFNIQURFUl9FTlRSWV9OQU1FLCBmdW5jQ29uc3RhbnRzLAorICAgICAgICBBTkdM
RV9UUlkoQ3JlYXRlTXNsU2hhZGVyKGNvbnRleHQsIHRyYW5zbGF0ZWRNc2xJbmZvLT5tZXRhbExp
YnJhcnksIFNIQURFUl9FTlRSWV9OQU1FLCBmdW5jQ29uc3RhbnRzLmdldCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFkZXJWYXJpYW50LT5tZXRhbFNoYWRlcikpOwot
ICAgICAgICBbZnVuY0NvbnN0YW50cyBBTkdMRV9NVExfQVVUT1JFTEVBU0VdOwogICAgIH0KIAog
ICAgIC8vIFN0b3JlIHJlZmVyZW5jZSB0byB0aGUgdHJhbnNsYXRlZCBzb3VyY2UgZm9yIGVhc2ls
eSBxdWVyeWluZyBtYXBwZWQgYmluZGluZ3MgbGF0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvdm9raW5nVmVydGV4
SGVscGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL1Byb3Zva2luZ1ZlcnRleEhlbHBlci5tbQppbmRleCA4OThjY2NlN2MxYWUwZGJkYWFh
YmIxNmVkZGY1MzgwMmU1YjdlMDI2Li5kNmM5M2NjYWE3MzZiMDgwNzk4OTVjMGNiMTc5MGU1MTI4
MzMwZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvUHJvdm9raW5nVmVydGV4SGVscGVyLm1tCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm92b2tpbmdWZXJ0ZXhI
ZWxwZXIubW0KQEAgLTE3NCwxMSArMTc0LDEyIEBAIGFuZ2xlOjpSZXN1bHQgUHJvdm9raW5nVmVy
dGV4SGVscGVyOjpnZXRTcGVjaWFsaXplZFNoYWRlcihyeDo6bXRsOjpDb250ZXh0ICpjb250CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ8TVRMRnVuY3Rpb24+
ICpzaGFkZXJPdXQpCiB7CiAgICAgdWludCBpbmRleEJ1ZmZlcktleSA9IGJ1aWxkSW5kZXhCdWZm
ZXJLZXkocGlwZWxpbmVEZXNjKTsKLSAgICBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzICAqIGZj
VmFsdWVzID0gW1tNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzIGFsbG9jXWluaXRdOworICAgIGF1
dG8gZmNWYWx1ZXMgPSBtdGw6OmFkb3B0T2JqQ09iaihbW01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMgYWxsb2NdIGluaXRdKTsKICAgICBbZmNWYWx1ZXMgc2V0Q29uc3RhbnRWYWx1ZTomaW5kZXhC
dWZmZXJLZXkgdHlwZTpNVExEYXRhVHlwZVVJbnQgd2l0aE5hbWU6QCJmaXhJbmRleEJ1ZmZlcktl
eSJdOwogICAgIAotICAgIHJldHVybiBDcmVhdGVNc2xTaGFkZXIoY29udGV4dCwgbVByb3Zva2lu
Z1ZlcnRleExpYnJhcnksIEAiZml4SW5kZXhCdWZmZXIiLCBmY1ZhbHVlcywgc2hhZGVyT3V0KTsK
KyAgICByZXR1cm4gQ3JlYXRlTXNsU2hhZGVyKGNvbnRleHQsIG1Qcm92b2tpbmdWZXJ0ZXhMaWJy
YXJ5LCBAImZpeEluZGV4QnVmZmVyIiwgZmNWYWx1ZXMuZ2V0KCksIHNoYWRlck91dCk7CiB9CisK
IC8vUHJpdmF0ZSBjb21tYW5kIGJ1ZmZlcgogYm9vbCBQcm92b2tpbmdWZXJ0ZXhIZWxwZXI6Omhh
c1NwZWNpYWxpemVkU2hhZGVyKGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXRsOjpQcm92b2tpbmdWZXJ0ZXhDb21wdXRl
UGlwZWxpbmVEZXNjICZyZW5kZXJQaXBlbGluZURlc2MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJm
YWNlTXRsLm1tCmluZGV4IDBkZTNjNTgzMGZjOGJiYjcyNDFiNWI0M2UxZDYyNjI0ZmQyMjZjMDQu
LjE0OTI0ZTNiYjVhNDYyNTEzOTI5ZmRmNDVkOGIyOGMwY2ZjZGFiNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNl
TXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9TdXJmYWNlTXRsLm1tCkBAIC0xNzcsMjYgKzE3NywyNiBAQCB2b2lkIFN0YXJ0RnJh
bWVDYXB0dXJlKGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsIGlkPE1UTENvbW1hbmRRdWV1ZT4g
bWV0YWxDbWRRdQogIyAgICBpZmRlZiBfX01BQ18xMF8xNQogICAgIGlmIChBTkdMRV9BUFBMRV9B
VkFJTEFCTEVfWENJKDEwLjE1LCAxMy4wLCAxMykpCiAgICAgewotICAgICAgICBNVExDYXB0dXJl
RGVzY3JpcHRvciAqY2FwdHVyZURlc2NyaXB0b3IgPSBbW01UTENhcHR1cmVEZXNjcmlwdG9yIGFs
bG9jXSBpbml0XTsKLSAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuY2FwdHVyZU9iamVjdCAgICAg
ICAgID0gbWV0YWxEZXZpY2U7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVQYXRoICAg
ICAgICAgICAgICA9IEdldE1ldGFsQ2FwdHVyZUZpbGUoKTsKKyAgICAgICAgYXV0byBjYXB0dXJl
RGVzY3JpcHRvciAgICAgICAgICAgICAgICA9IG10bDo6YWRvcHRPYmpDT2JqKFtbTVRMQ2FwdHVy
ZURlc2NyaXB0b3IgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuZ2V0
KCkuY2FwdHVyZU9iamVjdCA9IG1ldGFsRGV2aWNlOworICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmaWxlUGF0aCAgICAgICAgICAgID0gR2V0TWV0YWxDYXB0dXJlRmlsZSgpOwogICAgICAgICBp
ZiAoZmlsZVBhdGggIT0gIiIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIG51bWJlcmVkUGF0aCA9CiAgICAgICAgICAgICAgICAgZmlsZVBhdGggKyBzdGQ6OnRvX3N0
cmluZyhnRnJhbWVDYXB0dXJlZCAtIDEpICsgIi5ncHV0cmFjZSI7Ci0gICAgICAgICAgICBjYXB0
dXJlRGVzY3JpcHRvci5kZXN0aW5hdGlvbiA9IE1UTENhcHR1cmVEZXN0aW5hdGlvbkdQVVRyYWNl
RG9jdW1lbnQ7Ci0gICAgICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5vdXRwdXRVUkwgPQorICAg
ICAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuZ2V0KCkuZGVzdGluYXRpb24gPSBNVExDYXB0dXJl
RGVzdGluYXRpb25HUFVUcmFjZURvY3VtZW50OworICAgICAgICAgICAgY2FwdHVyZURlc2NyaXB0
b3IuZ2V0KCkub3V0cHV0VVJMID0KICAgICAgICAgICAgICAgICBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpudW1iZXJlZFBhdGguY19zdHIoKV0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlyZWN0b3J5OmZhbHNlXTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBwYXVz
ZSBleGVjdXRpb24gb25seSBpZiBhcHBsaWNhdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCBpbnNpZGUg
WGNvZGUKLSAgICAgICAgICAgIGNhcHR1cmVEZXNjcmlwdG9yLmRlc3RpbmF0aW9uID0gTVRMQ2Fw
dHVyZURlc3RpbmF0aW9uRGV2ZWxvcGVyVG9vbHM7CisgICAgICAgICAgICBjYXB0dXJlRGVzY3Jp
cHRvci5nZXQoKS5kZXN0aW5hdGlvbiA9IE1UTENhcHR1cmVEZXN0aW5hdGlvbkRldmVsb3BlclRv
b2xzOwogICAgICAgICB9CiAKICAgICAgICAgTlNFcnJvciAqZXJyb3I7Ci0gICAgICAgIGlmICgh
W2NhcHR1cmVNYW5hZ2VyIHN0YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yOmNhcHR1cmVEZXNjcmlw
dG9yIGVycm9yOiZlcnJvcl0pCisgICAgICAgIGlmICghW2NhcHR1cmVNYW5hZ2VyIHN0YXJ0Q2Fw
dHVyZVdpdGhEZXNjcmlwdG9yOmNhcHR1cmVEZXNjcmlwdG9yLmdldCgpIGVycm9yOiZlcnJvcl0p
CiAgICAgICAgIHsKICAgICAgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0IGNhcHR1cmUs
IGVycm9yICVAIiwgZXJyb3IpOwogICAgICAgICB9CkBAIC0yMDUsMTEgKzIwNSwxMSBAQCB2b2lk
IFN0YXJ0RnJhbWVDYXB0dXJlKGlkPE1UTERldmljZT4gbWV0YWxEZXZpY2UsIGlkPE1UTENvbW1h
bmRRdWV1ZT4gbWV0YWxDbWRRdQogIyAgICBlbmRpZiAgLy8gX19NQUNfMTBfMTUKICAgICAgICAg
aWYgKEFOR0xFX0FQUExFX0FWQUlMQUJMRV9YQ0koMTAuMTUsIDEzLjAsIDEzKSkKICAgICB7Ci0g
ICAgICAgIE1UTENhcHR1cmVEZXNjcmlwdG9yICpjYXB0dXJlRGVzY3JpcHRvciA9IFtbTVRMQ2Fw
dHVyZURlc2NyaXB0b3IgYWxsb2NdIGluaXRdOwotICAgICAgICBjYXB0dXJlRGVzY3JpcHRvci5j
YXB0dXJlT2JqZWN0ICAgICAgICAgPSBtZXRhbERldmljZTsKKyAgICAgICAgYXV0byBjYXB0dXJl
RGVzY3JpcHRvciAgICAgICAgICAgICAgICA9IG10bDo6YWRvcHRPYmpDT2JqKFtbTVRMQ2FwdHVy
ZURlc2NyaXB0b3IgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgY2FwdHVyZURlc2NyaXB0b3IuZ2V0
KCkuY2FwdHVyZU9iamVjdCA9IG1ldGFsRGV2aWNlOwogCiAgICAgICAgIE5TRXJyb3IgKmVycm9y
OwotICAgICAgICBpZiAoIVtjYXB0dXJlTWFuYWdlciBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRv
cjpjYXB0dXJlRGVzY3JpcHRvciBlcnJvcjomZXJyb3JdKQorICAgICAgICBpZiAoIVtjYXB0dXJl
TWFuYWdlciBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpjYXB0dXJlRGVzY3JpcHRvci5nZXQo
KSBlcnJvcjomZXJyb3JdKQogICAgICAgICB7CiAgICAgICAgICAgICBOU0xvZyhAIkZhaWxlZCB0
byBzdGFydCBjYXB0dXJlLCBlcnJvciAlQCIsIGVycm9yKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210
bF9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfY29tbW9uLmgKaW5kZXggNDllMjUxOTZhNjdiOTEzMDgwOWI3ZWE4Y2Q4MjJj
YTliZDkxNjQxYi4uMmEyODRkMDc0NGY1ZmU4MTM0MWE4NWZiMDFhYjQ4YzU3MTMzOGE2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL210bF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCkBAIC0yMDgsMTQgKzIwOCwyMCBAQCBjbGFz
cyBXcmFwcGVkT2JqZWN0CiAKICAgICB2b2lkIHJldGFpbkFzc2lnbihUIG9iaikKICAgICB7Ci0g
ICAgICAgIFQgcmV0YWluZWQgPSBvYmo7CiAjaWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisg
ICAgICAgIFQgcmV0YWluZWQgPSBvYmo7CiAgICAgICAgIFtyZXRhaW5lZCByZXRhaW5dOwogI2Vu
ZGlmCiAgICAgICAgIHJlbGVhc2UoKTsKICAgICAgICAgbU1ldGFsT2JqZWN0ID0gb2JqOwogICAg
IH0KIAorICAgIHZvaWQgdW5yZXRhaW5Bc3NpZ24oVCBvYmopCisgICAgeworICAgICAgICByZWxl
YXNlKCk7CisgICAgICAgIG1NZXRhbE9iamVjdCA9IG9iajsKKyAgICB9CisKICAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbGVhc2UoKQogICAgIHsKQEAgLTIyOCw2ICsyMzQsMjEgQEAgY2xhc3MgV3Jh
cHBlZE9iamVjdAogICAgIFQgbU1ldGFsT2JqZWN0ID0gbmlsOwogfTsKIAorLy8gQmVjYXVzZSBB
UkMgZW5hYmxlbWVudCBpcyBhIGNvbXBpbGUtdGltZSBjaG9pY2UsIGFuZCB3ZSBjb21waWxlIHRo
aXMgaGVhZGVyCisvLyBib3RoIHdheXMsIHdlIG5lZWQgYSBzZXBhcmF0ZSBjb3B5IG9mIG91ciBj
b2RlIHdoZW4gQVJDIGlzIGVuYWJsZWQuCisjaWYgX19oYXNfZmVhdHVyZShvYmpjX2FyYykKKyNk
ZWZpbmUgYWRvcHRPYmpDT2JqIGFkb3B0T2JqQ09iakFyYworI2VuZGlmCisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgQXV0b09iakNQdHI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dXNpbmcgQXV0b09iakNPYmogPSBBdXRvT2JqQ1B0cjxUICo+OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4KK0F1dG9PYmpDT2JqPFU+IGFkb3B0T2JqQ09iaihVKiBOU19SRUxFQVNFU19BUkdVTUVO
VCkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOworCiAvLyBUaGlzIGNs
YXNzIGlzIHNpbWlsYXIgdG8gV3JhcHBlZE9iamVjdCwgaG93ZXZlciwgaXQgYWxsb3dzIGNoYW5n
aW5nIHRoZQogLy8gaW50ZXJuYWwgcG9pbnRlciB3aXRoIHB1YmxpYyBtZXRob2RzLgogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0yOTMsNyArMzE0LDEzIEBAIGNsYXNzIEF1dG9PYmpDUHRyIDog
cHVibGljIFdyYXBwZWRPYmplY3Q8VD4KIAogICAgIHVzaW5nIFBhcmVudFR5cGU6OnJldGFpbkFz
c2lnbjsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIGZyaWVuZCBBdXRvT2JqQ09i
ajxVPiBhZG9wdE9iakNPYmooVSogTlNfUkVMRUFTRVNfQVJHVU1FTlQpIF9fYXR0cmlidXRlX18o
KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKKwogICBwcml2YXRlOgorICAgIGVudW0gQWRvcHRU
YWcgeyBBZG9wdCB9OworICAgIEF1dG9PYmpDUHRyKFQgc3JjLCBBZG9wdFRhZykgeyB0aGlzLT51
bnJldGFpbkFzc2lnbihzcmMpOyB9CisKICAgICB2b2lkIHRyYW5zZmVyKEF1dG9PYmpDUHRyICYm
c3JjKQogICAgIHsKICAgICAgICAgdGhpcy0+cmV0YWluQXNzaWduKHN0ZDo6bW92ZShzcmMuZ2V0
KCkpKTsKQEAgLTMwMSw4ICszMjgsMTggQEAgY2xhc3MgQXV0b09iakNQdHIgOiBwdWJsaWMgV3Jh
cHBlZE9iamVjdDxUPgogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdXNpbmcg
QXV0b09iakNPYmogPSBBdXRvT2JqQ1B0cjxUICo+OwordGVtcGxhdGUgPHR5cGVuYW1lIFU+Citp
bmxpbmUgQXV0b09iakNPYmo8VT4gYWRvcHRPYmpDT2JqKFUqIE5TX1JFTEVBU0VTX0FSR1VNRU5U
IHNyYykKK3sKKyNpZiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorICAgIHJldHVybiBzcmM7Cisj
ZWxpZiBkZWZpbmVkKE9CSkNfTk9fR0MpCisgICAgcmV0dXJuIEF1dG9PYmpDUHRyPFUqPihzcmMs
IEF1dG9PYmpDUHRyPFUqPjo6QWRvcHQpOworI2Vsc2UKKyNlcnJvciAiT2JqQyBHQyBub3Qgc3Vw
cG9ydGVkLiIKKyNlbmRpZgorfQorCiAKIC8vIE5PVEU6IFNoYXJlZEV2ZW50IGlzIG9ubHkgZGVj
bGFyZWQgb24gaU9TIDEyLjArIG9yIG1hYyAxMC4xNCsKICNpZiBkZWZpbmVkKF9fSVBIT05FXzEy
XzApIHx8IGRlZmluZWQoX19NQUNfMTBfMTQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX3N0YXRlX2NhY2hlLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9z
dGF0ZV9jYWNoZS5tbQppbmRleCAwMGQzOTIxNmNkYzEyNjVlMDMyYzNmNTk4YzU3Mzc2ZDFmYTFj
MDZiLi45YTY0NDdkNTRmZjQ4OGM1YTZhZGFkYjJlNmU1MDhlOTg3YWMwYWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X3N0YXRlX2NhY2hlLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfc3RhdGVfY2FjaGUubW0KQEAgLTEwNDEsMTUgKzEwNDEsMTUg
QEAgQXV0b09iakNQdHI8aWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4+IFJlbmRlclBpcGVsaW5l
Q2FjaGU6OmNyZWF0ZVJlbmRlclBpcGVsaW4KICAgICAgICAgfQogICAgICAgICAvLyBDcmVhdGUg
cGlwZWxpbmUgc3RhdGUKICAgICAgICAgTlNFcnJvciAqZXJyID0gbmlsOwotICAgICAgICBpZDxN
VExSZW5kZXJQaXBlbGluZVN0YXRlPiBuZXdTdGF0ZSA9Ci0gICAgICAgICAgICBbbWV0YWxEZXZp
Y2UgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9iakNEZXNjIGVycm9yOiZl
cnJdOworICAgICAgICBhdXRvIG5ld1N0YXRlID0KKyAgICAgICAgICAgIGFkb3B0T2JqQ09iaihb
bWV0YWxEZXZpY2UgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9iakNEZXNj
IGVycm9yOiZlcnJdKTsKICAgICAgICAgaWYgKGVycikKICAgICAgICAgewogICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyLCBfX0ZJTEVfXywgQU5HTEVfRlVOQ1RJT04sIF9fTElO
RV9fKTsKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gW25ld1N0YXRlIEFOR0xFX01UTF9BVVRPUkVMRUFTRV07CisgICAgICAgIHJldHVybiBuZXdT
dGF0ZTsKICAgICB9CiB9CiAKQEAgLTEyMzMsMTUgKzEyMzMsMTUgQEAgQXV0b09iakNQdHI8aWQ8
TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+PiBQcm92b2tpbmdWZXJ0ZXhDb21wdXRlUGlwZWxpbmVD
YWNoZTo6Y3IKIAogICAgICAgICAvLyBDb252ZXJ0IHRvIE9iamVjdGl2ZS1DIGRlc2M6CiAgICAg
ICAgIE5TRXJyb3IgKmVyciA9IG5pbDsKLSAgICAgICAgaWQ8TVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGU+IG5ld1N0YXRlID0KLSAgICAgICAgICAgIFttZXRhbERldmljZSBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZVdpdGhGdW5jdGlvbjpjb21wdXRlRnVuY3Rpb24gZXJyb3I6JmVycl07CisgICAgICAg
IGF1dG8gbmV3U3RhdGUgPQorICAgICAgICAgICAgYWRvcHRPYmpDT2JqKFttZXRhbERldmljZSBu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpjb21wdXRlRnVuY3Rpb24gZXJyb3I6
JmVycl0pOwogICAgICAgICBpZiAoZXJyKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihlcnIsIF9fRklMRV9fLCBBTkdMRV9GVU5DVElPTiwgX19MSU5FX18pOwog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBbbmV3
U3RhdGUgQU5HTEVfTVRMX0FVVE9SRUxFQVNFXTsKKyAgICAgICAgcmV0dXJuIG5ld1N0YXRlOwog
ICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435800</attachid>
            <date>2021-08-18 14:53:05 -0700</date>
            <delta_ts>2021-08-18 14:54:22 -0700</delta_ts>
            <desc>Patch v1.2 - Resolve failing test in DEBUG, make sure all selectors make it to the frontend</desc>
            <filename>bug-229128-20210818145304.patch</filename>
            <type>text/plain</type>
            <size>41894</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U3NWIyODY4MGYxYTE5
YmJlOGM2ZWM5ODdmMjRkMzM0MWNlODc2ZC4uZDY0NmU0ZjE5NWE2NWVkNTg2ZGE3ZjEyYjU1NTdm
NWVjMDZkNGNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA4LTE4ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dHlsZSBydWxlcyBkZWNsYXJlZCBhZnRlciBhIHJ1bGUgd2hvc2Ugc2VsZWN0b3IgaGFzIG92ZXIg
ODE5MiBjb21wb25lbnRzIGFyZSBub3Qgc2hvd24gY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkyMTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvY3NzL2dldE1h
dGNoZWRTdHlsZXNGb3JOb2RlTGFyZ2VTZWxlY3RvcnMuaHRtbAorCisgICAgICAgIENTUyBydWxl
cyBhcmUgbGltaXRlZCB0byA4MTkyIHNlbGVjdG9yIGNvbXBvbmVudHMgaW4gV2ViQ29yZSwgYW5k
IHdoZW4gbW9yZSBjb21wb25lbnRzIGFyZSBwcmVzZW50IHRoZSBydWxlIGlzCisgICAgICAgIHNw
bGl0IGludG8gbXVsdGlwbGUgYFN0eWxlUnVsZWAgaW5zdGFuY2VzLiBUaGlzIG1lYW50IFdlYiBJ
bnNwZWN0b3IgY291bGQgbm90IHJlbGlhYmx5IHJlc29sdmUgYSBgU3R5bGVSdWxlYAorICAgICAg
ICBiYWNrIHRvIGl0cyBzb3VyY2UgZGF0YSwgd2hpY2ggd2UgZG8gdG8gZW5hYmxlIHRoaW5ncyBs
aWtlIGVkaXRpbmcsIGFzIHdlbGwgYXMgdG8gbWFrZSBzdXJlIHdlIHNob3cgdGhlIHVuLXNwbGl0
CisgICAgICAgIHNlbGVjdG9yIGluIHRoZSBTdHlsZXMgc2lkZWJhciBvZiB0aGUgRWxlbWVudHMg
dGFiLiBQcmV2aW91c2x5LCB0aGUgcHJlc2VuY2VzIG9mIG11bHRpcGxlIGBTdHlsZVJ1bGVgcyBm
b3IgYQorICAgICAgICBzaW5nbGUgc291cmNlIGRhdGEgZGVjbGFyYXRpb24gd2FzIG5vdCBhY2Nv
dW50ZWQgZm9yLCB3aGljaCBtZWFudCB0aGF0IHJ1bGVzIGFmdGVyIHRoZSBzcGxpdCBydWxlcyB3
b3VsZCBzaG93IGEKKyAgICAgICAgbWl4IG9mIHN0eWxlIGluZm9ybWF0aW9uIGZyb20gdGhlIGFj
dHVhbCBydWxlIGFzIHdlbGwgYXMgYSBydWxlIHNvbWUgbnVtYmVyIG9mIGRlY2xhcmF0aW9ucyBs
YXRlciBpbiB0aGUgc2FtZQorICAgICAgICBzdHlsZSBzaGVldC4gVGhpcyBpcyByZXNvbHZlZCBi
eSBtYXJraW5nIGBTdHlsZVJ1bGVgcyB0aGF0IGhhdmUgYmVlbiBzcGxpdCBhbmQgbWFya2luZyB0
aGUgbGFzdCBvZiB0aGUgc3BsaXQKKyAgICAgICAgcnVsZXMuIFRoaXMgYWxsb3dzIHVzIHRvIHRo
ZW4gZm9yZ28gaW5jcmVtZW50aW5nIHRoZSBpbmRleCBmb3IgbG9va2luZyB1cCByYXcgZGVjbGFy
YXRpb25zIHVudGlsIHdlIGVuY291bnRlcgorICAgICAgICB0aGUgbGFzdCBydWxlIGZyb20gYSBz
cGxpdCBgU3R5bGVSdWxlYC4KKworICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpjcmVhdGVGb3JT
cGxpdHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpzcGxpdEludG9NdWx0aXBs
ZVJ1bGVzV2l0aE1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50IGNvbnN0KToKKworICAgICAg
ICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgLSBBZGRlZCB0d28gbWVtYmVycyB0byB0cmFj
ayBydWxlcyB0aGF0IGFyZSBzcGxpdCBpbnRvIG11bHRpcGxlIHJ1bGVzIGR1ZSB0byBleGNlZWRp
bmcgdGhlIDgxOTIgY29tcG9uZW50IGxpbWl0CisgICAgICAgIGZvciBzZWxlY3RvcnMgaW4gb3Jk
ZXIgdG8gZGV0ZXJtaW5lIGxhdGVyIHdoaWNoIHJ1bGVzIGFyZSBlZmZlY3RpdmVseSBkdXBsaWNh
dGVzIG9mIGVhY2ggb3RoZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKToKKyAgICAg
ICAgLSBVc2UgYSB2ZWN0b3Igb2YgYENTU1NlbGVjdG9yYHMgZm9yIHNwZWNpZmljaXR5IGluZm9y
bWF0aW9uIHNpbmNlIHdlIG5vdyBjb2xsZWN0IHNlbGVjdG9ycyBmcm9tIHBvdGVudGlhbGx5Cisg
ICAgICAgIG11bHRpcGxlIGBDU1NTdHlsZVJ1bGVgcy4KKworICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6Y3NzU3R5bGVSdWxlc1NwbGl0RnJvbVNhbWVSdWxlKToKKyAgICAg
ICAgLSBGaW5kIGFueSBuZWlnaGJvcmluZyBDU1NTdHlsZVJ1bGVzIHRoYXQgd2VyZSBzcGxpdCBm
cm9tIHRoZSBzYW1lIG9yaWdpbmFsIHJ1bGUgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHJ1bGVzIGFz
CisgICAgICAgIHdlbGwgYXMgdGhlIG5ldyBmbGFncyBpbiBgU3R5bGVSdWxlYAorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnNlbGVjdG9yc0ZvckNTU1N0
eWxlUnVsZSk6CisgICAgICAgIC0gRmluZCBhbGwgc2VsZWN0b3JzIGZvciBhIGdpdmVuIENTU1N0
eWxlUnVsZSwgaW5jbHVkaW5nIG90aGVyIGBDU1NTdHlsZVJ1bGVgcyBzcGxpdCBmcm9tIHRoZSBz
YW1lIHJ1bGUgaW4gYQorICAgICAgICBzdHlsZSBzaGVldC4KKworICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAg
ICAtIFVzZSBhbGwgQ1NTU2VsZWN0b3JzIGZyb20gZm9yIHRoZSBDU1NTdHlsZVJ1bGUgYW5kIG90
aGVyIHJ1bGVzIHRoYXQgd2VyZSBzcGxpdCBmcm9tIHRoZSBzYW1lIHJ1bGUgaW4gYSBzdHlsZQor
ICAgICAgICBzaGVldC4KKworICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
cnVsZVNvdXJjZURhdGFGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldDo6cnVsZUluZGV4QnlTdHlsZSBjb25zdCk6CisgICAgICAgIC0gV2hlbiBsb29raW5n
IHVwIGFuIGluZGV4IHRvIGdldCBydWxlIHNvdXJjZSBkYXRhLCBtYWtlIHN1cmUgd2UgZG9uJ3Qg
b3ZlcmNvdW50IHNwbGl0IHJ1bGVzLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuaDoKKwogMjAyMS0wOC0xMyAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgog
CiAgICAgICAgIENoZWNrIGZvciBkaWFsb2cgZXhpc3RlbmNlIGluIHRvcCBsYXllciBpbiBIVE1M
RGlhbG9nRWxlbWVudDo6c2hvd01vZGFsICYgY2xvc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAK
aW5kZXggNjVlNWM1MGE3OTJmYzQxM2MyY2EzOGVlMzQzZDJjZjdjZjMwOTViMC4uNGY2ZTM0YjZl
NGVhOWI5NjhmYzlkMTg1NjZhZTE4NjcxYzJmZDRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAKQEAgLTE4MCwxMCArMTgwLDExIEBAIHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJ
bkJ5dGVzKCkKICAgICByZXR1cm4gc2l6ZW9mKFN0eWxlUnVsZSkgKyBzaXplb2YoQ1NTU2VsZWN0
b3IpICsgU3R5bGVQcm9wZXJ0aWVzOjphdmVyYWdlU2l6ZUluQnl0ZXMoKTsKIH0KIAotU3R5bGVS
dWxlOjpTdHlsZVJ1bGUoUmVmPFN0eWxlUHJvcGVydGllc0Jhc2U+JiYgcHJvcGVydGllcywgYm9v
bCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3RvcnMp
CitTdHlsZVJ1bGU6OlN0eWxlUnVsZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiBwcm9wZXJ0
aWVzLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmIHNl
bGVjdG9ycywgYm9vbCBpc1NwbGl0RnJvbVJ1bGUpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKFN0eWxl
UnVsZVR5cGU6OlN0eWxlLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9wcm9w
ZXJ0aWVzKFdURk1vdmUocHJvcGVydGllcykpCiAgICAgLCBtX3NlbGVjdG9yTGlzdChXVEZNb3Zl
KHNlbGVjdG9ycykpCisgICAgLCBtX2lzU3BsaXRGcm9tUnVsZShpc1NwbGl0RnJvbVJ1bGUpCiB7
CiB9CiAKQEAgLTE5MSwxNCArMTkyLDE2IEBAIFN0eWxlUnVsZTo6U3R5bGVSdWxlKGNvbnN0IFN0
eWxlUnVsZSYgbykKICAgICA6IFN0eWxlUnVsZUJhc2UobykKICAgICAsIG1fcHJvcGVydGllcyhv
LnByb3BlcnRpZXMoKS5tdXRhYmxlQ29weSgpKQogICAgICwgbV9zZWxlY3Rvckxpc3Qoby5tX3Nl
bGVjdG9yTGlzdCkKKyAgICAsIG1faXNTcGxpdEZyb21SdWxlKG8ubV9pc1NwbGl0RnJvbVJ1bGUp
CisgICAgLCBtX2lzTGFzdFJ1bGVTcGxpdEZyb21SdWxlKG8ubV9pc0xhc3RSdWxlU3BsaXRGcm9t
UnVsZSkKIHsKIH0KIAogU3R5bGVSdWxlOjp+U3R5bGVSdWxlKCkgPSBkZWZhdWx0OwogCi1SZWY8
U3R5bGVSdWxlPiBTdHlsZVJ1bGU6OmNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiBw
cm9wZXJ0aWVzLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIENTU1NlbGVjdG9yTGlz
dCYmIHNlbGVjdG9ycykKK1JlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRlKFJlZjxTdHls
ZVByb3BlcnRpZXNCYXNlPiYmIHByb3BlcnRpZXMsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiwgQ1NTU2VsZWN0b3JMaXN0JiYgc2VsZWN0b3JzLCBib29sIGlzU3BsaXRGcm9tUnVsZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUoV1RGTW92ZShwcm9wZXJ0aWVz
KSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgV1RGTW92ZShzZWxlY3RvcnMpKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlKFdURk1vdmUocHJvcGVydGllcyksIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIFdURk1vdmUoc2VsZWN0b3JzKSwgaXNTcGxpdEZyb21SdWxl
KSk7CiB9CiAKIFJlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y29weSgpIGNvbnN0CkBAIC0yMjcs
NyArMjMwLDggQEAgUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVhdGVGb3JTcGxpdHRpbmco
Y29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mIHMKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2VsZWN0b3JzLnNpemUoKTsgKytpKQogICAgICAgICBuZXcgKE5vdE51bGwsICZz
ZWxlY3Rvckxpc3RBcnJheVtpXSkgQ1NTU2VsZWN0b3IoKnNlbGVjdG9ycy5hdChpKSk7CiAgICAg
c2VsZWN0b3JMaXN0QXJyYXlbc2VsZWN0b3JzLnNpemUoKSAtIDFdLnNldExhc3RJblNlbGVjdG9y
TGlzdCgpOwotICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMp
LCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBDU1NTZWxlY3Rvckxpc3QoV1RGTW92ZShzZWxl
Y3Rvckxpc3RBcnJheSkpKTsKKyAgICBjb25zdCBhdXRvIGlzUnVsZVNwbGl0RnJvbVJ1bGUgPSB0
cnVlOworICAgIHJldHVybiBTdHlsZVJ1bGU6OmNyZWF0ZShXVEZNb3ZlKHByb3BlcnRpZXMpLCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBDU1NTZWxlY3Rvckxpc3QoV1RGTW92ZShzZWxlY3Rv
ckxpc3RBcnJheSkpLCBpc1J1bGVTcGxpdEZyb21SdWxlKTsKIH0KIAogVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNl
bGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQgbWF4Q291bnQpIGNvbnN0CkBAIC0yNTMsNiAr
MjU3LDkgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNwbGl0SW50b011
bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ28KICAgICBpZiAoIWNvbXBvbmVudHNTaW5j
ZUxhc3RTcGxpdC5pc0VtcHR5KCkpCiAgICAgICAgIHJ1bGVzLmFwcGVuZChjcmVhdGVGb3JTcGxp
dHRpbmcoY29tcG9uZW50c1NpbmNlTGFzdFNwbGl0LCBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGll
cyY+KHByb3BlcnRpZXMoKSksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOwogCisgICAg
aWYgKCFydWxlcy5pc0VtcHR5KCkpCisgICAgICAgIHJ1bGVzLmxhc3QoKS0+c2V0SXNMYXN0UnVs
ZVNwbGl0RnJvbVJ1bGUodHJ1ZSk7CisKICAgICByZXR1cm4gcnVsZXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAppbmRleCBlMDJjNTZhMTQ3YzliY2YyOGRjNjQ1NjQzZWFlYmYyMjllMjc3ZWMw
Li5jMDYyYWI4M2FlNjkxN2VmNzNkMWUxN2IzMTZiOGU0NGQwOTk5NWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oCkBAIC04Nyw3ICs4Nyw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFN0eWxlUnVsZSk7CiBjbGFzcyBTdHlsZVJ1bGUgZmluYWwgOiBwdWJsaWMgU3R5
bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVB
UF9JREVOVElGSUVSKFN0eWxlUnVsZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1
bGU+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiwgYm9vbCBoYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luLCBDU1NTZWxlY3Rvckxpc3QmJik7CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1
bGU+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzQmFzZT4mJiwgYm9vbCBoYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luLCBDU1NTZWxlY3Rvckxpc3QmJiwgYm9vbCBpc1NwbGl0RnJvbVJ1bGUgPSBm
YWxzZSk7CiAgICAgUmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZVJ1bGUo
KTsKIApAQCAtOTcsNiArOTcsMTAgQEAgcHVibGljOgogICAgIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcm9w
ZXJ0aWVzV2l0aG91dERlZmVycmVkUGFyc2luZygpIGNvbnN0OwogCisgICAgYm9vbCBpc1NwbGl0
RnJvbVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3BsaXRGcm9tUnVsZTsgfQorICAgIGJvb2wg
aXNMYXN0UnVsZVNwbGl0RnJvbVJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2lzTGFzdFJ1bGVTcGxp
dEZyb21SdWxlOyB9CisgICAgdm9pZCBzZXRJc0xhc3RSdWxlU3BsaXRGcm9tUnVsZShib29sIGlz
TGFzdFJ1bGVTcGxpdEZyb21SdWxlKSB7IG1faXNMYXN0UnVsZVNwbGl0RnJvbVJ1bGUgPSBpc0xh
c3RSdWxlU3BsaXRGcm9tUnVsZTsgfQorCiAgICAgdXNpbmcgU3R5bGVSdWxlQmFzZTo6aGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbjsKIAogICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0
KENTU1NlbGVjdG9yTGlzdCYmKTsKQEAgLTExMSwxMyArMTE1LDE1IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7CiAKIHByaXZhdGU6Ci0gICAgU3R5
bGVSdWxlKFJlZjxTdHlsZVByb3BlcnRpZXNCYXNlPiYmLCBib29sIGhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4sIENTU1NlbGVjdG9yTGlzdCYmKTsKKyAgICBTdHlsZVJ1bGUoUmVmPFN0eWxlUHJv
cGVydGllc0Jhc2U+JiYsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgQ1NTU2VsZWN0
b3JMaXN0JiYsIGJvb2wgaXNTcGxpdEZyb21SdWxlKTsKICAgICBTdHlsZVJ1bGUoY29uc3QgU3R5
bGVSdWxlJik7CiAKICAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3JlYXRlRm9yU3BsaXR0aW5n
KGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiwgUmVmPFN0eWxlUHJvcGVydGllcz4m
JiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKTsKIAogICAgIG11dGFibGUgUmVmPFN0
eWxlUHJvcGVydGllc0Jhc2U+IG1fcHJvcGVydGllczsKICAgICBDU1NTZWxlY3Rvckxpc3QgbV9z
ZWxlY3Rvckxpc3Q7CisgICAgYm9vbCBtX2lzU3BsaXRGcm9tUnVsZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzTGFzdFJ1bGVTcGxpdEZyb21SdWxlIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShD
U1NfU0VMRUNUT1JfSklUKQogICAgIG11dGFibGUgVW5pcXVlQXJyYXk8Q29tcGlsZWRTZWxlY3Rv
cj4gbV9jb21waWxlZFNlbGVjdG9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBkMTkyNmExODdmNWFkYjRjYmQzNDc4MGU1NzMy
YWZkYmQ1ZmRhOTQ2Li5mNjJhYjllMWUyZjMzMzg2YWE1NmVmYzE2NWU3YWZiZGFjZjZiZjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC0xMDY5LDMwICsxMDY5LDc0IEBAIHN0YXRpYyBSZWY8UHJvdG9jb2w6OkNTUzo6Q1NTU2Vs
ZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoY29uc3QgU3RyaW5nCiAgICAgcmV0
dXJuIGluc3BlY3RvclNlbGVjdG9yOwogfQogCi1zdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1
bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29uc3Qg
Q1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCitzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENT
U1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29u
c3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4gc2VsZWN0b3JzKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwq
W15dKj9cXCovIiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0
aWxpbmVFbmFibGVkKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOworICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5k
ZXggPSAwOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBzb3VyY2VEYXRhLT5zZWxlY3RvclJhbmdl
cykgewogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2VsZWN0b3IsIHRoYXQgbWVhbnMg
dGhlIFNvdXJjZURhdGEgZm9yIHRoaXMgQ1NTU3R5bGVTaGVldAogICAgICAgICAvLyBubyBsb25n
ZXIgbWF0Y2hlcyB1cCB3aXRoIHRoZSBhY3R1YWwgcnVsZXMgaW4gdGhlIENTU1N0eWxlU2hlZXQu
Ci0gICAgICAgIEFTU0VSVChzZWxlY3Rvcik7Ci0gICAgICAgIGlmICghc2VsZWN0b3IpCisgICAg
ICAgIEFTU0VSVChzZWxlY3RvckluZGV4IDwgc2VsZWN0b3JzLnNpemUoKSk7CisgICAgICAgIGlm
IChzZWxlY3RvckluZGV4ID49IHNlbGVjdG9ycy5zaXplKCkpCiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBTdHJpbmcgc2VsZWN0b3JUZXh0ID0gc2hlZXRUZXh0LnN1YnN0cmluZyhyYW5n
ZS5zdGFydCwgcmFuZ2UubGVuZ3RoKCkpOwogCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
c2VlIGFueSBjb21tZW50cyBpbiB0aGUgc2VsZWN0b3IgY29tcG9uZW50cywgb25seSB0aGUgbWVh
bmluZ2Z1bCBwYXJ0cy4KICAgICAgICAgcmVwbGFjZShzZWxlY3RvclRleHQsIGNvbW1lbnQsIFN0
cmluZygpKTsKLSAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JI
ZWxwZXIoc2VsZWN0b3JUZXh0LnN0cmlwV2hpdGVTcGFjZSgpLCAqc2VsZWN0b3IpKTsKKyAgICAg
ICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoc2VsZWN0b3JU
ZXh0LnN0cmlwV2hpdGVTcGFjZSgpLCAqc2VsZWN0b3JzLmF0KHNlbGVjdG9ySW5kZXgpKSk7CiAK
LSAgICAgICAgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpOworICAg
ICAgICArK3NlbGVjdG9ySW5kZXg7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Zl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVSdWxlPj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3NzU3R5bGVS
dWxlc1NwbGl0RnJvbVNhbWVSdWxlKFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUpCit7CisgICAg
aWYgKCFydWxlLT5zdHlsZVJ1bGUoKS5pc1NwbGl0RnJvbVJ1bGUoKSkKKyAgICAgICAgcmV0dXJu
IHsgcnVsZSB9OworCisgICAgZW5zdXJlRmxhdFJ1bGVzKCk7CisgICAgaWYgKCFtX2ZsYXRSdWxl
cy5jb250YWlucyhydWxlKSkKKyAgICAgICAgcmV0dXJuIHsgcnVsZSB9OworCisgICAgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBydWxlczsKKworICAgIHVuc2lnbmVkIGZpcnN0SW5kZXhP
ZlNwbGl0UnVsZSA9IG1fZmxhdFJ1bGVzLmZpbmQocnVsZSk7CisgICAgZm9yICg7IGZpcnN0SW5k
ZXhPZlNwbGl0UnVsZSA+IDA7IC0tZmlyc3RJbmRleE9mU3BsaXRSdWxlKSB7CisgICAgICAgIGF1
dG8gcnVsZUF0UHJldmlvdXNJbmRleCA9IG1fZmxhdFJ1bGVzLmF0KGZpcnN0SW5kZXhPZlNwbGl0
UnVsZSAtIDEpOworICAgICAgICBpZiAoIXJ1bGVBdFByZXZpb3VzSW5kZXgtPnN0eWxlUnVsZSgp
LmlzU3BsaXRGcm9tUnVsZSgpIHx8IHJ1bGVBdFByZXZpb3VzSW5kZXgtPnN0eWxlUnVsZSgpLmlz
TGFzdFJ1bGVTcGxpdEZyb21SdWxlKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBmb3IgKGF1dG8gaW5kZXggPSBmaXJzdEluZGV4T2ZTcGxpdFJ1bGU7IGluZGV4IDwgbV9mbGF0
UnVsZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8gcnVsZUF0SW5kZXggPSBtX2Zs
YXRSdWxlcy5hdChpbmRleCk7CisgICAgICAgIGlmICghcnVsZUF0SW5kZXgtPnN0eWxlUnVsZSgp
LmlzU3BsaXRGcm9tUnVsZSgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcnVsZXMu
YXBwZW5kKHJ1bGVBdEluZGV4KTsKKworICAgICAgICBpZiAocnVsZUF0SW5kZXgtPnN0eWxlUnVs
ZSgpLmlzTGFzdFJ1bGVTcGxpdEZyb21SdWxlKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICByZXR1cm4gcnVsZXM7Cit9CisKK1ZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OnNlbGVjdG9yc0ZvckNTU1N0eWxlUnVsZShSZWZQdHI8Q1NTU3R5
bGVSdWxlPiBydWxlKQoreworICAgIGF1dG8gcnVsZXMgPSBjc3NTdHlsZVJ1bGVzU3BsaXRGcm9t
U2FtZVJ1bGUocnVsZSk7CisKKyAgICBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiBzZWxlY3Rv
cnM7CisgICAgZm9yIChhdXRvJiBydWxlIDogY3NzU3R5bGVSdWxlc1NwbGl0RnJvbVNhbWVSdWxl
KHJ1bGUpKSB7CisgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcnVs
ZS0+c3R5bGVSdWxlKCkuc2VsZWN0b3JMaXN0KCkuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKKyAgICAgICAgICAgIHNlbGVjdG9y
cy5hcHBlbmQoc2VsZWN0b3IpOworICAgIH0KKyAgICByZXR1cm4gc2VsZWN0b3JzOworfQorCiBS
ZWY8UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
T2JqZWN0Rm9yU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIHJl
dHVybiBidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKHNlbGVjdG9yLT5zZWxlY3RvclRleHQo
KSwgKnNlbGVjdG9yKTsKQEAgLTExMDgsMTIgKzExNTIsMTIgQEAgUmVmPFByb3RvY29sOjpDU1M6
OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rv
ckxpc3QKICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3QgcmVseSBvbiB0aGUgc291
cmNlIGRhdGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNvbW1lbnRzIChiZWZvcmUg
dGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCA9
IHJ1bGUtPnNlbGVjdG9yVGV4dCgpOwogCisgICAgYXV0byB3ZWJDb3JlU2VsZWN0b3JzID0gc2Vs
ZWN0b3JzRm9yQ1NTU3R5bGVSdWxlKHJ1bGUpOwogICAgIGlmIChzb3VyY2VEYXRhKQotICAgICAg
ICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFy
c2VkU3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUoKS5zZWxlY3Rvckxpc3QoKSk7
CisgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQo
KSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIHdlYkNvcmVTZWxlY3RvcnMpOwogICAgIGVs
c2UgewogICAgICAgICBzZWxlY3RvcnMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpDU1M6OkNT
U1NlbGVjdG9yPjo6Y3JlYXRlKCk7Ci0gICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JMaXN0ID0gcnVsZS0+c3R5bGVSdWxlKCkuc2VsZWN0b3JMaXN0KCk7Ci0gICAgICAgIGZv
ciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNl
bGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCisgICAg
ICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yIDogd2ViQ29yZVNlbGVjdG9ycykK
ICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlbGVjdG9yKHNl
bGVjdG9yKSk7CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gUHJvdG9jb2w6OkNTUzo6U2VsZWN0
b3JMaXN0OjpjcmVhdGUoKQpAQCAtMTI1MSw3ICsxMjk1LDggQEAgRG9jdW1lbnQqIEluc3BlY3Rv
clN0eWxlU2hlZXQ6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogCiBSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlKSBjb25zdAogewotICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQt
PnJ1bGVTb3VyY2VEYXRhQXQocnVsZUluZGV4QnlTdHlsZShzdHlsZSkpOworICAgIGNvbnN0IGF1
dG8gdHJlYXRTcGxpdFJ1bGVzQXNTaW5nbGVSdWxlID0gdHJ1ZTsKKyAgICByZXR1cm4gbV9wYXJz
ZWRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUF0KHJ1bGVJbmRleEJ5U3R5bGUoc3R5bGUsIHRy
ZWF0U3BsaXRSdWxlc0FzU2luZ2xlUnVsZSkpOwogfQogCiBWZWN0b3I8c2l6ZV90PiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CkBAIC0xMjYxLDcgKzEzMDYsNyBAQCBW
ZWN0b3I8c2l6ZV90PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CiAg
ICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKG1fcGFyc2VkU3R5
bGVTaGVldC0+dGV4dCgpKTsKIH0KIAotdW5zaWduZWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVs
ZUluZGV4QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpIGNvbnN0Cit1bnNp
Z25lZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlSW5kZXhCeVN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qIHBhZ2VTdHlsZSwgYm9vbCB0cmVhdFNwbGl0UnVsZXNBc1NpbmdsZVJ1bGUpIGNvbnN0
CiB7CiAgICAgZW5zdXJlRmxhdFJ1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwpAQCAt
MTI2OSw3ICsxMzE0LDggQEAgdW5zaWduZWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUluZGV4
QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpIGMKICAgICAgICAgaWYgKCZy
dWxlLT5zdHlsZSgpID09IHBhZ2VTdHlsZSkKICAgICAgICAgICAgIHJldHVybiBpbmRleDsKIAot
ICAgICAgICArK2luZGV4OworICAgICAgICBpZiAoIXRyZWF0U3BsaXRSdWxlc0FzU2luZ2xlUnVs
ZSB8fCAhcnVsZS0+c3R5bGVSdWxlKCkuaXNTcGxpdEZyb21SdWxlKCkgfHwgcnVsZS0+c3R5bGVS
dWxlKCkuaXNMYXN0UnVsZVNwbGl0RnJvbVJ1bGUoKSkKKyAgICAgICAgICAgICsraW5kZXg7CiAg
ICAgfQogICAgIHJldHVybiBVSU5UX01BWDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDc4ZjE0ZDI5MTZiYWE1YzM3ZTAxMDkzOTJm
MjFlZjY2YTY1NWY3NmMuLmE1NDQzYzI0Y2MzNjQxMzA3NTY0MDYwOTZkM2Q3MDc1MmM0MmNjZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApA
QCAtMTkzLDcgKzE5Myw3IEBAIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JDU1NJZCBydWxlT3JT
dHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKICAgICB2aXJ0dWFsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgcnVsZUluZGV4QnlTdHlsZShDU1NTdHlsZURl
Y2xhcmF0aW9uKiwgYm9vbCB0cmVhdFNwbGl0UnVsZXNBc1NpbmdsZVJ1bGUgPSBmYWxzZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpOwogICAgIHZpcnR1
YWwgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJik7CiAKQEAgLTIxOSw2ICsyMTksOSBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9y
KGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqLCBp
bnQmIGVuZGluZ0xpbmUpOwogCisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBjc3NT
dHlsZVJ1bGVzU3BsaXRGcm9tU2FtZVJ1bGUoUmVmUHRyPENTU1N0eWxlUnVsZT4pOworICAgIFZl
Y3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IHNlbGVjdG9yc0ZvckNTU1N0eWxlUnVsZShSZWZQdHI8
Q1NTU3R5bGVSdWxlPik7CisKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50Owog
ICAgIFN0cmluZyBtX2lkOwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VTdHlsZVNo
ZWV0OwpAQCAtMjQyLDcgKzI0NSw3IEBAIHByaXZhdGU6CiAKICAgICBEb2N1bWVudCogb3duZXJE
b2N1bWVudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVs
ZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsg
QVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9y
dWxlU291cmNlRGF0YTsgfQotICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiopIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBydWxl
SW5kZXhCeVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBib29sKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CiAgICAgYm9vbCBlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSBmaW5hbDsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM4NDM0MmJiMjFiZWM3MTNkNzZiNzY2NTE1ZjU3MzZj
NmQ3YzgzOGMuLmJhNzFjZGZiYzE4ZTg1NTI4YjcxMjUyZjk0OGM4OTM1MjA5OThiOGUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOC0xOCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGUgcnVsZXMgZGVjbGFyZWQgYWZ0
ZXIgYSBydWxlIHdob3NlIHNlbGVjdG9yIGhhcyBvdmVyIDgxOTIgY29tcG9uZW50cyBhcmUgbm90
IHNob3duIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCB2ZXJ5IGxhcmdlICg4MTkyIGluZGl2aWR1YWwgY29tcG9uZW50KSBzZWxl
Y3RvcnMgdG8gZW5zdXJlIHN1cnJvdW5kaW5nIHN0eWxlcyBhcmUgY29ycmVjdGx5IHJlc29sdmVk
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZUxhcmdl
U2VsZWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9n
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZUxhcmdlU2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDIx
LTA4LTEzICBBeXVtaSBLb2ppbWEgIDxheXVtaV9rb2ppbWFAYXBwbGUuY29tPgogCiAgICAgICAg
IFsgQmlnU3VyIERlYnVnIHdrMiBFV1MgXSB3ZWJydGMvdmlkZW8taW50ZXJydXB0aW9uLmh0bWwg
aXMgZmxha3kgY3Jhc2hpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3Nz
L2dldE1hdGNoZWRTdHlsZXNGb3JOb2RlTGFyZ2VTZWxlY3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZUxhcmdlU2VsZWN0
b3JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWE3NjU0NTJmNDc3NDNkMmQzNTY3NjI0NjBh
MTk0YTBjY2NjYzMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nz
cy9nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZUxhcmdlU2VsZWN0b3JzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI3IEBACitUZXN0cyBmb3IgdGhlIENTUy5nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZSBj
b21tYW5kIGFuZCB2ZXJ5IGxhcmdlIHNlbGVjdG9ycy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IENTUy5nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZS5MYXJnZVNlbGVjdG9ycworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IENTUy5nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZS5MYXJnZVNlbGVjdG9ycy5T
dHlsZVByZWNlZWRpbmdMYXJnZVNlbGVjdG9yCitQQVNTOiBFeHBlY3RlZCBleGFjdGx5IG9uZSBt
YXRjaGluZyBhdXRob3JlZCBydWxlLgorUEFTUzogRXhwZWN0ZWQgcGFyc2VkIHNlbGVjdG9yIGFu
ZCByYXcgc2VsZWN0b3IgdGV4dCB0byBiZSB0aGUgc2FtZS4KK1BBU1M6IEV4cGVjdGVkIGV4YWN0
bHkgb25lIENTUyBwcm9wZXJ0eS4KK1BBU1M6IEV4cGVjdGVkIHBhcnNlZCBwcm9wZXJ0eSBhbmQg
cmF3IHN0eWxlIHRleHQgdG8gYmUgdGhlIHNhbWUuCitQQVNTOiBFeHBlY3RlZCBwcm9wZXJ0eSB2
YWx1ZSB0byBiZSBgcmViZWNjYXB1cnBsZWAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDU1Mu
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUuTGFyZ2VTZWxlY3RvcnMuU3R5bGVXaXRoTGFyZ2VTZWxl
Y3RvcgorUEFTUzogRXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2hpbmcgYXV0aG9yZWQgcnVsZS4K
K1BBU1M6IEV4cGVjdGVkIGV4YWN0bHkgYDE2NWAgc2VsZWN0b3JzLgorUEFTUzogRXhwZWN0ZWQg
Zmlyc3QgcGFyc2VkIHNlbGVjdG9yIHRvIGJlIGAjdGVzdDJgLgorUEFTUzogRXhwZWN0ZWQgcmF3
IHNlbGVjdG9yIHRvIHN0YXJ0IHdpdGggYCN0ZXN0MixgCitQQVNTOiBFeHBlY3RlZCBleGFjdGx5
IG9uZSBDU1MgcHJvcGVydHkuCitQQVNTOiBFeHBlY3RlZCBwYXJzZWQgcHJvcGVydHkgYW5kIHJh
dyBzdHlsZSB0ZXh0IHRvIGJlIHRoZSBzYW1lLgorUEFTUzogRXhwZWN0ZWQgcHJvcGVydHkgdmFs
dWUgdG8gYmUgYGFsaWNlYmx1ZWAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDU1MuZ2V0TWF0
Y2hlZFN0eWxlc0Zvck5vZGUuTGFyZ2VTZWxlY3RvcnMuU3R5bGVGb2xsb3dpbmdMYXJnZVNlbGVj
dG9yCitQQVNTOiBFeHBlY3RlZCBleGFjdGx5IG9uZSBtYXRjaGluZyBhdXRob3JlZCBydWxlLgor
UEFTUzogRXhwZWN0ZWQgcGFyc2VkIHNlbGVjdG9yIGFuZCByYXcgc2VsZWN0b3IgdGV4dCB0byBi
ZSB0aGUgc2FtZS4KK1BBU1M6IEV4cGVjdGVkIGV4YWN0bHkgb25lIENTUyBwcm9wZXJ0eS4KK1BB
U1M6IEV4cGVjdGVkIHBhcnNlZCBwcm9wZXJ0eSBhbmQgcmF3IHN0eWxlIHRleHQgdG8gYmUgdGhl
IHNhbWUuCitQQVNTOiBFeHBlY3RlZCBwcm9wZXJ0eSB2YWx1ZSB0byBiZSBgcGFwYXlhd2hpcGAu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGVMYXJnZVNlbGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9n
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZUxhcmdlU2VsZWN0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE5
MTI1NjliMjdkYmM4ZmRkNmRmNDg3YjRlYTQ2MzE0OTI0YjgyYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGVMYXJnZVNl
bGVjdG9ycy5odG1sCkBAIC0wLDAgKzEsMjczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNTUy5n
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZS5MYXJnZVNlbGVjdG9ycyIpOworCisgICAgZnVuY3Rpb24g
YWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZWxlY3RvciwgYXV0aG9yZWRSdWxlSGFu
ZGxlcn0pCisgICAgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBu
YW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgICAgIGxldCBkb2N1bWVudE5vZGUgPSBhd2FpdCBXSS5kb21NYW5hZ2Vy
LnJlcXVlc3REb2N1bWVudCgpOworICAgICAgICAgICAgICAgIGxldCBub2RlSWQgPSBhd2FpdCBk
b2N1bWVudE5vZGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgbGV0
IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRvbU5vZGUsIGBTaG91bGQgZmluZCBET00gTm9kZSBm
b3Igc2VsZWN0b3IgJyR7c2VsZWN0b3J9Jy5gKTsKKworICAgICAgICAgICAgICAgIGxldCBkb21O
b2RlU3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRvbU5vZGVTdHlsZXMsIGBTaG91bGQgZmlu
ZCBDU1MgU3R5bGVzIGZvciBET00gTm9kZS5gKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBkb21O
b2RlU3R5bGVzLnJlZnJlc2hJZk5lZWRlZCgpOworCisgICAgICAgICAgICAgICAgbGV0IGF1dGhv
cmVkUnVsZXMgPSBkb21Ob2RlU3R5bGVzLm1hdGNoZWRSdWxlcy5maWx0ZXIoKHJ1bGUpID0+IHJ1
bGUudHlwZSA9PT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLkF1dGhvcik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhdXRob3JlZFJ1bGVzLmxlbmd0aCwgMSwgIkV4
cGVjdGVkIGV4YWN0bHkgb25lIG1hdGNoaW5nIGF1dGhvcmVkIHJ1bGUuIik7CisKKyAgICAgICAg
ICAgICAgICBsZXQgYXV0aG9yZWRSdWxlID0gYXV0aG9yZWRSdWxlc1swXTsKKworICAgICAgICAg
ICAgICAgIGF3YWl0IGF1dGhvcmVkUnVsZUhhbmRsZXIoYXV0aG9yZWRSdWxlKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIkNTUy5nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZS5MYXJnZVNlbGVjdG9ycy5TdHlsZVBy
ZWNlZWRpbmdMYXJnZVNlbGVjdG9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJFbnN1cmUgdGhh
dCBmb3IgcnVsZXMgZGVjbGFyZWQgYmVmb3JlIGEgbGFyZ2Ugc2VsZWN0b3IgdGhhdCBib3RoIHRo
ZSBwYXJzZWQgYW5kIHJhdyBzZWxlY3RvciBhbmQgc3R5bGUgcHJvcGVydGllcyBhcmUgaW4gYWdy
ZWVtZW50LiIsCisgICAgICAgIHNlbGVjdG9yOiAiI3Rlc3QxIiwKKyAgICAgICAgYXN5bmMgYXV0
aG9yZWRSdWxlSGFuZGxlcihydWxlKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHJ1bGUuc2VsZWN0b3JzWzBdLnRleHQsIHJ1bGUuc2VsZWN0b3JUZXh0LCAiRXhwZWN0
ZWQgcGFyc2VkIHNlbGVjdG9yIGFuZCByYXcgc2VsZWN0b3IgdGV4dCB0byBiZSB0aGUgc2FtZS4i
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChydWxlLnN0eWxlLnBy
b3BlcnRpZXMubGVuZ3RoLCAxLCAiRXhwZWN0ZWQgZXhhY3RseSBvbmUgQ1NTIHByb3BlcnR5LiIp
OworICAgICAgICAgICAgbGV0IHByb3BlcnR5ID0gcnVsZS5zdHlsZS5wcm9wZXJ0aWVzWzBdOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHByb3BlcnR5LnRleHQudHJp
bSgpLCBydWxlLnN0eWxlLnRleHQudHJpbSgpLCAiRXhwZWN0ZWQgcGFyc2VkIHByb3BlcnR5IGFu
ZCByYXcgc3R5bGUgdGV4dCB0byBiZSB0aGUgc2FtZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocHJvcGVydHkudmFsdWUsICJyZWJlY2NhcHVycGxlIiwgIkV4cGVj
dGVkIHByb3BlcnR5IHZhbHVlIHRvIGJlIGByZWJlY2NhcHVycGxlYC4iKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQ1NTLmdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlLkxhcmdlU2VsZWN0b3JzLlN0eWxlV2l0aExhcmdlU2VsZWN0b3IiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkVuc3VyZSB0aGF0IGZvciBydWxlcyB3aXRoIGEgbGFyZ2Ug
c2VsZWN0b3IgdGhhdCBib3RoIHRoZSBwYXJzZWQgYW5kIHJhdyBzZWxlY3RvciBhbmQgc3R5bGUg
cHJvcGVydGllcyBhcmUgaW4gYWdyZWVtZW50LiIsCisgICAgICAgIHNlbGVjdG9yOiAiI3Rlc3Qy
IiwKKyAgICAgICAgYXN5bmMgYXV0aG9yZWRSdWxlSGFuZGxlcihydWxlKSB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJ1bGUuc2VsZWN0b3JzLmxlbmd0aCwgMTY1LCAi
RXhwZWN0ZWQgZXhhY3RseSBgMTY1YCBzZWxlY3RvcnMuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHJ1bGUuc2VsZWN0b3JzWzBdLnRleHQsICIjdGVzdDIiLCAiRXhw
ZWN0ZWQgZmlyc3QgcGFyc2VkIHNlbGVjdG9yIHRvIGJlIGAjdGVzdDJgLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKHJ1bGUuc2VsZWN0b3JUZXh0LnN0YXJ0c1dpdGgo
IiN0ZXN0MiwiKSwgIkV4cGVjdGVkIHJhdyBzZWxlY3RvciB0byBzdGFydCB3aXRoIGAjdGVzdDIs
YCIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJ1bGUuc3R5bGUu
cHJvcGVydGllcy5sZW5ndGgsIDEsICJFeHBlY3RlZCBleGFjdGx5IG9uZSBDU1MgcHJvcGVydHku
Iik7CisgICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBydWxlLnN0eWxlLnByb3BlcnRpZXNbMF07
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocHJvcGVydHkudGV4dC50
cmltKCksIHJ1bGUuc3R5bGUudGV4dC50cmltKCksICJFeHBlY3RlZCBwYXJzZWQgcHJvcGVydHkg
YW5kIHJhdyBzdHlsZSB0ZXh0IHRvIGJlIHRoZSBzYW1lLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChwcm9wZXJ0eS52YWx1ZSwgImFsaWNlYmx1ZSIsICJFeHBlY3Rl
ZCBwcm9wZXJ0eSB2YWx1ZSB0byBiZSBgYWxpY2VibHVlYC4iKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQ1NTLmdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlLkxhcmdlU2VsZWN0b3JzLlN0eWxlRm9sbG93aW5nTGFyZ2VTZWxlY3RvciIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIHRoYXQgZm9yIHJ1bGVzIGRlY2xhcmVkIGFmdGVy
IGEgbGFyZ2Ugc2VsZWN0b3IgdGhhdCBib3RoIHRoZSBwYXJzZWQgYW5kIHJhdyBzZWxlY3RvciBh
bmQgc3R5bGUgcHJvcGVydGllcyBhcmUgaW4gYWdyZWVtZW50LiIsCisgICAgICAgIHNlbGVjdG9y
OiAiI3Rlc3QzIiwKKyAgICAgICAgYXN5bmMgYXV0aG9yZWRSdWxlSGFuZGxlcihydWxlKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJ1bGUuc2VsZWN0b3JzWzBdLnRl
eHQsIHJ1bGUuc2VsZWN0b3JUZXh0LCAiRXhwZWN0ZWQgcGFyc2VkIHNlbGVjdG9yIGFuZCByYXcg
c2VsZWN0b3IgdGV4dCB0byBiZSB0aGUgc2FtZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChydWxlLnN0eWxlLnByb3BlcnRpZXMubGVuZ3RoLCAxLCAiRXhwZWN0
ZWQgZXhhY3RseSBvbmUgQ1NTIHByb3BlcnR5LiIpOworICAgICAgICAgICAgbGV0IHByb3BlcnR5
ID0gcnVsZS5zdHlsZS5wcm9wZXJ0aWVzWzBdOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHByb3BlcnR5LnRleHQudHJpbSgpLCBydWxlLnN0eWxlLnRleHQudHJpbSgp
LCAiRXhwZWN0ZWQgcGFyc2VkIHByb3BlcnR5IGFuZCByYXcgc3R5bGUgdGV4dCB0byBiZSB0aGUg
c2FtZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocHJvcGVydHku
dmFsdWUsICJwYXBheWF3aGlwIiwgIkV4cGVjdGVkIHByb3BlcnR5IHZhbHVlIHRvIGJlIGBwYXBh
eWF3aGlwYC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2Vz
QW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAvKiBJbnRlbnRpb25hbCBw
cmVjZWRpbmcgc2VsZWN0b3IgY29tbWVudCAqLyAjdGVzdDEgLyogSW50ZW50aW9uYWwgZm9sbG93
aW5nIHNlbGVjdG9yIGNvbW1lbnQuICovIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVi
ZWNjYXB1cnBsZTsKKyAgICB9CisKKyAgICAjdGVzdDIsCisgICAgYSBiIGMgZCBlIGYgZyBoIGkg
aiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBN
IE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0g
biBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBR
IFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEg
ciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBV
IFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUg
diB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZ
LAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkg
QSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBh
IGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQg
RSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBl
IGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEgg
SSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBp
IGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwg
TSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBt
IG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAg
USBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBx
IHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQg
VSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1
IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFgg
WSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5
IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAg
YSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBE
IEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQg
ZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBI
IEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGgg
aSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBM
IE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwg
bSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQ
IFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAg
cSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBU
IFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQg
dSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBY
IFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHgg
eSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAg
IGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMg
RCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBk
IGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcg
SCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBo
IGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsg
TCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBs
IG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8g
UCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBw
IHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMg
VCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0
IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcg
WCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4
IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAg
ICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBD
IEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMg
ZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBH
IEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcg
aCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBL
IEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsg
bCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBP
IFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8g
cCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBT
IFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMg
dCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBX
IFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcg
eCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisg
ICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIg
QyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBj
IGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYg
RyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBn
IGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEog
SyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBr
IGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4g
TyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBv
IHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIg
UyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBz
IHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYg
VyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3
IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAor
ICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBC
IEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIg
YyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBG
IEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYg
ZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBK
IEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGog
ayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBO
IE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4g
byBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBS
IFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIg
cyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBW
IFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYg
dyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwK
KyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEg
QiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBi
IGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUg
RiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBm
IGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkg
SiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBq
IGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0g
TiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBu
IG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEg
UiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSBy
IHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUg
ViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2
IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFks
CisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBB
IEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEg
YiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBF
IEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUg
ZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJ
IEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkg
aiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBN
IE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0g
biBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBR
IFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEg
ciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBV
IFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUg
diB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZ
LAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkg
QSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBh
IGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQg
RSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBl
IGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEgg
SSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBp
IGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwg
TSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBt
IG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAg
USBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBx
IHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQg
VSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1
IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFgg
WSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5
IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAg
YSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBE
IEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQg
ZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBI
IEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGgg
aSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBM
IE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwg
bSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQ
IFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAg
cSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBU
IFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQg
dSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBY
IFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHgg
eSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAg
IGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMg
RCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBk
IGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcg
SCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBo
IGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsg
TCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBs
IG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8g
UCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBw
IHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMg
VCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0
IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcg
WCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4
IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAg
ICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBD
IEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMg
ZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBH
IEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcg
aCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBL
IEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsg
bCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBP
IFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8g
cCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBT
IFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMg
dCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBX
IFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcg
eCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisg
ICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIg
QyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBj
IGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYg
RyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBn
IGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEog
SyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBr
IGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4g
TyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBv
IHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIg
UyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBz
IHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYg
VyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3
IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAor
ICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBC
IEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIg
YyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBG
IEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYg
ZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBK
IEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGog
ayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBO
IE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4g
byBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBS
IFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIg
cyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBW
IFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYg
dyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwK
KyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEg
QiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBi
IGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUg
RiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBm
IGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkg
SiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBq
IGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0g
TiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBu
IG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEg
UiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSBy
IHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUg
ViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2
IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFks
CisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBB
IEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEg
YiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBF
IEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUg
ZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJ
IEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkg
aiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBN
IE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0g
biBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBR
IFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEg
ciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBV
IFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUg
diB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZ
LAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkg
QSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBh
IGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQg
RSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBl
IGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEgg
SSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBp
IGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwg
TSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBt
IG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAg
USBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBx
IHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQg
VSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1
IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFgg
WSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5
IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAg
YSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBE
IEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQg
ZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBI
IEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGgg
aSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBM
IE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwg
bSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQ
IFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAg
cSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBU
IFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQg
dSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBY
IFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHgg
eSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAg
IGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMg
RCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBk
IGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcg
SCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBo
IGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsg
TCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBs
IG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8g
UCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBw
IHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMg
VCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0
IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcg
WCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4
IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAg
ICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBD
IEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMg
ZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBH
IEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcg
aCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBL
IEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsg
bCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBP
IFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8g
cCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBT
IFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMg
dCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBX
IFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcg
eCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisg
ICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIg
QyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBj
IGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYg
RyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBn
IGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEog
SyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBr
IGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4g
TyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBv
IHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIg
UyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBz
IHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYg
VyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3
IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAor
ICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBC
IEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIg
YyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBG
IEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYg
ZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBK
IEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGog
ayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBO
IE8gUCBRIFIgUyBUIFUgViBXIFggWSwKKyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4g
byBwIHEgciBzIHQgdSB2IHcgeCB5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBS
IFMgVCBVIFYgVyBYIFksCisgICAgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIg
cyB0IHUgdiB3IHggeSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBW
IFcgWCBZLAorICAgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYg
dyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSwK
KyAgICBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IEEg
QiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFksCisgICAgYSBi
IGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiB3IHggeSBBIEIgQyBEIEUg
RiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZLAorICAgIGEgYiBjIGQgZSBm
IGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgQSBCIEMgRCBFIEYgRyBIIEkg
SiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSB7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGFsaWNlYmx1ZTsKKyAgICB9CisKKyAgICAjdGVzdDMgeworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBwYXBheWF3aGlwOworICAgIH0KKworICAgICN1bnVzZWRSdWxlIHsKKyAgICAgICAg
LyogVGhlIHJ1bGUgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLiAqLworICAgIH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZm9yIHRo
ZSBDU1MuZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUgY29tbWFuZCBhbmQgdmVyeSBsYXJnZSBzZWxl
Y3RvcnMuPC9wPgorICAgIDxkaXYgaWQ9InRlc3QxIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJ0ZXN0
MiI+PC9kaXY+CisgICAgPGRpdiBpZD0idGVzdDMiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>