<?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>208727</bug_id>
          
          <creation_ts>2020-03-06 11:42:17 -0800</creation_ts>
          <short_desc>[GPUP] Move AVSystemController code into the GPU process</short_desc>
          <delta_ts>2020-03-09 02:34:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626771</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 11:42:17 -0800</bug_when>
    <thetext>[GPUP] Move AVSystemController code into the GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626783</commentid>
    <comment_count>1</comment_count>
      <attachid>392750</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 12:10:17 -0800</bug_when>
    <thetext>Created attachment 392750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626786</commentid>
    <comment_count>2</comment_count>
      <attachid>392752</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 12:17:51 -0800</bug_when>
    <thetext>Created attachment 392752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626802</commentid>
    <comment_count>3</comment_count>
      <attachid>392755</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 12:35:36 -0800</bug_when>
    <thetext>Created attachment 392755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626934</commentid>
    <comment_count>4</comment_count>
      <attachid>392755</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-06 15:54:04 -0800</bug_when>
    <thetext>Comment on attachment 392755
Patch

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

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:72
&gt; +#if HAVE(MEDIA_PLAYER) &amp;&amp; !PLATFORM(WATCHOS)

HAVE_MEDIA_PLAYER is always defined for PLATFORM(COCOA)

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:88
&gt; +#if HAVE(MEDIA_PLAYER) &amp;&amp; !PLATFORM(WATCHOS)

Ditto.

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:183
&gt; +    m_objcObserver = nil;

Nit: this isn&apos;t necessary since it is a RetainPtr

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:361
&gt; +#if HAVE(MEDIA_PLAYER) &amp;&amp; !PLATFORM(WATCHOS)

HAVE_MEDIA_PLAYER is always defined for PLATFORM(COCOA)

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:387
&gt; +#if HAVE(MEDIA_PLAYER) &amp;&amp; !PLATFORM(WATCHOS)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626966</commentid>
    <comment_count>5</comment_count>
      <attachid>392803</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 16:32:34 -0800</bug_when>
    <thetext>Created attachment 392803
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627050</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-06 18:01:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/60178482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627221</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-07 08:41:02 -0800</bug_when>
    <thetext>Won&apos;t land until I fix those test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627222</commentid>
    <comment_count>8</comment_count>
      <attachid>392860</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-07 08:49:44 -0800</bug_when>
    <thetext>Created attachment 392860
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627517</commentid>
    <comment_count>9</comment_count>
      <attachid>392958</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 10:13:41 -0700</bug_when>
    <thetext>Created attachment 392958
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627527</commentid>
    <comment_count>10</comment_count>
      <attachid>392961</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 10:57:16 -0700</bug_when>
    <thetext>Created attachment 392961
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627537</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:04:56 -0700</bug_when>
    <thetext>Layout test failure (fast/hidpi/image-srcset-relative-svg-canvas-2x.html) is a failure already in the tree (image diff by 0.01%), and is unrelated. Landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627545</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:22:48 -0700</bug_when>
    <thetext>Committed r258109: &lt;https://trac.webkit.org/changeset/258109&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627704</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-09 02:34:49 -0700</bug_when>
    <thetext>We register two applicationWillEnterForeground for get_UIKit_UIApplicationWillEnterForegroundNotification and WebUIApplicationWillEnterForegroundNotification.
Ditto for applicationDidBecomeActive, applicationWillResignActive and applicationDidEnterBackground.

Given we post a WebUIApplicationWillEnterForegroundNotification notification from WebProcess/WebPage, shouldn&apos;t we listen to this notification from WebProcess only?

Maybe we do not need WebUIApplicationWillEnterForegroundNotification anymore and can rely on get_UIKit_UIApplicationWillEnterForegroundNotification only? Ditto for others?

Also, we are listening for UIKit_UIApplicationWillEnterForegroundNotification in both UIProcess and GPUProcess. Do we need both? If we need both, should we try to have a single code path (GPUProcess -&gt; UIProcess -&gt; WebProcess for instance)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392750</attachid>
            <date>2020-03-06 12:10:17 -0800</date>
            <delta_ts>2020-03-06 12:13:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208727-20200306121016.patch</filename>
            <type>text/plain</type>
            <size>222894</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNmE1YzdjZjYyMWZh
ODBkMzUyMzI3ODYzZDkwNGEyN2NhYjVlZS4uMGM5ZmI4NGJmZWQ3MTA5Y2Q1ODdjN2UxNjQ4NGRk
YmQ1NzQ2OWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBj
b2RlIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIGFuZCBpbnRvIGEgbmV3CisgICAgICAg
IGNsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlciwgd2hpY2ggaXMgY3VycmVudGx5IGlPUyBvbmx5LiBU
aGUgYWJzdHJhY3QgYmFzZSBjbGFzcworICAgICAgICB3aWxsIGJlIG92ZXJyaWRlbiBieSBXZWJL
aXQgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbTogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0uCisgICAg
ICAgIChzaGFyZWRIZWxwZXJJbnN0YW5jZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6
OnNoYXJlZEhlbHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVk
SGVscGVyKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2V0U2hhcmVkSGVscGVyKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbkhlbHBlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorICAgICAgICAoTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpjYXJQbGF5U2VydmVyRGllZCk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZCk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVv
Um91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZl
ZEludGVycnVwdGlvbik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6
XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKToKKyAgICAg
ICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9u
Ol0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRD
aGFuZ2U6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaXJlTGVz
c1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXRE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjYXJQbGF5U2Vy
dmVyRGllZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2FsbGJhY2tdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25pdG9yaW5n
QWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBpbnRlcnJ1cHRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2U6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDItMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBMZWdhY3kgRU1FIEFQSSBpbiB0aGUg
R1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDMwZjBhM2Q4YmMyOTU4YmZmZGM5Yzc5OGM5N2Y4NDJk
YjRhZGVmNC4uYjUzZTczODExZWJiY2ViMzdiMGI1YmM2ZDlmMTlhOTlhYmQzNDIyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOTEgQEAKKzIwMjAtMDMtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIE1vdmUgQVZTeXN0ZW1Db250cm9sbGVyIGNvZGUg
aW50byB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODcyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG5ldyBjbGFzcyBwYWlyIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci9Qcm94eS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjptZWRpYVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eTo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6
OnJlY2VpdmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dERpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpz
dG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3Rp
dmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZl
SGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vz
c0Zvck1lZGlhKToKKworMjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IExlZ2FjeSBFTUUgQVBJIGluIHRoZSBHUFUg
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnksIFJlbWF0ZUxlZ2FjeUNETSxS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLCBhbmQgYWxsCisgICAgICAgIG9mIHRoZWlyIGFzc29jaWF0
ZWQgUHJveHkgb2JqZWN0cy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNl
c3Npb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6ZmFjdG9yeSBjb25zdCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbjogQWRk
ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZl
cnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFS
ZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtleUZvcktleUlEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpmYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXRQbGF5ZXIpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lvbik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RNRmFjdG9yeSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06OlJlbW90ZUxlZ2FjeUNETSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwbGVtZW50
TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmdwdVByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5OjpmaW5kQ0RNIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5Lmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaDog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0VG9EYXRhUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxl
Z2FjeUNETVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAy
MDIwLTAzLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFVQXSBDb252ZXJ0IENETUZhY3RvcnkgYXdheSBmcm9tIHBsYXRmb3JtU3RyYXRlZ2llcygpIGFu
ZCB1c2UgV2ViUHJvY2VzcyBzZXR0aW5ncyBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApp
bmRleCA0YTA5MmQ4OGZmOGVjMDJjMzhjMjk4ODk5NzRlYzlhMjljYTMwZDNiLi5kZDM0OGZlYmZh
MDZlYzdlMWZhYjI0M2JhODk2NmUwNTU2OTE4OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE3MSw2ICsxNzEsNyBAQCBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuY3BwCiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkK
IHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3Jt
L2F1ZGlvL21hYy9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2MxMDY5YjA0YmNj
ZTM4NDZhM2UxMzA3NWU2OTRkZDQ3ZmUyYjI4NS4uNWJlODhiNWJlMWU0NmJmNGU2YmMxNTA2MTA3
MTQ4MmU2Yzg0M2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDE1MCw2ICs0MTUwLDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3
ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNV
dGlsaXRpZXNDb2NvYS5oICovOyB9OwogCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsg
fTsKIAkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAw
RDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Np
b25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1t
ICovOyB9OworCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVy
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3
NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2
MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNw
cCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQy
NzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZE
MkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIz
NCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CkBAIC0xMzg5MSw2ICsxMzg5Myw4IEBA
CiAJCUNEODcxQzY4MUZCNTJCNjkwMEYwQjk2NSAvKiBJU09Cb3guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q4NzFDNjkxRkI1MkI2OTAwRjBCOTY1IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDg3MUM2QTFGQjUyQjZBMDBGMEI5NjUgLyogSVNPT3JpZ2lu
YWxGb3JtYXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNP
T3JpZ2luYWxGb3JtYXRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3
NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhBN0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q4QTdCQkExOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2
MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjIwNyw2ICsyNjIxMSw4IEBACiAJ
CQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8s
CiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICov
LAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8s
CisJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5o
ICovLAorCQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJ
T1MubW0gKi8sCiAJCQkJMDc2MzhBOTcxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaCAqLywKIAkJCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbSAqLywKIAkJCSk7CkBAIC0zMTU0MCw2ICszMTU0Niw3IEBACiAJCQkJ
QTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNz
aW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYg
LyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTZGNUVDODFC
NTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIy
NTNCRTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM3MDgsNiArMzM3MTUsNyBAQAogCQkJCTE1MDUyNEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVG
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3
MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVB
MUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBl
cklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYzNzJlZDBhZWFiZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJm
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgPHd0Zi9X
ZWFrSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25IZWxwZXJDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNs
YXNzIEludGVycnVwdGlvblR5cGUgOiBib29sIHsgQmVnaW4sIEVuZCB9OworICAgIGVudW0gY2xh
c3MgU2hvdWxkUmVzdW1lIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
ZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSA9IDA7CisK
KyAgICBlbnVtIGNsYXNzIFN1c3BlbmRlZFVuZGVyTG9jayA6IGJvb2wgeyBObywgWWVzIH07Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRV
bmRlckxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0
aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpID0gMDsKKworICAgIGVudW0gY2xhc3MgSGFzQXZhaWxhYmxlVGFy
Z2V0cyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpID0gMDsKKworICAg
IGVudW0gY2xhc3MgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IDogYm9vbCB7IE5vLCBZZXMg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFu
Z2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNo
b3VsZFBhdXNlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSkgPSAwOworCisgICAgZW51bSBjbGFzcyBTdXBw
b3J0c0FpclBsYXlWaWRlbyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKSA9IDA7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVNl
c3Npb25IZWxwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBNZWRpYVNlc3Npb25IZWxwZXImIHNoYXJlZEhlbHBlcigpOworICAgIHN0YXRpYyB2
b2lkIHNldFNoYXJlZEhlbHBlcihVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCByZXNldFNoYXJlZEhlbHBlcigpOworCisgICAgTWVkaWFTZXNzaW9uSGVs
cGVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVm
YXVsdDsKKworICAgIHZvaWQgYWRkQ2xpZW50KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOwor
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOworCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgPSAwOworCisgICAg
Ym9vbCBpc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzQ291bnQ7IH0KKyAgICBib29sIGlzRXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGU7IH0KKyAgICBib29sIGFjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvOyB9
CisgICAgYm9vbCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7IH0KKworcHJvdGVjdGVkOgorICAgIFdl
YWtIYXNoU2V0PE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudD4gbV9jbGllbnRzOworICAgIHVpbnQz
Ml90IG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQgeyAwIH07CisgICAgYm9vbCBtX2lz
RXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hY3Rp
dmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8geyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCB7IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA5MzIxNmMxM2YwOGJiYzIwN2Q4ZDU0
ZjM2Y2JhNzU5OTMzMjdmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTAsMCArMSw2MDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhU2Vzc2lvbkhl
bHBlcklPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiTG9nZ2lu
Zy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgiCisjaW1wb3J0ICJXZWJD
b3JlVGhyZWFkUnVuLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4K
KyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlJvdXRlRGV0ZWN0b3IuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9DZWxlc3Rp
YWxTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VuaXF1ZVJlZi5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
aD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorCitXRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBA
IldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVf
RVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlm
aWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRp
b24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3Rp
ZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24iOworCisjaWYgSEFWRShDRUxFU1RJQUwpCitTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQorU09GVF9MSU5LX0NMQVNTX09Q
VElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQorU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxp
Y2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFW
U3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5
c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAq
KQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9s
bGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJf
QWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVz
ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFW
U3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0
ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzsKKworQGludGVyZmFjZSBXZWJNZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7
CisgICAgTWVkaWFTZXNzaW9uSGVscGVyaU9TKiBfY2FsbGJhY2s7CisKKyNpZiBIQVZFKE1FRElB
X1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisgICAgUmV0YWluUHRyPEFWUm91dGVEZXRl
Y3Rvcj4gX3JvdXRlRGV0ZWN0b3I7CisjZW5kaWYKKyAgICBib29sIF9tb25pdG9yaW5nQWlyUGxh
eVJvdXRlczsKKyAgICBib29sIF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZzsK
K30KKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9uSGVscGVyaU9TKiljYWxs
YmFjazsKKworLSAodm9pZCljbGVhckNhbGxiYWNrOworLSAodm9pZClpbnRlcnJ1cHRpb246KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClhcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwor
LSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb247CistIChCT09MKWhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZTsKKworI2lm
IEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKy0gKHZvaWQpc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlczsKKy0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91
dGVzOworI2VuZGlmCisKK0BlbmQKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TIGZpbmFs
IDogcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlciB7CitwdWJsaWM6CisgICAgTWVkaWFTZXNzaW9u
SGVscGVyaU9TKCk7CisgICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOworCisgICAgdm9pZCBl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVjZWl2
ZWRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBl
LCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CisgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNw
ZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQo
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCk7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgdm9pZCBjYXJQbGF5U2Vy
dmVyRGllZCgpOworICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJv
b2w+JiYpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29s
PiYmKTsKKyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4m
Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB1c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5n
IEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlv
blR5cGU7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CisgICAgdXNpbmcg
U2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOworICAg
IHVzaW5nIFNob3VsZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVz
dW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxv
Y2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworICAg
IHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCk7CisKKyAgICB2b2lk
IHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKKyAgICB2b2lkIHN0
YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNz
aW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsKKyNpZiBIQVZFKENFTEVTVElBTCkKKyAgICBib29s
IG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEIHsgZmFsc2UgfTsKKyNlbmRpZgorfTsKKwor
c3RhdGljIFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+JiBzaGFyZWRIZWxwZXJJbnN0YW5j
ZSgpCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8VW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4+
IGhlbHBlciA9IG1ha2VVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyaU9TPigpOworICAgIHJl
dHVybiBoZWxwZXI7Cit9CisKK01lZGlhU2Vzc2lvbkhlbHBlciYgTWVkaWFTZXNzaW9uSGVscGVy
OjpzaGFyZWRIZWxwZXIoKQoreworICAgIHJldHVybiBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKQoreworICAg
IHNoYXJlZEhlbHBlckluc3RhbmNlKCkgPSBtYWtlVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUz4oKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcihV
bmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYmIGhlbHBlcikKK3sKKyAgICBzaGFyZWRIZWxw
ZXJJbnN0YW5jZSgpID0gV1RGTW92ZShoZWxwZXIpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWRkQ2xpZW50KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQo
Y2xpZW50KTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNv
bnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKworTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpNZWRpYVNlc3Npb25IZWxwZXJpT1MoKQoreworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fb2JqY09ic2VydmVyID0gYWRvcHROUyhbW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CisgICAg
bV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6
bnVsbG9wdCk7CisjZW5kaWYKK30KKworTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp+TWVkaWFTZXNz
aW9uSGVscGVyaU9TKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBb
bV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFja107CisgICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworI2lm
IEhBVkUoQ0VMRVNUSUFMKQorICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkK
KyAgICAgICAgcmV0dXJuOworICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1
ZTsKKworICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBs
aWNhdGlvblN0YXRlRnJvbSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0Vycm9yICplcnJv
ciA9IG5pbDsKKyAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0
ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwaWQpIGZvcktleTpnZXRBVlN5c3RlbUNvbnRy
b2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0ZUZyb20oKSBlcnJvcjomZXJyb3JdOwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gc2V0IHVwIFBJ
RCBwcm94eWluZzogJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsK
KyNlbmRpZgorfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0Nv
dW50KyspCisgICAgICAgIHJldHVybjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIFttX29iamNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAgICBpZiAoIW1fbW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzQ291bnQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVz
c1JvdXRlc0NvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKKyNpZiBIQVZFKENFTEVTVElB
TCkKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpjYXJQbGF5U2VydmVyRGllZCgpCit7Cisg
ICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9v
bD4mJiBjYXJQbGF5SXNDb25uZWN0ZWQpCit7CisgICAgaWYgKGNhclBsYXlJc0Nvbm5lY3RlZCkg
eworICAgICAgICBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChjYXJQbGF5SXNDb25u
ZWN0ZWQudmFsdWUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlKCkpIHsKKyAg
ICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoW1tb
Z2V0QVZTeXN0ZW1Db250cm9sbGVyQ2xhc3MoKSBzaGFyZWRBVlN5c3RlbUNvbnRyb2xsZXJdIGF0
dHJpYnV0ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0
cmlidXRlKCldIGJvb2xWYWx1ZV0pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCBpc1BsYXlpbmcpCit7CisgICAg
aWYgKGlzUGxheWluZyA9PSBtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gaXNQbGF5
aW5nOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQu
aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UobV9pc1BsYXlpbmdUb0F1dG9t
b3RpdmVIZWFkVW5pdCA/IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6WWVzIDogUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0OjpObyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1
c2UpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlLnZhbHVlT3IoZmFsc2UpID8g
U2hvdWxkUGF1c2U6OlllcyA6IFNob3VsZFBhdXNlOjpObyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYg
c3VwcG9ydHNBaXJQbGF5VmlkZW8pCit7CisgICAgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNB
aXJQbGF5VmlkZW8gPSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKKworICAg
IGF1dG8gcGxheWJhY2tUYXJnZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShb
UEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0
cHV0Q29udGV4dF0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShtX2FjdGl2ZVZpZGVvUm91dGVTdXBw
b3J0c0FpclBsYXlWaWRlbyA/IFN1cHBvcnRzQWlyUGxheVZpZGVvOjpZZXMgOiBTdXBwb3J0c0Fp
clBsYXlWaWRlbzo6Tm8sIHBsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Cit9CisjZW5kaWYKKwor
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZSB0eXBlLCBNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQ6OlNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCit7CisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0
eXBlLCBzaG91bGRSZXN1bWUpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9j
aykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50
LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHVuZGVyTG9jayk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCit7Cisg
ICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVu
dDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZCh1bmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQoreworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFtt
X29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQor
ICAgICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UobV9p
c0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVz
IDogSGFzQXZhaWxhYmxlVGFyZ2V0czo6Tm8pOworfQorCitAaW1wbGVtZW50YXRpb24gV2ViTWVk
aWFTZXNzaW9uSGVscGVyCisKKy0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUyopY2FsbGJhY2sKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBpbml0V2l0aENhbGxiYWNrXSIpOworCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKwor
ICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90
aWZpY2F0aW9uIG9iamVjdDpbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5z
dGFuY2VdXTsKKworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9V
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxd
OworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikg
bmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0
aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6
V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgaWYgKGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkK
KyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQ
bGF5U2VydmVyRGllZDopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rp
b25EaWVkTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgaWYgKGNhbkxvYWRBVlN5c3Rl
bUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCisg
ICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxh
eUlzQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxh
eUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgaWYg
KGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlm
aWNhdGlvbigpKQorICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJv
bGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07
CisjZW5kaWYKKworICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4g
b24gdGhlIGRlbGl2ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKyAgICAgICAgW1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNo
YXJlZEFwcGxpY2F0aW9uXSBiZWdpblJlY2VpdmluZ1JlbW90ZUNvbnRyb2xFdmVudHNdOworICAg
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgfSk7CisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgZGVhbGxvY10iKTsKKworI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKSB7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtyb3V0ZURldGVjdG9yID0g
V1RGTW92ZShfcm91dGVEZXRlY3RvcildICgpIG11dGFibGUgeworICAgICAgICAgICAgTE9HKE1l
ZGlhLCAic2FmZWx5VGVhckRvd24gLSBkaXBhdGNoZWQgdG8gVUkgdGhyZWFkLiIpOworICAgICAg
ICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICByb3V0ZURldGVj
dG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POworICAgICAgICAgICAgcm91dGVE
ZXRlY3Rvci5jbGVhcigpOworICAgICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91
dGVEZXRlY3Rpb25FbmFibGVkID0gTk87CisjZW5kaWYKKworICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisgICAgW3N1cGVyIGRl
YWxsb2NdOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJhY2sKK3sKKyAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSIpOworICAgIF9jYWxsYmFjayA9
IG5pbDsKK30KKworLSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUKK3sKKyAgICBM
T0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFp
bGFibGVdIik7CisjaWYgSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQor
ICAgIHJldHVybiBfcm91dGVEZXRlY3Rvci5nZXQoKS5tdWx0aXBsZVJvdXRlc0RldGVjdGVkOwor
I2Vsc2UKKyAgICByZXR1cm4gTk87CisjZW5kaWYKK30KKworI2lmIEhBVkUoTUVESUFfUExBWUVS
KSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKy0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJv
dXRlcworeworICAgIGlmIChfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCisgICAgICAgIHJldHVy
bjsKKworICAgIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcyA9IHRydWU7CisKKyAgICBpZiAoX3N0
YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoX3JvdXRlRGV0ZWN0b3IpIHsKKyAgICAgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91
dGVEZXRlY3Rpb25FbmFibGVkID0gWUVTOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
X3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0
ZXNdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVCghcHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IpOworCisgICAgICAgIGlmIChwcm90
ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZSb3V0ZURldGVjdG9ySW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVu
YWJsZWQgPSBwcm90ZWN0ZWRTZWxmLT5fbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7CisgICAgICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnBy
b3RlY3RlZFNlbGYuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKHdpcmVsZXNzUm91dGVzQXZhaWxh
YmxlRGlkQ2hhbmdlOikgbmFtZTpBVlJvdXRlRGV0ZWN0b3JNdWx0aXBsZVJvdXRlc0RldGVjdGVk
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rv
ci5nZXQoKV07CisKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjay0+ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZFNlbGYtPl9z
dGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZyA9IGZhbHNlOworICAgIH0pOworfQor
CistICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlcworeworICAgIGlmICghX21vbml0
b3JpbmdBaXJQbGF5Um91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CisK
KyAgICBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMgPSBmYWxzZTsKKyAgICBfcm91dGVEZXRlY3Rv
ci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKK30KKyNlbmRpZiAvLyBIQVZFKE1F
RElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisKKy0gKHZvaWQpaW50ZXJydXB0aW9u
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5nIEludGVycnVwdGlv
blR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAg
dXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1
bWU7CisKKyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9i
amVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXldIHVuc2lnbmVkSW50
ZWdlclZhbHVlXTsKKyAgICBJbnRlcnJ1cHRpb25UeXBlIGludGVycnVwdGlvblR5cGUgPSAodHlw
ZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCA/IEludGVycnVwdGlvblR5
cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6OkJlZ2luKTsKKyAgICBTaG91bGRSZXN1bWUgc2hv
dWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpObzsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBlID0gJWkiLCAoaW50KXR5cGUpOwor
CisgICAgaWYgKGludGVycnVwdGlvblR5cGUgPT0gSW50ZXJydXB0aW9uVHlwZTo6RW5kICYmIFtb
W25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0gQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCisgICAgICAgIHNob3VsZFJlc3VtZSA9IFNo
b3VsZFJlc3VtZTo6WWVzOworCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpbnRlcnJ1cHRpb25U
eXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5yZWNl
aXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWUpOworICAgIH0p
OworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBN
ZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworICAgIGlmICgh
X2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdIik7CisKKyAgICBh
dXRvIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmpl
Y3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV0gPyBTdXNwZW5kZWRV
bmRlckxvY2s6OlllcyA6IFN1c3BlbmRlZFVuZGVyTG9jazo6Tm87CisgICAgY2FsbE9uV2ViVGhy
ZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1
dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQorICAgICAgICAgICAgY2Fs
bGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9j
ayk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNh
dGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAg
IGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIH0pOworfQorCist
ICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKworICAgIGlmICgh
X2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7CisKKyAgICBjYWxs
T25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9
IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIH0pOworfQorCistICh2b2lkKXdpcmVsZXNz
Um91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgor
eworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisgICAgaWYgKCFfY2FsbGJhY2sg
fHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVE
aWRDaGFuZ2VdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAg
ICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgp
OworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVy
TG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOworCisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSIpOwor
CisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5m
b10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFsdWVdID8gU3Vz
cGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNwZW5kZWRVbmRlckxvY2s6Ok5vOworICAgIGNhbGxP
bldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAg
ICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVu
ZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKENFTEVTVElBTCkKKy0gKHZvaWQpY2Fy
UGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYg
KCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0iKTsKKyAgICBVTlVTRURfUEFSQU0o
bm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAg
ICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2VydmVyRGllZCgpOworICAgIH0pOworfQorCistICh2
b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgT3B0
aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIGlmIChub3RpZmljYXRpb24gJiYg
Y2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25Q
YXJhbWV0ZXIoKSkgeworICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25uZWN0ZWQgPSBb
W25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVy
X0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsKKyAgICAgICAgaWYg
KG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAgICAgICAgICAgY2FyUGxheUlzQ29ubmVjdGVkID0g
W25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07CisgICAgfQorCisgICAgY2FsbE9uV2Vi
VGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNhclBsYXlJc0Nvbm5lY3Rl
ZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNl
bGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT51cGRhdGVDYXJQbGF5SXNDb25u
ZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKKyAgICB9KTsKK30KKworLSAodm9p
ZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxib29sPiBzaG91bGRQYXVzZTsKKyAg
ICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpKSB7Cisg
ICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlmaWNhdGlvbi51c2VySW5mbyB2
YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5n
ZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsKKyAgICAgICAgaWYgKG5zU2hv
dWxkUGF1c2UpCisgICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5zU2hvdWxkUGF1c2UuYm9vbFZh
bHVlOworICAgIH0KKworICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWlyUGxheVZpZGVvOwor
ICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCkg
JiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3Vw
cG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAgICAgICBOU0RpY3Rpb25hcnkqIHBpY2tlZFJvdXRl
ID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxl
cl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJp
YnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tpbmRPZkNsYXNzOk5TRGljdGlv
bmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAgIE5TTnVtYmVyKiBuc1N1cHBvcnRzQWlyUGxheVZp
ZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0
ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKV07CisgICAgICAgICAg
ICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c0Fp
clBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9vbFZhbHVlOworICAgICAgICB9
CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91bGRQYXVzZSA9IFdURk1vdmUo
c2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdURk1vdmUoc3VwcG9ydHNBaXJQ
bGF5VmlkZW8pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90
ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsKKyAgICAgICAgICAgIGNhbGxi
YWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc3VwcG9ydHNBaXJQbGF5Vmlk
ZW8pKTsKKyAgICAgICAgfQorICAgIH0pOworCit9CisjZW5kaWYgLy8gSEFWRShDRUxFU1RJQUwp
CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNWRmMjBhN2FhMTRjMWM0
Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4uNGRjOGZmM2MxMzJhYzU1OThiMjM5Y2M0ZDIyM2U2
MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVySU9T
LmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC00MSwxOCArNDIsMTMgQEAgZXh0ZXJuIE5TU3RyaW5nKiBXZWJV
SUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MgOiBwdWJsaWMgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MKKyAgICA6
IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKKyAgICAsIHB1YmxpYyBNZWRpYVNlc3Np
b25IZWxwZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZvaWQgY2FyUGxheVNlcnZlckRpZWQoKTsKLSAgICB2
b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsKLSAgICB2b2lk
IGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgdm9pZCBh
Y3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOwotI2VuZGlmCiAgICAg
c3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQgKzYyLDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKSBmaW5hbDsKICAgICB2
b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mLCBEZWxheUNh
bGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAorICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwg
U2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7CisgICAgdm9pZCBhY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2
ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MiOyB9CiAjZW5kaWYKIAotICAg
IFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09ic2VydmVyOwotI2lmIEhB
VkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07
Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3N2FkODYyNGNiNDViZGYzOTgzZWM4ZC4uN2M1MTVi
NTg1ZDRhNmJkNmFlMDlhNzQwY2U2NjQzYzkzMDE3NDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0KQEAgLTM1LDY3ICszNSwxMCBAQAogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
LmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4u
aCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgotI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0j
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgotI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgot
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNpbXBvcnQg
PHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2Vi
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAi
V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwotV0VCQ09S
RV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmlj
YXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOwot
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3Rp
ZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKENlbGVz
dGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVG
cm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwg
QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwgTlNTdHJpbmcg
KikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJv
bGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xs
ZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0cmluZyAqKQot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVy
X1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1
ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9S
b3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwgTlNTdHJpbmcg
KikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJv
bGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9u
S2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCi0jZW5kaWYKLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViTWVkaWFTZXNzaW9uSGVscGVy
IDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MqIF9jYWxsYmFjazsKLQot
I2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICBSZXRhaW5Q
dHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKLSNlbmRpZgotICAgIGJvb2wgX21v
bml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgIGJvb2wgX3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAodm9pZCljbGVhckNhbGxiYWNrOwotLSAodm9pZClp
bnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uICop
bm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tIChCT09MKWhhc1dpcmVsZXNzVGFyZ2V0c0F2
YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykK
LS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKLS0gKHZvaWQpc3RvcE1vbml0
b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlmCi0KLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgpCkBAIC0xMDYsMjIgKzQ5LDEyIEBAIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSgpCiB7Ci0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtb
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsKLQot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6Om51
bGxvcHQpOwotI2VuZGlmCiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNlc3Np
b25NYW5hZ2VyaU9TKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFja107Ci0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigp
LnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCkBAIC0xNDMsOSArNzYsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogYm9vbCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKQogewotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBbbV9vYmpjT2JzZXJ2ZXIgaGFz
V2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuaXNFeHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCkBAIC0xNTUsMTYgKzg2LDE3
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRN
b25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJuIHNlc3Npb24ucmVxdWlyZXNQbGF5YmFja1Rhcmdl
dFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0pOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25pdG9yaW5nKTsKKyAgICBp
ZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpCisg
ICAgICAgIHJldHVybjsKIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
aXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSByZXF1aXJlc01vbml0b3Jpbmc7CisKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01vbml0b3JpbmcgPSAiLCByZXF1aXJl
c01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJlcXVpcmVzTW9uaXRvcmluZykKLSAgICAgICAgW21f
b2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOworICAgICAgICBNZWRp
YVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
TWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdG9wTW9uaXRvcmluZ1dpcmVsZXNz
Um91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAtMTc0LDIxICsxMDYsMTMgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3Nh
cnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKLSAgICBwcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQogewotI2lmIEhBVkUoQ0VMRVNU
SUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBs
aWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0Vycm9yICplcnJv
ciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0
ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKSkg
Zm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRl
RnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBEZWxheUNh
bGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpCkBAIC0y
MDEsNDUgKzEyNSwyNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxs
RW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3NpbwogI2VuZGlmCiB9CiAKLXZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhdmVUYXJnZXRzKQog
ewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYm9vbCBoYXZlVGFyZ2V0
cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOwogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2ZVRhcmdldHMpOwogCiAgICAgZm9yRWFjaFNlc3Np
b24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJnZXRzKTsKKyAgICAgICAg
c2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShoYXZlVGFyZ2V0
cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMpOwogICAgIH0pOwotCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYgSEFWRShDRUxFU1RJQUwpCi12b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2ZXJEaWVkKCkKK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKIHsKLSAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChX
VEY6Om51bGxvcHQpOworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KHBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6Olll
cyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29u
bmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVkKQordm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNo
b3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKLSAgICAgICAgc2V0
SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVlKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
c2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBs
YXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIHNldElzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNz
KCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBib29sVmFsdWVdKTsKLX0K
LQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCi17Ci0gICAgaWYgKCFzaG91bGRQYXVzZSB8
fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAgICBpZiAoc2hvdWxkUGF1c2UgIT0gU2hvdWxkUGF1
c2U6OlllcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yRWFjaFNlc3Npb24oW10oYXV0byYg
c2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTUyLDYzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHNob3VsZFBh
CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlkZW9S
b3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWlyUGxheVZpZGVvKQordm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBv
cnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1Rh
cmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAgICBhdXRvIG5vd1BsYXlpbmdTZXNzaW9uID0gbm93
UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIGlmICghbm93UGxheWluZ1Nlc3Npb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgPSBz
dXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKLSAgICBhdXRvIHBsYXliYWNrVGFy
Z2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRdKTsKLSAg
ICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQpOworICAgIG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0c0FpclBsYXlWaWRlbyA9PSBTdXBwb3J0c0FpclBs
YXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0UGxheWJhY2tUYXJnZXQo
V1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwogfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgotCi0tIChpZClp
bml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjawotewotICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2tdIik7
Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2Vu
dGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRpb246
KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpbUEFM
OjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKLQotICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9V
SUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0g
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6UEFMOjpn
ZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKSBvYmpl
Y3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5v
dGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldl
YlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJf
U2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKLSAgICAgICAgW2NlbnRlciBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2VydmVyRGllZDopIG5hbWU6
Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkg
b2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlz
Q29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdl
OikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpKQotICAgICAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFjdGl2ZUF1ZGlvUm91
dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRl
RGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0jZW5kaWYKLQotICAgIC8vIE5v
dyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhlIGRlbGl2ZXJ5IG9mIHJl
bW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
ICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVn
aW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVh
bGxvYwotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2Nd
Iik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAg
aWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdURk1vdmUoX3JvdXRlRGV0ZWN0
b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgInNhZmVseVRlYXJEb3du
IC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKLSAgICAgICAgICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVj
dGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3IuY2xlYXIoKTsKLSAg
ICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgfSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBfY2FsbGJhY2sgPSBuaWw7Ci19Ci0KLS0gKEJPT0wp
aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRp
YVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSIpOwotI2lmIEhBVkUo
TUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4gX3JvdXRlRGV0
ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNEZXRlY3RlZDsKLSNlbHNlCi0gICAgcmV0dXJuIE5P
OwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENI
T1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoX21v
bml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfbW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0gICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQbGF5
Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9yb3V0ZURldGVjdG9y
KSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9zdGFydE1vbml0b3JpbmdBaXJQ
bGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAgY2FsbE9u
V2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNlbGYt
Pl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNr
KSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91
dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVkU2Vs
Zi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgpIHNl
bGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5hbWU6
QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlv
biBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOwotCi0gICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdG9wTW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAgX21vbml0b3JpbmdBaXJQ
bGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rp
b25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYgLy8gSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFU
Rk9STShXQVRDSE9TKQotCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25v
cmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TVUludGVn
ZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9T
ZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7Ci0KLSAgICBp
ZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCAmJiBbW1tub3Rp
ZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCB0eXBl
LCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRT
ZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBl
QmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwotCi0gICAgfSk7Ci19CiAKLS0g
KHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVw
dGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBpZiAoIV9jYWxsYmFjayB8
fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCisgICAgaWYgKHdp
bGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExP
RyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3RpZmlj
YXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9v
bFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSgp
IG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5f
Y2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKLX0KKyAgICBhdXRvIGZsYWdz
ID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKIAot
LSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQotICAgIGlmICgh
X2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNl
bGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlmICh0eXBlID09IEludGVycnVwdGlvblR5cGU6OkJl
Z2luKQorICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lz
dGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGVuZEludGVycnVwdGlvbihmbGFn
cyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFf
Y2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQor
ICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykK
LSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwot
ICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6
WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRl
cykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotLSAodm9pZClhcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVu
ZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIGlmICghX2NhbGxiYWNr
IHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKKyAgICBpZiAo
d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZp
Y2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJv
b2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5k
ZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotI2lmIEhBVkUoQ0VMRVNU
SUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVyRGllZDooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21l
SW5hY3RpdmUoKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlmICh3aWxsSWdub3JlU3lz
dGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdIik7Ci0gICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5j
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2sp
Ci0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQoKTsKLSAgICB9KTsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZl
KCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIGlmICghX2NhbGxiYWNrKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBjYXJQbGF5SXNDb25uZWN0ZWQ7Ci0gICAgaWYgKG5v
dGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3Rl
ZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7Ci0gICAgICAgIE5TTnVtYmVyICpuc0NhclBsYXlJ
c0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpnZXRBVlN5
c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyKCld
OwotICAgICAgICBpZiAobnNDYXJQbGF5SXNDb25uZWN0ZWQpCi0gICAgICAgICAgICBjYXJQbGF5
SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXNDb25uZWN0ZWQgYm9vbFZhbHVlXTsKLSAgICB9Ci0K
LSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhclBsYXlJc0Nvbm5lY3RlZCA9IFdURk1vdmUoY2Fy
UGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNr
ID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPnVwZGF0
ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3ZlKGNhclBsYXlJc0Nvbm5lY3RlZCkpOwotICAgIH0p
OwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYgKCFfY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsK
LQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIE9wdGlvbmFsPGJvb2w+IHNo
b3VsZFBhdXNlOwotICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJv
bGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3Vs
ZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1iZXIqIG5zU2hvdWxkUGF1c2UgPSBbbm90aWZpY2F0
aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNlKCldOwotICAg
ICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAgICAgICAgICAgIHNob3VsZFBhdXNlID0gbnNTaG91
bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQotCi0gICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNB
aXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUGlja2VkUm91
dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRp
b25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpKSB7Ci0gICAgICAgIE5TRGljdGlvbmFy
eSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZT
eXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1Bp
Y2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAgICAgICBpZiAoW3BpY2tlZFJvdXRlIGlzS2luZE9m
Q2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkgewotICAgICAgICAgICAgTlNOdW1iZXIqIG5zU3Vw
cG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2VkUm91dGUgdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1D
b250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygp
XTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBvcnRzQWlyUGxheVZpZGVvKQotICAgICAgICAgICAg
ICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gbnNTdXBwb3J0c0FpclBsYXlWaWRlby5ib29sVmFs
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNob3VsZFBh
dXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSksIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gV1RGTW92
ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBj
YWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAgICAgICAgICAgY2FsbGJh
Y2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzaG91bGRQYXVzZSkpOwotICAg
ICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzdXBw
b3J0c0FpclBsYXlWaWRlbykpOwotICAgICAgICB9Ci0gICAgfSk7Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKLUBlbmQKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggZDc0OWIyZGIwOWI5Njc0NmY0YTBmMWUzNGMyMTc0MmVkZjUz
ZTQ2Yi4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjQsOSArMjQs
MTMgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTIw
LDggKzEyNCwxMCBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggOTk1MDM1MTJiYTU1OGIyYjQxMDA4ZjViMTY2NTA0NjBhOTU0MTQ1
Ni4uOTA5M2E4MmM5YjFkNTI1MDk1OTQ2ODUwYThkNmY4MGJkMzUxMmQ1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNjQsNiArMTY0
LDE4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNE
TVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmgKQEAgLTE4Myw2ICsxOTUsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZWNvcmRlcnNNZXNzYWdlc1JlcGxpZXMKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lz
dHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3Nh
Z2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMWMzZDFhMjBlZWEz
YjczODAwMTAyZTFkMzE5ODM3OTAzYWE2Y2QwYS4uZWJhMGZmMWI3YzY4MjRmMTdiNzNlNjA3OGE3
NTJhMmQ1Yjg0YmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYsNiArMjYs
NyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvZ3JhcGhpY3MgXAogICAg
ICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tYWMgXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9t
ZWRpYSBcCisgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL2lvcyBcCiAgICAgJChXZWJL
aXQyKS9HUFVQcm9jZXNzL3dlYnJ0YyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2VzcyBc
CiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzIFwKQEAgLTU0LDYgKzU1LDcg
QEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVSBcCiAgICAgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvSWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5zcGVj
dG9yIFwKQEAgLTE1OCwxMiArMTYwLDE4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkgXAogICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCiAg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETVBy
b3h5IFwKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAorICAgIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb24gXAorICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCiAgICAgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRl
ciBcCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyIFwKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAorICAgIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCBjYjU3OTI4ZWNmMmUyOWNhYjlkMzZlNGQwYWRhODBiOTcy
ZWNmYTAzLi45OWQ5MWYxODE4M2M5MDdkNTZhNjZkMjI1YTQ0ZTY1NDQxM2MxYWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC04Miw2ICs4MiwxNyBAQAogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWVzc2FnZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
bmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTI4NCw2ICsyOTUs
MzAgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVBdWRpb1Nlc3Npb24o
RW5zdXJlQXVkaW9TZXNzaW9uQ29tcGxldGlvbiYKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5JiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjptZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpCit7CisgICAgaWYgKCFtX21l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5KQorICAgICAgICBtX21lZGlhU2Vzc2lvbkhlbHBlclByb3h5
ID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eT4oKnRoaXMpOworICAg
IHJldHVybiAqbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKK30KKwordm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVNZWRpYVNlc3Npb25IZWxwZXIoKQoreworICAgIG1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5KCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlmICghbV9sZWdh
Y3lDZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5ID0gbWFr
ZVVuaXF1ZTxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVy
biAqbV9sZWdhY3lDZG1GYWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zNjcsNiArNDAyLDIyIEBAIGJvb2wgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgorI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1N
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlm
CiAKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogfQpAQCAtNDIwLDYgKzQ3MSwyMiBAQCBib29sIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5k
aWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHko
KS5kaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGIwMDcxY2M2NTI2NmZl
N2E5MmFiYzA0ZjNiZmQ4YzVhNDIzZDY4N2IuLmFkYTExYzE3YjNjOTkzYWNlMTRhZTViZTU5OGM5
YTJiMWVjZDZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTIsOSArNTIsMTEgQEAgY2xhc3MgUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHk7CiBjbGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBjbGFzcyBS
ZW1vdGVDRE1GYWN0b3J5UHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7
CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CitjbGFz
cyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CkBAIC05MSw4ICs5Mywx
NCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVDRE1G
YWN0b3J5UHJveHkmIGNkbUZhY3RvcnlQcm94eSgpOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGxl
Z2FjeUNkbUZhY3RvcnlQcm94eSgpOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgbWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkoKTsKKyNlbmRpZgogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBV
U0UoQVVESU9fU0VTU0lPTikKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1
ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNlbmRpZgpAQCAtMTI5LDYgKzEzNywxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1ZGlvU2Vzc2lvbkNvbXBsZXRp
b24mJik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBlbnN1
cmVNZWRpYVNlc3Npb25IZWxwZXIoKTsKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBmaW5hbDsKQEAgLTE3MCw2ICsxODIsMTIgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eT4gbV9hdWRpb1Nlc3Npb25Qcm94eTsKICNlbmRpZgor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5OworI2Vu
ZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk+IG1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA1YWI0MTcyZWQzMTQ3ZjI2YTkwMzdkYmM5ODg1YTk3ZjFlODA5Y2M2Li5kODdkNzYx
MzRhZWVjMWE4YWMwNzVlNTY5OWEyOTFhZjM5MTI3N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMzAsNiArMzAsOSBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5
aW5nSW5mbyBub3dQbGF5aW5nSW5mbyk7CiAjZW5kaWYKICAgICBFbnN1cmVBdWRpb1Nlc3Npb24o
KSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uKSBTeW5jaHJvbm91cworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgRW5z
dXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDlmNWI1
YTQ0M2Y1Y2Y5ODZiYTRmY2ExYzZlNzg1NTcxZGVmM2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5j
cHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3RmL0FsZ29yaXRo
bXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6flJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVsdDsKKwor
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4m
JiBvcHRpb25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNE
TUlkZW50aWZpZXImJik+JiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHByaXZhdGVDRE0gPSBM
ZWdhY3lDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOworICAgIGlmICghcHJpdmF0ZUNETSkgeworICAg
ICAgICBjb21wbGV0aW9uKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkOworICAgIGlmIChvcHRpb25h
bFBsYXllcklkKQorICAgICAgICBwbGF5ZXJJZCA9IFdURk1vdmUob3B0aW9uYWxQbGF5ZXJJZC52
YWx1ZSgpKTsKKworICAgIGF1dG8gcHJveHkgPSBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRl
KG1ha2VXZWFrUHRyKHRoaXMpLCBXVEZNb3ZlKHBsYXllcklkKSwgV1RGTW92ZShwcml2YXRlQ0RN
KSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhZGRQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5KSk7CisgICAg
Y29tcGxldGlvbihXVEZNb3ZlKGlkZW50aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKG1pbWVUeXBlKQorICAgICAgICBjb21wbGV0aW9u
KExlZ2FjeUNETTo6a2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZShrZXlTeXN0ZW0sICptaW1lVHlw
ZSkpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbihMZWdhY3lDRE06OnN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6ZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdl
dChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNz
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHByb3h5ID0g
bV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgcHJveHktPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQor
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRQ
cm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TGVnYWN5Q0RNUHJveHk+JiYgcHJveHkpCit7CisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFp
bnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3ZlKHByb3h5KSk7Cit9CisKK3Zv
aWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94eShSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsK
KyAgICBtX3Byb3hpZXMucmVtb3ZlKGlkKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+JiYgc2Vzc2lvbikK
K3sKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25z
LnNldChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
IGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNz
aW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllciYgaWQpIGNvbnN0Cit7CisgICAgYXV0byByZXN1bHRzID0gbV9zZXNz
aW9ucy5maW5kKGlkKTsKKyAgICBpZiAocmVzdWx0cyAhPSBtX3Nlc3Npb25zLmVuZCgpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzU1
Mzg0ODg2NTk5ODFkOGY4ODNiNGNhMWVjY2FjMjM1YTM5ZmVkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTsKK2NsYXNz
IFJlbW90ZUxlZ2FjeUNETVByb3h5Oworc3RydWN0IFJlbW90ZUxlZ2FjeUNETUNvbmZpZ3VyYXRp
b247CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYpOworICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpOworCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9p
ZCBhZGRQcm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGVnYWN5Q0RNUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllcik7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KiBnZXRTZXNzaW9uKGNv
bnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJikgY29uc3Q7CisKKyAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
JiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzczsKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNo
TWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUwNDlmOTE1M2I3ZjQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZUNETShTdHJpbmcga2V5U3lzdGVtLCBPcHRp
b25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklk
KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cwor
ICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4g
bWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE3YTg5MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4
MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RN
UHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9y
eSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNUHJveHko
V1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwbGF5ZXJJZCksIFdURk1vdmUoY2RtKSkpOworfQor
CitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5
Q0RNPiYmIGNkbSkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9w
bGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkKKyAgICAsIG1fY2RtKFdURk1vdmUoY2RtKSkKK3sK
KyAgICBtX2NkbS0+c2V0Q2xpZW50KHRoaXMpOworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6
flJlbW90ZUxlZ2FjeUNETVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNE
TVByb3h5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFN1cHBvcnRz
TUlNRVR5cGVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9jZG0pIHsKKyAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJh
Y2sobV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpKTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3Jl
YXRlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2NkbSB8fCAhbV9m
YWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cihtX2ZhY3RvcnkuZ2V0KCkpLCBpZGVudGlmaWVyLCAq
bV9jZG0pOworICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNl
c3Npb24pKTsKKyAgICBjYWxsYmFjayhXVEZNb3ZlKGlkZW50aWZpZXIpKTsKK30KKwordm9pZCBS
ZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkKK3sKKyAgICBpZiAoIXBsYXllcklkKQor
ICAgICAgICBtX3BsYXllcklkID0geyB9OworICAgIG1fcGxheWVySWQgPSBXVEZNb3ZlKCpwbGF5
ZXJJZCk7Cit9CisKK1JlZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNk
bU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXll
cklkIHx8ICFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBw
cm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobV9wbGF5ZXJJZCk7CisgICAgaWYgKCFwcm94
eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gcHJveHktPm1lZGlhUGxh
eWVyKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiNmQxN2E5YTQ1
NzFlMzQ4ODRjZmY4Y2E5YmVlYzMzMzFmODIwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMCwwICsx
LDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgU2hhcmVkQnVmZmVyOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERhdGFS
ZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lD
RE1Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGlj
IFdlYkNvcmU6OkxlZ2FjeUNETUNsaWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
bW90ZUxlZ2FjeUNETVByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5PiwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNUHJv
eHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlTGVnYWN5Q0RNUHJveHko
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXImJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4m
Jik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdXNpbmcgU3VwcG9ydHNNSU1FVHlwZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT47CisgICAgdm9pZCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBv
cnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKKyAgICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
JiYpPjsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lv
bkNhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJik7CisKKyAgICAvLyBMZWdhY3lDRE1DbGllbnQKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IFdlYkNv
cmU6OkxlZ2FjeUNETSopIGNvbnN0IGZpbmFsOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIG1fcGxheWVySWQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2Fj
eUNETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3MWJhOGJkODdlN2Q5MjcwN2NjMDlkOGYzY2M0MGQ2ZjQ4ZGZjYjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNE
TVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVU
eXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVTZXNzaW9uKFN0
cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciBpZCkgU3luY2hyb25vdXMKKyAgICBTZXRQbGF5ZXJJZChPcHRp
b25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklk
KQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEw
ZTMzZmM2YjQ0NGQzMTFlNjYwMmY4YTc1NWUzMzQyMDJlYzE1MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5PiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkKK3sKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4obmV3IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBpZGVudGlmaWVyLCBj
ZG0pKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNz
aW9uKCp0aGlzKSkKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp+UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5KCkgPSBkZWZhdWx0OworCitzdGF0aWMgUmVmUHRyPFVpbnQ4
QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7CisgICAg
YXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6
ZUluQnl0ZXMpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0
aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRp
b25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChj
b25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworfQorCit2
b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXRE
YXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIGluaXRE
YXRhQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoaW5pdERhdGEpKTsKKyAgICBp
ZiAoIWluaXREYXRhQXJyYXkpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5n
KCksIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMOworICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSB7IDAgfTsKKyAgICB1aW50MzJf
dCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAgYXV0byBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5n
ZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGluaXREYXRhQXJyYXkuZ2V0KCksIGRlc3RpbmF0
aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworCisgICAgZGVzdGluYXRpb25VUkwgPSAi
dGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOworCisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRp
b25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUs
IHN5c3RlbUNvZGUpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVs
ZWFzZUtleXMoKQoreworICAgIG1fc2Vzc2lvbi0+cmVsZWFzZUtleXMoKTsKK30KKwordm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmJiB1cGRhdGUsIFVwZGF0ZUNhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBh
dXRvIHVwZGF0ZUFycmF5ID0gY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKHVwZGF0ZSkpOwor
ICAgIGlmICghdXBkYXRlQXJyYXkpIHsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSwgV1RGOjpu
dWxsb3B0LCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxVaW50
OEFycmF5PiBuZXh0TWVzc2FnZTsKKyAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgeyAwIH07
CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7IDAgfTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0g
bV9zZXNzaW9uLT51cGRhdGUodXBkYXRlQXJyYXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworCisgICAgY29tcGxldGlvbihzdWNjZWVkZWQsIGNvbnZlcnRUb09w
dGlvbmFsRGF0YVJlZmVyZW5jZShuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7
Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpn
ZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQoreworICAgIHJldHVybiBt
X3Nlc3Npb24tPmNhY2hlZEtleUZvcktleUlEKGtleUlkKTsKK30KKwordm9pZCBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVk
S2V5Rm9yS2V5SURDYWxsYmFjayYmIGNvbXBsZXRpb24pCit7CisgICAgY29tcGxldGlvbihjb252
ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2Zh
Y3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2Fn
ZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUs
IHVpbnQzMl90IHN5c3RlbUNvZGUpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9m
YWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3Rl
bUNvZGUpLCBtX2lkZW50aWZpZXIpOworfQorCitTdHJpbmcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAobV9m
YWN0b3J5KQorICAgICAgICByZXR1cm4gbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworfQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTkzZWM4MjE4ZDUwN2NlNGZmOWQwOTRkYjRiMDJmMjY3YzM3MTFmMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgTGVnYWN5Q0RNOworY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3Rl
TGVnYWN5Q0RNUHJveHk7CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5OworCitjbGFzcyBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CisgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworICAg
IH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQor
ICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24qIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0UGxheWVyKFdlYWtQdHI8UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eT4gcGxheWVyKSB7IG1fcGxheWVyID0gV1RGTW92ZShwbGF5ZXIpOyB9CisK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGdldENhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6TGVnYWN5Q0RNJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKwor
ICAgIC8vIExlZ2FjeUNETVNlc3Npb25DbGllbnQKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4
QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpIGZpbmFsOworICAgIHZvaWQgc2VuZEVycm9y
KE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBmaW5hbDsKKyAgICBTdHJp
bmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gTWVz
c2FnZXMKKyAgICB1c2luZyBHZW5lcmF0ZUtleUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OworICAgIHZvaWQgZ2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVsZWFz
ZUtleXMoKTsKKyAgICB1c2luZyBVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmLCB1bnNp
Z25lZCBzaG9ydCwgdWludDMyX3QpPjsKKyAgICB2b2lkIHVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVwZGF0ZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENh
Y2hlZEtleUZvcktleUlEQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJik+OworICAgIHZvaWQgY2FjaGVkS2V5
Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYpOworCisg
ICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFr
UHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcGxheWVyOworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
OTYyY2U5MWRmNTU5NWZjN2FjZTJjMDUwNzdiMDUxZWEwZGUzNzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkgTm90UmVmQ291bnRlZCB7CisgICAgR2VuZXJhdGVLZXlSZXF1ZXN0KFN0cmluZyBtaW1lVHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGluaXREYXRhKSAtPiAoT3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBuZXh0TWVzc2FnZSwgU3RyaW5nIGRlc3Rp
bmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUp
IFN5bmNocm9ub3VzCisgICAgUmVsZWFzZUtleXMoKQorICAgIFVwZGF0ZShJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgdXBkYXRlKSAtPiAoYm9vbCBzdWNjZWVkZWQsIE9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0
IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgU3luY2hyb25vdXMKKyAgICBDYWNoZWRL
ZXlGb3JLZXlJRChTdHJpbmcga2V5SWQpIC0+IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U+IGtleSkgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAppbmRleCA4MjY0ZjNjNzYwMmJiNTZmNGRlN2M4MWFlZmEzYmIxNmRm
ODIyNmEwLi5lODhkMmJjYjY1MDkyMzZjZGYxODU4MThlNTEwMThhNzBlMWZkZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTE5OCw2ICsxOTgsMTQgQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb24KICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKIH0KIAorUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXImIGlkKQoreworICAgIGF1dG8gcmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlk
KTsKKyAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBy
ZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6bG9nZ2VyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXgg
YWUzMjhjYjdkMDkzNjI2YWIyYjMyN2NkNWE2MzM0NjBmZDcwNDE0NS4uZGM0NmExMDdjMWU1ZmNh
MDUzOWMwY2NjZTM2MzgxMDY4Njc0Mzg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgK
QEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogZ2V0
UHJveHkoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYpOworCiBwcml2
YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAppbmRleCBlMjkwMzRiNGYzMTVjMWRlNjNhMTcyYTRkM2FkNGFmYzM1MDI1MjY2Li43OTQ1
MGZkMTlhZGYwZDU3ZDAwODc1YzllYmIzMzI1YTZiZTdhNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9UcmFja1Byb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
U3RhdGUuaCIKQEAgLTUxNSwxNSArNTE3LDE5IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiB9CiAKICNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcm
KSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoYXV0byBjZG1TZXNzaW9uID0gbV9tYW5hZ2Vy
LmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5nZXRT
ZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpCisgICAgICAgIHJldHVybiBjZG1TZXNzaW9uLT5nZXRD
YWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSop
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4
QXJyYXkqIG1lc3NhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZTsKKyAgICBpZiAobWVzc2FnZSkKKyAgICAgICAgbWVz
c2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5ieXRlTGVuZ3RoKCkg
fTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdURk1vdmUobWVzc2FnZVJlZmVy
ZW5jZSkpLCBtX2lkKTsKIH0KICNlbmRpZgogCkBAIC02OTUsNiArNzAxLDI4IEBAIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2VuZENhY2hlZFN0YXRlKCkKIH0KIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRM
ZWdhY3lDRE1TZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaW5zdGFu
Y2VJZCkKK3sKKyAgICBpZiAobV9sZWdhY3lTZXNzaW9uID09IGluc3RhbmNlSWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX2xlZ2FjeVNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8g
Y2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubGVnYWN5
Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7CisgICAgICAg
ICAgICBtX3BsYXllci0+c2V0Q0RNU2Vzc2lvbihudWxscHRyKTsKKyAgICAgICAgICAgIGNkbVNl
c3Npb24tPnNldFBsYXllcihudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGVn
YWN5U2Vzc2lvbiA9IGluc3RhbmNlSWQ7CisKKyAgICBpZiAobV9sZWdhY3lTZXNzaW9uKSB7Cisg
ICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNz
aW9uKSkgeworICAgICAgICAgICAgbV9wbGF5ZXItPnNldENETVNlc3Npb24oY2RtU2Vzc2lvbi0+
c2Vzc2lvbigpKTsKKyAgICAgICAgICAgIGNkbVNlc3Npb24tPnNldFBsYXllcihtYWtlV2Vha1B0
cih0aGlzKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6a2V5QWRkZWQoKQogewogICAgIG1fcGxheWVyLT5rZXlBZGRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmgKaW5kZXggOGIzN2MwNDIwZGFhZjNhMjliMDc2MzA5NmZhMDA0MGFkZWRjY2IyMy4uZDk4ODA5
MGM4MGQwZWY4Yzk5YjI3OGUzOTg5NWExZWEyM2RiYzU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJTdGF0ZS5oIgpAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBzZXRMZWdhY3lDRE1TZXNzaW9u
KFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaW5zdGFuY2VJZCk7CiAgICAgdm9p
ZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKQEAgLTE3MSw2ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAg
UmVmPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gbWVk
aWFQbGF5ZXIoKSB7IHJldHVybiBtX3BsYXllcjsgfQorCiBwcml2YXRlOgogICAgIC8vIE1lZGlh
UGxheWVyQ2xpZW50CiAgICAgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoKSBm
aW5hbDsKQEAgLTI4Niw2ICsyOTAsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgYm9vbCBtX3No
b3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9OworICAgIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyIG1fbGVnYWN5U2Vzc2lvbjsKICNlbmRpZgogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM0
ZDI0MThjY2Y4YWJiZmNjZjVkYzQxODIxNDA4YTY4MGViYTdjNTUuLmI4YWVkYjQ5NDNmYjQ2YmZk
MWQyMzRjYTgzOGQ1MTY0YmVlNGViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC04MCw3ICs4MCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkg
Tm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotICAgICMgU2V0Q0RNU2Vzc2lvbgorICAgIFNldExlZ2FjeUNETVNlc3Npb24oV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpbnN0YW5jZUlkKQogICAgIEtleUFk
ZGVkKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCBhZjY0YzgyYjkwMjNhZDIzNDE0MjNj
Zjg1ZGI0OTVhNzZjNGM2YjRhLi42MGZhNmM4MTFiZmQwNzYyYmJlY2QxZTE4MGNjMGNhNTIyNmIy
NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTI5LDE1ICsyOSwxOSBAQAogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oIgogI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JU09WVFRDdWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogUmVtb3RlVGV4dFRyYWNrUHJveHk6
OlJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgOiBtX3Bs
YXllcihwbGF5ZXIpCiAgICAgLCBtX2lkZW50aWZpZXIoaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IDRmNDlm
M2EzODdkMGVhMTBmMTYxZTVhZDc5ZjhkNzg1NTAzZDE3MmEuLjk3MWU3ZjY0ODliMzNhNTM4OGJl
Y2Y5MTg5YWI5ZTc5Y2E3MzIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC0zMiwxNSArMzIsMjIgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RyYWNrQmFzZS5oPgogCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgQ29ubmVjdGlvbjsK
KworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTsKIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjsKIAogY2xhc3Mg
UmVtb3RlVGV4dFRyYWNrUHJveHkgZmluYWwKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxSZW1vdGVUZXh0VHJhY2tQcm94eSwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4K
ICAgICAsIHByaXZhdGUgV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0VHJhY2tQcm94eT4gY3JlYXRlKFJlbW90
ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0VHJhY2tQcm94eT4g
Y3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0VHJhY2tQcm94eShwbGF5ZXIsIGlkLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pLCB0cmFja1ByaXZhdGUpKTsKICAgICB9CkBAIC01MCwxNSArNTcsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9kZShXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlOjpNb2RlIG1vZGUpIHsgbV90cmFja1ByaXZhdGUtPnNldE1vZGUobW9kZSk7IH0KIAogcHJp
dmF0ZToKLSAgICBSZW1vdGVUZXh0VHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5Jiwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIFJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICAv
LyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZv
aWQqLCB1bnNpZ25lZCk7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwpAQCAtNjcsNyArNzQsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYp
OworICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoV2ViQ29yZTo6SVNPV2ViVlRU
Q3VlJiYpOwogCiAgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVudAogICAgIHZvaWQgaWRDaGFu
Z2VkKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKQEAgLTgxLDcgKzg4LDcgQEAgcHJpdmF0ZToK
ICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5JiBtX3BsYXllcjsKICAgICBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBt
X3dlYlByb2Nlc3NDb25uZWN0aW9uOwotICAgIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBt
X3RyYWNrUHJpdmF0ZTsKKyAgICBSZWY8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4g
bV90cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU2MGI0NGVlM2QxYmI2NTNk
Y2NiMTgzOTFmNWRlMzhlM2EzZDk0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCit7Cisg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5hZGRDbGllbnQoKnRoaXMpOwor
fQorCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6flJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5KCkKK3sKKyAgICBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CisgICAg
TWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5yZW1vdmVDbGllbnQoKnRoaXMpOwor
fQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSB0
cnVlOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RhcnRNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMoKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eTo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKCFtX2lzTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzID0gZmFsc2U7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFy
ZWRIZWxwZXIoKS5zdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoaW50IHBpZCkKK3sKKyAgICBpZiAobV9wcm92aWRlZEFwcGxpY2F0aW9uUElEKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3Byb3ZpZGVkQXBwbGljYXRpb25QSUQgPSB0cnVlOworICAgIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRChwaWQpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpy
ZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlJlY2VpdmVkSW50ZXJydXB0aW9uKHR5
cGUsIHNob3VsZFJlc3VtZSksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxv
Y2sgc3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKSwgeyB9KTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBtX2dwdUNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKSwg
eyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRp
b25XaWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbldp
bGxCZWNvbWVJbmFjdGl2ZSgpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbV9ncHVDb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAgICBt
X2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlcjo6RXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZh
aWxhYmxlVGFyZ2V0cyksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdCBwbGF5aW5nKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpJc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShwbGF5aW5nKSwgeyB9KTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShT
aG91bGRQYXVzZSBzaG91bGRQYXVzZSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlQXVkaW9S
b3V0ZURpZENoYW5nZShzaG91bGRQYXVzZSksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQ
bGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0PiYmIHRhcmdldCkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QWN0aXZlVmlkZW9Sb3V0ZURp
ZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCB7
IH0pOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRhYjUwZjBiMDk2ZTg4ZWJmZmY3ODY0YTg1Mzk3ZGEzMjBmMjExYWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5CisgICAgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHko
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKCk7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
KCk7CisgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCk7CisKKyAg
ICAvLyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKKyAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0
aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSkgZmluYWw7CisgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykg
ZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpIGZpbmFsOwor
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lkIGV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMp
IGZpbmFsOworICAgIHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlv
Um91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlVmlkZW9S
b3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywgUmVmPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXQ+JiYpIGZpbmFsOworCisgICAgYm9vbCBtX3Byb3ZpZGVkQXBwbGljYXRpb25Q
SUQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyB7IGZh
bHNlIH07CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMjZjNDg1MTdiYWJlYThhODQ0YmY1ZGFkNDc1
Y2U3ZmYzOTk5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK21lc3NhZ2VzIC0+
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFN0YXJ0
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKKyAgICBTdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCkKKyAgICBQcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNGJh
MTRkYmFmMjRiMjQxZTU5ZGIwYTdmMjA4MGQwMmQwMjdjM2IwNC4uNjY1ZjVhMjIxMDhlMWI2Njkx
YTAzNTY5N2M5OWIxNDZkZTAzMzBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0yMzgsNiArMjM4LDggQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAn
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLApA
QCAtNTg0LDYgKzU4Niw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6SW5wdXRNb2RlJzogWyc8V2ViQ29yZS9JbnB1dE1vZGUuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0JzogWyc8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnOiBbJzxXZWJDb3JlL0tleWJv
YXJkRXZlbnQuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6
Ok1lZGlhS2V5RXJyb3JDb2RlJzogWyc8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6
IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPiddLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXgg
MTA1NmI5ZWRlNTRiYWFhZTJiMjlhMDU2N2E4NWY2YTE5NDg4YmZkZC4uNmRkZGRmNTIzZmQyNzQx
ZjZjZjYzMzA5YTdhODI5ZGEyMTMyN2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMyw2ICszMyw5IEBA
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAK
K0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCitHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCkBAIC00MCw2ICs0Myw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTU1NCwxMiArNTU4LDE2IEBAIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKK1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
SU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90
ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCitXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWQ5ZjQ0YmI5ZjIyZTNj
MjRmMWQyZDk4MDU4MzIxYTgxMGY3OWQzMy4uZjkzMjNmYjkzOTYwOThhOThkZjk2ZjZiZDYyZDAx
NjJkNmRmOGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjYyLDYgKzY2Miw4IEBAIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNw
cAogUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYyMWZiMWM5
ZWUwOTMyZDUyYjRmMWQ1MmQyYjViMGYzZTMwNjM3NjcuLmQ4NzljODNkMzhhMTQ3ZTU2NDFiNGJh
M2ZhNjBhNWI2ZTc4MmYzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTc0OCw2ICsxNzQ4LDEwIEBACiAJCUNEQkI0OUZEMjQwRDlB
NzIwMDE3QzI5MiAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJCNDlGQzI0MEQ5QTcyMDAx
N0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyB9OwogCQlDREMy
ODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyODMxQjIwMUJENzlEMDBF
NkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OworCQlDREU1NTUzMjI0
MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREU1NTUzMzI0MDZFQjhDMDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MkEyNDA2Qjg5NjAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1MzQy
NDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1
MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQlDREU1NTUzNTI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRTEx
QUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBD
b2RlU2lnbmluZy5oICovOyB9OwogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0
aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5o
ICovOyB9OwogCQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1
NEVGNzQgLyogVENDU1BJLmggKi87IH07CkBAIC01MDY3LDYgKzUwNzEsMTIgQEAKIAkJQ0RBMjlB
MjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Y1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBOTU5M0EyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQjI0MTJCMTc1MDA5MTBFRUYgLyogUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQzI0MTJCNjQ1
MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOTU5NDUyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ2MjQxMkM0RjUwMDkxMEVF
RiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQzIwNzgyM0ZC
MUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RB
QzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTMxLDYgKzUxNDEs
MzYgQEAKIAkJQ0RENTM1NzcyNDBEREUwNzAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUz
NTc4MjQwRERFMDgwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1MzU3OTI0MERERTA4MDBG
N0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFMjI0MDU4MTE0MDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEUz
MjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREU1NTRFQTI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTRFQjI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NEVFMjQwNTgxQTMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUYyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEY4MjQwNTgy
MDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NEY5MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA3
MjQwNTg4QjgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFNTU1MDkyNDA1ODhDQjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFCMjQwNUEzQjcw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREU1NTUxQzI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTFFMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUYyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTIwMjQwNUEzREYwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdh
Y3lDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI2MjQw
NkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI3MjQwNkI4OTUw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNERTU1NTI4MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyQTI0MDZCODk2MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVn
YWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU1MkQyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTJFMjQwNkI4OTcwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyRjI0MDZCODk3MDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RFNTU1MzAyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25N
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1l
c3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUzMTI0
MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDRG
MUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvZGVTaWduaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNpZ25pbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZp
Y2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VydGlvblNlcnZp
Y2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDAwLDYgKzU0NDAsNyBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxREFGNUE0RDIzRUM5
Rjc5MDBCN0I1MTggLyogY29jb2EgKi8sCisJCQkJQ0RBOTU5MzkyNDEyQjE3NTAwOTEwRUVGIC8q
IGlvcyAqLywKIAkJCQkwNzFCQzU3OTIzQzkzQkI5MDA2ODBEN0MgLyogQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuY3BwICovLAogCQkJCTA3MUJDNTc3MjNDOTNCQjcwMDY4MEQ3QyAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLApAQCAtNTQyOSw2ICs1NDcwLDE1IEBACiAJ
CQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
ICovLAogCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBQzIwQkMyM0ZDMkY3NDAwMjFERUUzIC8qIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKKwkJCQlDREU1NTRFQjI0MDU4
MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLywKKwkJCQlDREU1NTRFQTI0MDU4
MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8sCisJCQkJQ0RFNTU0RTMyNDA1ODEx
NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwICovLAorCQkJCUNERTU1NEUy
MjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmggKi8sCisJCQkJQ0RF
NTU1MDcyNDA1ODhCODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCAqLywK
KwkJCQlDREU1NTRFRjI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAgKi8sCisJCQkJQ0RFNTU0RUUyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb24uaCAqLywKKwkJCQlDREU1NTUwNTI0MDU4MzI0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUwOTI0MDU4OENCMDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKIAkJCQkwN0I5M0ZGNTIz
QUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8sCiAJ
CQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5j
cHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5oICovLApAQCAtNTQ1NCw2ICs1NTA0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICov
LAorCQkJCUNEQTk1OTQ0MjQxMkM0REEwMDkxMEVFRiAvKiBpb3MgKi8sCiAJCQkJOUIxMjI5Q0My
M0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLywK
IAkJCQk5QjEyMjlDQjIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIuaCAqLywKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC01NDc3LDYgKzU1MjgsMTUgQEAK
IAkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuY3BwICovLAog
CQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5oICovLAogCQkJ
CUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAq
LywKKwkJCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUxQzI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RFNTU1MUIyNDA1QTNCNzAwOEEzRERCIC8q
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUy
MDI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwICovLAorCQkJCUNE
RTU1NTFGMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5oICovLAorCQkJ
CUNERTU1NTFFMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdl
cy5pbiAqLywKKwkJCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREU1NTRGODI0MDU4MjA4MDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkw
NzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTk5MDgsNiArOTk2
OCwxOCBAQAogCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1l
c3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkw
RkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1MkQy
NDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgg
Ki8sCisJCQkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNERTU1NTJBMjQwNkI4OTYwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RF
NTU1MjgyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaCAq
LywKKwkJCQlDREU1NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyRTI0MDZCODk3MDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1Mjcy
NDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oICovLAor
CQkJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVz
c2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1
MkYyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJQ0RFNTU1MjYyNDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLywKQEAgLTEwMTM1LDYgKzEwMjA3LDI2
IEBACiAJCQluYW1lID0gRnVsbFNjcmVlbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUNEQTk1OTM5MjQxMkIxNzUwMDkxMEVFRiAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk1OTNBMjQxMkIxNzUwMDkxMEVFRiAv
KiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwICovLAorCQkJCUNEQTk1OTNCMjQxMkIxNzUw
MDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCAqLywKKwkJCQlDREE5NTkzQzI0
MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluICov
LAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlDREE5NTk0NDI0MTJDNERBMDA5MTBFRUYgLyogaW9zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5NTk0NjI0MTJDNEY1MDA5MTBFRUYgLyog
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwICovLAorCQkJCUNEQTk1OTQ1MjQxMkM0
RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oICovLAorCQkJCUNE
QTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJQ0RDMjgzMUEyMDFCRDc1NjAwRTZFNzQ1IC8qIGZ1bGxzY3JlZW4g
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTI1MzMsNiAr
MTI2MjUsMTAgQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAz
QUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzMjI0MDZFQjhDMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNERTU1NTMzMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUz
NDI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzNTI0MDZFQjhDMDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3OTIzMTQ5MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5MjMxNEIyMzlDQkNC
ODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDE3ODlFMjNCRTlDRkMwMDVGMEZBQSAvKiBSZW1v
dGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IGY5Yjk3MDE4MTcyZGE1MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAuLjQ5ZjU0ZmQwYjY2
YTFiN2VhNTk0ODcwMGI4NDFjNjA2OGFlMzQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAt
ODEsNiArODIsMTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNlbmRpZgogCitSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1h
bmFnZXIoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNkbUZhY3Rv
cnkoKQogewpAQCAtODgsNiArOTQsMTMgQEAgUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OmNkbUZhY3RvcnkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0
aW9uOjpsZWdhY3lDRE1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4oKTsKK30KKyNlbmRpZgor
CiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJiNTcyYzFiYWNiZmE2
YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYuLjNmNDFhZWFiMTBlZDIyNjA4NzA3NjkwZDhiNjA1
ODU3MTY4ZmE1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworY2xhc3Mg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsK
IAogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVQcm9j
ZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTYw
LDEwICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIG1lZGlhUGxheWVyTWFuYWdlcigpOworCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVDRE1GYWN0b3J5JiBjZG1GYWN0b3J5KCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnkmIGxlZ2FjeUNETUZhY3RvcnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NWU3M2E2NTA5YTJhMzI5MzBlYzk0
Zjk1YWMxMzZjNmYwODBmNGI1Li4zYjMwODY3MGZlNWUxNDMwNTBhZDk2Nzc2Y2NjNmEzYjU0Yzg0
N2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zMCw2ICszMCw5IEBACiAK
ICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCkBAIC0zOCw2ICs0MSw4IEBACiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVSZW1v
dGUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlUeXBlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTUzLDYg
KzU4LDEwIEBACiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lD
RE0uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkwNCwxNSArOTEzLDM4
IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lv
biopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNKExlZ2FjeUNETSogY2Rt
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFjZG0pCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcmVtb3RlQ0RNID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkubGVnYWN5Q0RNRmFjdG9yeSgpLmZpbmRDRE0oY2RtLT5jZG1Qcml2YXRlKCkpOworICAgIGlm
ICghcmVtb3RlQ0RNKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDRE0tPnNldFBsYXll
cklkKG1faWQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vz
c2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmICghc2Vzc2lvbiB8fCBz
ZXNzaW9uLT50eXBlKCkgIT0gQ0RNU2Vzc2lvblR5cGVSZW1vdGUpIHsKKyAgICAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNE
TVNlc3Npb24oeyB9KSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHJlbW90ZVNlc3Npb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKj4oc2Vz
c2lvbik7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24ocmVtb3RlU2Vzc2lvbi0+aWRlbnRpZmllcigpKSwg
bV9pZCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiB7
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OktleUFkZGVkKCksIG1faWQpOwogfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sKKyAg
ICBtX3BsYXllci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwg
bWVzc2FnZS5zaXplKCkpLnB0cigpKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDdhYjY2NTI5YTUxOTczNTgz
MWNmYmNjODk5MThiYmE3NzdhYzVjZmUuLjgyZWEzY2MzMGMzZWQwZDAwZTU5OThlMDFlNmYzYzAz
MzAxYmZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMzA1LDggKzMwNSwxMCBA
QCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAg
IHZvaWQgc2V0Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSopIGZpbmFsOwogICAgIHZvaWQgc2V0Q0RN
U2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CiAgICAgdm9pZCBrZXlB
ZGRlZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVm
ZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA5NDQ4ZGUwMmYxYWM5
ZTQ2NDM4MzNjMmQ1NTM3NTljOTgzMGI4MTU3Li5lN2Q4NmM3ZjRjM2RjZThiMGI5OGVmNjYwYTEy
NjhmZGQ5YWUxYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbgpAQCAtNzgsNiArNzgsMTAgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIE5vdFJlZkNvdW50ZWQgewogICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0
cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgog
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgTWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisjZW5kaWYKKwogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJl
bGVzc0NoYW5nZWQoYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwNjY4ZTliYmVjYmU5MDJhMjE5N2RhMTFmZDYxNDgy
Y2VkNWFhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdh
Y3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNPihuZXcgUmVtb3RlTGVnYWN5Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7
Cit9CisKK1JlbW90ZUxlZ2FjeUNETTo6UmVtb3RlTGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYgaWQp
CisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKGlkKSkKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNOjp+UmVtb3RlTGVnYWN5Q0RNKCkg
PSBkZWZhdWx0OworCitib29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBlKSwgTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlOjpSZXBseShzdXBwb3J0ZWQp
LCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNl
c3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0cmluZyBzdG9y
YWdlRGlyZWN0b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgOiBlbXB0eVN0cmluZygpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24o
c3RvcmFnZURpcmVjdG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRl
U2Vzc2lvbjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVh
dGUobV9mYWN0b3J5LCBXVEZNb3ZlKGlkKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpz
ZXRQbGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQoreworICAg
IGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBPcHRpb25hbDxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBvcHRpb25hbElkOworICAgIGlmIChpZCkKKyAg
ICAgICAgb3B0aW9uYWxJZCA9IGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNl
dFBsYXllcklkKG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjU0Y2QzY2M0Mjk0MTcxNjYxOWY1MDNiNjNmOTczYjExYTFlMjI0
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lDRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OworY2xhc3MgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbjsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE0gZmluYWwKKyAgICA6IHB1YmxpYyBX
ZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UmVtb3RlTGVnYWN5Q0RNPiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMZWdhY3lDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYs
IFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNE
TSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNl
dFBsYXllcklkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCitwcml2YXRl
OgorICAgIFJlbW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYs
IFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik7CisKKyAgICBXZWFrUHRyPFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NDYwYmNlNDI4Mjg4OWI1NTI4MTM0YjAzYjkyOGQ2M2EyYmYzYjFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeShXZWJQcm9jZXNzJiBwcm9jZXNz
KQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeSgpCit7CisgICAgTGVnYWN5Q0RNOjpjbGVh
ckZhY3RvcmllcygpOworICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KAorICAgICAg
ICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKExlZ2FjeUNETSogcHJpdmF0ZUNETSkg
LT4gc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZhY2U+IHsKKyAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMtPmNy
ZWF0ZUNETShwcml2YXRlQ0RNKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9LAorICAgICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMgPyB3ZWFrVGhpcy0+
c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSA6IGZhbHNlOworICAgICAgICB9LAorICAgICAg
ICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMg
PyB3ZWFrVGhpcy0+c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShrZXlTeXN0ZW0sIG1pbWVU
eXBlKSA6IGZhbHNlOworICAgICAgICB9CisgICAgKTsKK30KKworY29uc3QgY2hhciogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJv
Y2Vzcy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCitib29sIFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQor
eworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdl
czo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHko
c3VwcG9ydGVkKSwgeyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitib29sIFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgYm9vbCBzdXBw
b3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7Cisg
ICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRl
cmZhY2U+IFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjpMZWdhY3lD
RE0qIGNkbSkKK3sKKyAgICBpZiAoIWNkbSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisKKyAgICBPcHRpb25hbDxNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZDsKKyAgICBpZiAoYXV0byBw
bGF5ZXIgPSBjZG0tPm1lZGlhUGxheWVyKCkpCisgICAgICAgIHBsYXllcklkID0gZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5tZWRpYVBsYXllck1hbmFnZXIoKS5maW5kUmVtb3RlUGxheWVySWQocGxh
eWVyLT5wbGF5ZXJQcml2YXRlKCkpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBp
ZDsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oY2RtLT5rZXlTeXN0
ZW0oKSwgV1RGTW92ZShwbGF5ZXJJZCkpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5OjpDcmVhdGVDRE06OlJlcGx5KGlkKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHJlbW90ZUNETSA9IFJlbW90ZUxlZ2FjeUNETTo6
Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBpZCk7CisgICAgbV9jZG1zLnNldChpZCwgbWFrZVdl
YWtQdHIocmVtb3RlQ0RNLmdldCgpKSk7CisgICAgcmV0dXJuIHJlbW90ZUNETTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4m
JiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAg
IG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAg
bV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVMZWdhY3lDRE0qIFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmZpbmRDRE0oQ0RNUHJpdmF0ZUludGVyZmFjZSogcHJpdmF0ZUludGVyZmFj
ZSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIGNkbSA6IG1fY2Rtcy52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAocHJpdmF0ZUludGVyZmFjZSA9PSBjZG0uZ2V0KCkpCisgICAgICAgICAgICByZXR1
cm4gY2RtLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
fQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZTVh
ZmY0ZTY0ZGQ2ZTY4OTEzZDMyYmMxMTU5YzMxZjFjNGQ2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rvcnku
aApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBD
b25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETVByaXZhdGVJ
bnRlcmZhY2U7CitjbGFzcyBMZWdhY3lDRE07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETTsKK2NsYXNz
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNzOworCisKK2NsYXNzIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5KCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeSgpOworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQg
YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVMZWdhY3lDRE0q
IGZpbmRDRE0oV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZSopIGNvbnN0OworCitwcml2YXRl
OgorICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBz
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlPiBjcmVh
dGVDRE0oV2ViQ29yZTo6TGVnYWN5Q0RNKik7CisKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nl
c3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZmI5YjdhMmYwZDYyYjE5ZGE5OWJjMzVhY2NkYzZhMTA3NzdlZmViCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2Fj
eUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzNTE3NDIwNWFmMTEzM2VjNWEx
YzEzYWZiYjYxNjM5NmI3MmY3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwx
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
VHlwZWRBcnJheVR5cGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1
ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAgaWYg
KGJ1ZmZlci5idWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBSZWZQdHI8VWludDhBcnJheT4gY29udmVydFRvVWludDhBcnJheShJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IGNv
bnZlcnRUb0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAgaWYgKCFhcnJheUJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUo
V1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAoIWFy
cmF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKFQgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
Y29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKK30KKwor
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSkpOworfQorCitSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZCkK
KyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdU
Rk1vdmUoaWQpKQoreworfQorCitSZWZQdHI8VWludDhBcnJheT4gUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJy
YXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJy
b3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAh
aW5pdERhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBpcGNJbml0RGF0
YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoaW5pdERhdGEpOworICAgIE9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpHZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUs
IGlwY0luaXREYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2Vu
ZXJhdGVLZXlSZXF1ZXN0OjpSZXBseShpcGNOZXh0TWVzc2FnZSwgZGVzdGluYXRpb25VUkwsIGVy
cm9yQ29kZSwgc3lzdGVtQ29kZSksIG1faWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlwY05leHRN
ZXNzYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjb252ZXJ0VG9V
aW50OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNzYWdlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVs
ZWFzZUtleXMoKSwgbV9pZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5RGF0YSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
Cit7CisgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIWtleURhdGEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gaXBjS2V5RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoV1RGTW92
ZShrZXlEYXRhKSk7CisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2Vl
ZGVkLCBpcGNOZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVy
KTsKKworICAgIGlmIChpcGNOZXh0TWVzc2FnZSkKKyAgICAgICAgbmV4dE1lc3NhZ2UgPSBjb252
ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNzYWdlKSk7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBPcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY0tleTsKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktleUlEKGtleUlkKSwgTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Q2FjaGVkS2V5Rm9yS2V5SUQ6OlJlcGx5KGlw
Y0tleSksIG1faWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlwY0tleSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZSgqaXBj
S2V5KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtZXNzYWdlKSB7CisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZShudWxscHRyLCBkZXN0aW5hdGlvblVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKCptZXNz
YWdlKSkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uOjpzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFL
ZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNv
ZGUpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MzNhYzkzNTUxZWQ5NWQyMzg4MmM3ZDdjOWZjZjgxODE5OWI5YzI0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBm
aW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KKyAgICAsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAgICAv
LyBNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgY29uc3QgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYp
OworCisgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b25UeXBlIHR5cGUoKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90
ZTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQq
IGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBSZWZQ
dHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9pZCBy
ZWxlYXNlS2V5cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8
VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50
MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRL
ZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Vz
CisgICAgdm9pZCBzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9p
ZCBzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJv
ckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1f
Y2xpZW50OworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQw
MWY5MWUzNDEwYzJmZTRkNGU0NDcxNTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3Vu
dGVkIHsKKyAgICBTZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51
bTp1aW50OF90IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JD
b2RlIGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRm
ZGJkM2ZmOGM3ZWI3MDQ3OTRlMTg1YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggZGRkZDUzNDc0M2Ix
NTY4Y2YwNTkyNmY1YmMyNjc2ZWFkY2ViNGVlZC4uZGU3ZWI1MzlkY2UwMTViM2EwMzBkYTVkNjc4
OGRlNzUxODkxMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTc4LDYg
KzE3OCwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVk
aWFQbGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpEZWxldGVNZWRpYVBsYXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBs
YXllcklkKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAg
IGZvciAoYXV0byBwYWlyIDogbV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09
IHBsYXllcikKKyAgICAgICAgICAgIHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1
cm4geyB9OworfQorCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0
ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5n
aW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHJlc3VsdCkKIHsKICAgICBhdXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVu
dGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYy
ZjJhZWJmZjUxYzkwZjc0ZWRmOGRhMDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYw
ZTk3NDlhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBmaW5kUmVtb3RlUGxheWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlKik7CisKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXIqLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZWY0ZDc1ZjI5ODA4MDM0ZjFhNDljYmM5YTVjMjlkNTUxOTE4NTlkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldE1vY2suaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cihXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7CisgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVu
c3VyZU1lZGlhU2Vzc2lvbkhlbHBlcigpLCB7IH0pOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6Y29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJv
Y2Vzcy5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
KCkKK3sKKyAgICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OlN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCksIHsgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzKCkKK3sKKyAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHk6OlN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwgeyB9KTsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGlj
YXRpb25QSUQoaW50IHBpZCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQocGlkKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnJlY2Vp
dmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1lIHNob3Vs
ZFJlc3VtZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVkSW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJlc3VtZSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spOworfQorCit2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1
c3BlbmRlZFVuZGVyTG9jayk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjph
cHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSgpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXRE
aWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKHBsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjph
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQoreworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVv
IHN1cHBvcnRzQWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdl
dENvbnRleHQpCit7CisgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldE9iamVj
dDsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpCisgICAgICAgIHRhcmdldE9iamVjdCA9IFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRw
dXRDb250ZXh0KCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0Fp
clBsYXlWaWRlbywgdGFyZ2V0T2JqZWN0LmNvcHlSZWYoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30K
KworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZDBmMDk4ZDg0ZTc3ODI4MGU1YzJmNDQ0YWQ1YzBkZDEwYmNhODY2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQor
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNl
c3Npb25IZWxwZXJJT1MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nl
c3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBmaW5hbAorICAgIDogcHVibGlj
IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcgorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIoV2ViUHJvY2Vz
cyYpOworICAgIHZpcnR1YWwgflJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsK
KworICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpOworCisgICAgdXNpbmcgSGFzQXZh
aWxhYmxlVGFyZ2V0cyA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SGFzQXZh
aWxhYmxlVGFyZ2V0czsKKyAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gV2ViQ29yZTo6TWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOworICAgIHVzaW5nIFBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVu
dDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OworICAgIHVzaW5nIFNob3VsZFBhdXNlID0g
V2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKKyAgICB1c2lu
ZyBTaG91bGRSZXN1bWUgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3Vs
ZFJlc3VtZTsKKyAgICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudDo6U3VwcG9ydHNBaXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3Vz
cGVuZGVkVW5kZXJMb2NrID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNw
ZW5kZWRVbmRlckxvY2s7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworCisgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyCisgICAgdm9pZCBzdGFydE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRChpbnQpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlY2VpdmVk
SW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSk7CisgICAgdm9pZCBh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7Cisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZvaWQgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpOworICAgIHZvaWQgaXNQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
KTsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpOworICAg
IHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywgV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CisKKyAgICBXZWJQcm9jZXNzJiBt
X3Byb2Nlc3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlM2M1N2NkZjk2MzU5YzhmMzc4
YjU5MTA0NjdhODI3MWM4MWRkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworbWVz
c2FnZXMgLT4gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJl
Y2VpdmVkSW50ZXJydXB0aW9uKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlLCBlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OlNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCisgICAgQXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKKyAgICBBcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OlN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCisgICAg
QXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQorICAgIEFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKKyAgICBFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShlbnVt
OmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6Okhhc0F2YWlsYWJsZVRhcmdl
dHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKKyAgICBJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dERpZENoYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlBs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkK
KyAgICBBY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCisgICAgQWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OlN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCB0YXJnZXQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMGNjY2Y2N2FkMDgz
ZjFmMDRkMDMyOGY3OWQyZGQ3N2E1ZjgzNzNhLi41ZmNlMWJkMGVlYWE3MWE1N2RkZjk3NWQzZTI4
YTNkZTI4YmFiMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzI2LDYgKzMyNiw5IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisj
ZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA5ODQ1N2RkZmUwYjU1MTViNjc2NGMzYmYzNjFlNGQxMzBl
YjVlMGRkLi5mN2JjNmEzMGU0MzI5NWY4Y2E1MWU1YmJjZGNmOTIwM2IwYmYwMGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Np
b24uaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiU3Rh
dGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlVz
ZXJEYXRhLmgiCkBAIC0xNzksNiArMTgwLDEwIEBACiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9y
eS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5oIgorI2VuZGlmCisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VT
U0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVm
aW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklE
PSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lP
Tl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjAyMSw2ICsyMDI2LDIwIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wgdXNlR1BVUHJvY2Vzc0Zvck1lZGlh
KQogICAgIGVsc2UKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzZXRTaGFyZWRTZXNzaW9uKEF1ZGlv
U2Vzc2lvbjo6Y3JlYXRlKCkpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKKyAgICBpZiAodXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQorICAgICAgICBlbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmxlZ2FjeUNETUZhY3RvcnkoKS5yZWdpc3RlckZhY3Rvcnko
KTsKKyAgICBlbHNlCisgICAgICAgIExlZ2FjeUNETTo6cmVzZXRGYWN0b3JpZXMoKTsKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAodXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcihtYWtlVW5p
cXVlUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcj4oKnRoaXMpKTsKKyAgICBlbHNlCisgICAg
ICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKTsKKyNlbmRpZgogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392752</attachid>
            <date>2020-03-06 12:17:51 -0800</date>
            <delta_ts>2020-03-06 12:35:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208727-20200306121750.patch</filename>
            <type>text/plain</type>
            <size>55759</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNmE1YzdjZjYyMWZh
ODBkMzUyMzI3ODYzZDkwNGEyN2NhYjVlZS4uMGM5ZmI4NGJmZWQ3MTA5Y2Q1ODdjN2UxNjQ4NGRk
YmQ1NzQ2OWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBj
b2RlIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIGFuZCBpbnRvIGEgbmV3CisgICAgICAg
IGNsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlciwgd2hpY2ggaXMgY3VycmVudGx5IGlPUyBvbmx5LiBU
aGUgYWJzdHJhY3QgYmFzZSBjbGFzcworICAgICAgICB3aWxsIGJlIG92ZXJyaWRlbiBieSBXZWJL
aXQgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbTogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0uCisgICAg
ICAgIChzaGFyZWRIZWxwZXJJbnN0YW5jZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6
OnNoYXJlZEhlbHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVk
SGVscGVyKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2V0U2hhcmVkSGVscGVyKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbkhlbHBlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorICAgICAgICAoTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpjYXJQbGF5U2VydmVyRGllZCk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZCk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVv
Um91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZl
ZEludGVycnVwdGlvbik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6
XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKToKKyAgICAg
ICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9u
Ol0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRD
aGFuZ2U6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaXJlTGVz
c1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXRE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjYXJQbGF5U2Vy
dmVyRGllZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2FsbGJhY2tdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25pdG9yaW5n
QWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBpbnRlcnJ1cHRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2U6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDItMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBMZWdhY3kgRU1FIEFQSSBpbiB0aGUg
R1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGFlNTI0NTZmZjViYzRmYmRiYTQxZGQyMDdlMTQ1NDAz
NDBkYThkNi4uYjUzZTczODExZWJiY2ViMzdiMGI1YmM2ZDlmMTlhOTlhYmQzNDIyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29kZSBp
bnRvIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGNsYXNzIHBhaXIgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
L1Byb3h5LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHk6On5SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6
cmVjZWl2ZWRJbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHku
aDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6Y29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0
b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnJlY2VpdmVkSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdERpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNz
Rm9yTWVkaWEpOgorCiAyMDIwLTAyLTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVnYWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0YTA5MmQ4OGZmOGVjMDJjMzhjMjk4
ODk5NzRlYzlhMjljYTMwZDNiLi5kZDM0OGZlYmZhMDZlYzdlMWZhYjI0M2JhODk2NmUwNTU2OTE4
OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQCBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCiBwbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVs
cGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggN2MxMDY5YjA0YmNjZTM4NDZhM2UxMzA3NWU2OTRkZDQ3ZmUyYjI4
NS4uNWJlODhiNWJlMWU0NmJmNGU2YmMxNTA2MTA3MTQ4MmU2Yzg0M2YwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1MCw2
ICs0MTUwLDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXND
b2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
NTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oICovOyB9OwogCQlD
REE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTk1OTM1
MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovOyB9OworCQlDREE5NTkzRjI0MTJCQUUw
MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2
MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2
QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFD
b250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVk
aWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0Lmgg
Ki87IH07CkBAIC0xMzg5MSw2ICsxMzg5Myw4IEBACiAJCUNEODcxQzY4MUZCNTJCNjkwMEYwQjk2
NSAvKiBJU09Cb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNP
Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4NzFDNjkxRkI1MkI2OTAw
RjBCOTY1IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDg3MUM2
QTFGQjUyQjZBMDBGMEI5NjUgLyogSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhB
N0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QTdCQkExOTc3MzVG
RTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNjIwNyw2ICsyNjIxMSw4IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQw
IC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQw
QkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICovLAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8sCisJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5
RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovLAorCQkJCUNEODc1QTc1MjQxMUI3OTgw
MEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi8sCiAJCQkJMDc2MzhBOTcxODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCAqLywKIAkJCQkwNzYzOEE5
ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLywKIAkJCSk7
CkBAIC0zMTU0MCw2ICszMTU0Niw3IEBACiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8q
IE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQw
QUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUY4N0NG
RTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1
ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3MDgsNiArMzM3MTUsNyBAQAogCQkJCTE1
MDUyNEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2
QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTBGNjU1
NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNWRmMjBhN2FhMTRj
MWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4uNGRjOGZmM2MxMzJhYzU1OThiMjM5Y2M0ZDIy
M2U2MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVy
SU9TLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxOCArNDIsMTMgQEAgZXh0ZXJuIE5TU3RyaW5nKiBX
ZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MgOiBwdWJsaWMgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MKKyAg
ICA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKKyAgICAsIHB1YmxpYyBNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRl
OwotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZvaWQgY2FyUGxheVNlcnZlckRpZWQoKTsKLSAg
ICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsKLSAgICB2
b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgdm9p
ZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOwotI2VuZGlmCiAg
ICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQgKzYyLDIyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKSBmaW5hbDsKICAg
ICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mLCBEZWxh
eUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAorICAgIC8vIE1lZGlhU2Vzc2lvbkhl
bHBlckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAgICB2b2lkIGFw
cGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7CisgICAgdm9pZCBh
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MiOyB9CiAjZW5kaWYKIAot
ICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09ic2VydmVyOwotI2lm
IEhBVkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNl
IH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3N2FkODYyNGNiNDViZGYzOTgzZWM4ZC4uN2M1
MTViNTg1ZDRhNmJkNmFlMDlhNzQwY2U2NjQzYzkzMDE3NDEwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0KQEAgLTM1LDY3ICszNSwxMCBAQAogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRS
dW4uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgotI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+
Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgotI2ltcG9ydCA8cGFs
L3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5o
PgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyog
V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JUIE5T
U3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9
IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwotV0VC
Q09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3Rp
ZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24i
OwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRO
b3RpZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi1TT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3Rh
dGVGcm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlh
bCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwgTlNTdHJp
bmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29u
dHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRy
b2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0cmluZyAq
KQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9s
bGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwgTlNTdHJp
bmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29u
dHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0
aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCi0jZW5kaWYKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MqIF9jYWxsYmFjazsK
LQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICBSZXRh
aW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKLSNlbmRpZgotICAgIGJvb2wg
X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgIGJvb2wgX3N0YXJ0TW9uaXRvcmluZ0FpclBs
YXlSb3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAodm9pZCljbGVhckNhbGxiYWNrOwotLSAodm9p
ZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClh
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tIChCT09MKWhhc1dpcmVsZXNzVGFyZ2V0
c0F2YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hP
UykKLS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKLS0gKHZvaWQpc3RvcE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlmCi0KLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgpCkBAIC0xMDYsMjIgKzQ5LDEyIEBAIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSgpCiB7Ci0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5T
KFtbV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsK
LQotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6
Om51bGxvcHQpOwotI2VuZGlmCiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNl
c3Npb25NYW5hZ2VyaU9TKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFja107Ci0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBu
aWw7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIGlmIChtX2lzTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBl
cigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCkBAIC0xNDMsOSArNzYsNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogYm9vbCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKQogewotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBbbV9vYmpjT2JzZXJ2ZXIg
aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuaXNFeHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCkBAIC0xNTUsMTYgKzg2
LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NUYXJn
ZXRNb25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJuIHNlc3Npb24ucmVxdWlyZXNQbGF5YmFja1Rh
cmdldFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0pOwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25pdG9yaW5nKTsKKyAg
ICBpZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMp
CisgICAgICAgIHJldHVybjsKIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSByZXF1aXJlc01vbml0b3Jpbmc7CisKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01vbml0b3JpbmcgPSAiLCByZXF1
aXJlc01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJlcXVpcmVzTW9uaXRvcmluZykKLSAgICAgICAg
W21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOworICAgICAgICBN
ZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNz
Um91dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3Jp
bmdBaXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdG9wTW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAtMTc0LDIxICsxMDYsMTMgQEAgdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNl
c3NhcnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkKICAgICAgICAg
cmV0dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKLSAgICBw
cm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisgICAgTWVkaWFTZXNzaW9uSGVscGVy
OjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQogewotI2lmIEhBVkUoQ0VM
RVNUSUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRB
cHBsaWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZT
eXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
KSkgZm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0
YXRlRnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBXVEZMb2dB
bHdheXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uSGVscGVy
OjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpz
ZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBEZWxh
eUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpCkBA
IC0yMDEsNDUgKzEyNSwyNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25X
aWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3NpbwogI2VuZGlmCiB9CiAK
LXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhdmVUYXJnZXRz
KQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYm9vbCBoYXZlVGFy
Z2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOwogICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2ZVRhcmdldHMpOwogCiAgICAgZm9yRWFjaFNl
c3Npb24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNzaW9uLmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJnZXRzKTsKKyAgICAg
ICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShoYXZlVGFy
Z2V0cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMpOwogICAgIH0pOwotCi0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYgSEFWRShDRUxFU1RJQUwpCi12b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2ZXJEaWVkKCkKK3ZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKIHsKLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3Rl
ZChXVEY6Om51bGxvcHQpOworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KHBs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6
Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlQ2FyUGxheUlz
Q29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVkKQordm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNl
IHNob3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKLSAgICAgICAg
c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVl
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uiwgc2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0Nh
clBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIHNldElzUGxheWluZ1RvQXV0
b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVtQ29udHJvbGxlckNs
YXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0
ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBib29sVmFsdWVdKTsK
LX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCi17Ci0gICAgaWYgKCFzaG91bGRQYXVz
ZSB8fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAgICBpZiAoc2hvdWxkUGF1c2UgIT0gU2hvdWxk
UGF1c2U6OlllcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yRWFjaFNlc3Npb24oW10oYXV0
byYgc2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTUyLDYzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHNob3Vs
ZFBhCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWlyUGxheVZpZGVvKQor
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1
cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFj
a1RhcmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAgICBhdXRvIG5vd1BsYXlpbmdTZXNzaW9uID0g
bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIGlmICghbm93UGxheWluZ1Nlc3Npb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQg
PSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKLSAgICBhdXRvIHBsYXliYWNr
VGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZPdXRw
dXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRdKTsK
LSAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOworICAgIG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0c0FpclBsYXlWaWRlbyA9PSBTdXBwb3J0c0Fp
clBsYXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0UGxheWJhY2tUYXJn
ZXQoV1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwogfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgotCi0tIChp
ZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjawotewot
ICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2td
Iik7Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIE5TTm90aWZpY2F0aW9u
Q2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0g
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRp
b246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpb
UEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKLQotICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtp
dF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07
Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6UEFM
OjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKSBv
YmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1l
OldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xs
ZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKLSAgICAgICAgW2NlbnRlciBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2VydmVyRGllZDopIG5h
bWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9u
KCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxh
eUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNv
bnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpKQotICAgICAg
ICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFjdGl2ZUF1ZGlv
Um91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0jZW5kaWYKLQotICAgIC8v
IE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhlIGRlbGl2ZXJ5IG9m
IHJlbW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0g
YmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKLSAgICAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxs
b2NdIik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0g
ICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdURk1vdmUoX3JvdXRlRGV0
ZWN0b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgInNhZmVseVRlYXJE
b3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKLSAgICAgICAgICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURl
dGVjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3IuY2xlYXIoKTsK
LSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgfSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxl
ZCA9IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBfY2FsbGJhY2sgPSBuaWw7Ci19Ci0KLS0gKEJP
T0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSIpOwotI2lmIEhB
VkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4gX3JvdXRl
RGV0ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNEZXRlY3RlZDsKLSNlbHNlCi0gICAgcmV0dXJu
IE5POwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdB
VENIT1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAo
X21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfbW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0gICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQ
bGF5Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9yb3V0ZURldGVj
dG9yKSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxl
ZCA9IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9zdGFydE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0KLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAgY2Fs
bE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNl
bGYtPl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxi
YWNrKSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAg
ICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
Um91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAgcHJvdGVjdGVkU2Vs
Zi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVk
U2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgp
IHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5h
bWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNh
dGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOwotCi0gICAg
ICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWly
UGxheVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClzdG9wTW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRl
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAgX21vbml0b3JpbmdB
aXJQbGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRl
Y3Rpb25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYgLy8gSEFWRShNRURJQV9QTEFZRVIpICYmICFQ
TEFURk9STShXQVRDSE9TKQotCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJ
Z25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TVUlu
dGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7Ci0KLSAg
ICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCAmJiBbW1tu
b3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVw
dGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50
ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNw
YXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCB0
eXBlLCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0
ZWRTZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25U
eXBlQmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwotCi0gICAgfSk7Ci19CiAK
LS0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBpZiAoIV9jYWxsYmFj
ayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCisgICAgaWYg
KHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3Rp
ZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0g
Ym9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVuZGVkVW5kZXJMb2Nr
XSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxm
LT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKLX0KKyAgICBhdXRvIGZs
YWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsK
IAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQotICAgIGlm
ICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3Rl
ZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlmICh0eXBlID09IEludGVycnVwdGlvblR5cGU6
OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGVuZEludGVycnVwdGlvbihm
bGFncyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVk
VW5kZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYg
KCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygp
KQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgp
OwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9j
azo6WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIFVOVVNFRF9QQVJBTShub3Rp
ZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJv
dXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxl
c3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRp
c3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZild
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYt
Pl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotLSAodm9pZClhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3Vz
cGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIGlmICghX2NhbGxi
YWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKKyAgICBp
ZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90
aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJd
IGJvb2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9j
a10oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2Vs
Zi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVk
VW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotI2lmIEhBVkUoQ0VM
RVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVyRGllZDooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUoKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlmICh3aWxsSWdub3Jl
U3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEs
ICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdIik7Ci0gICAgVU5V
U0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFi
bGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJh
Y2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQoKTsKLSAgICB9KTsK
KyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0
aXZlKCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIGlmICghX2NhbGxiYWNrKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBjYXJQbGF5SXNDb25uZWN0ZWQ7Ci0gICAgaWYg
KG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5l
Y3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7Ci0gICAgICAgIE5TTnVtYmVyICpuc0NhclBs
YXlJc0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpnZXRB
VlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVy
KCldOwotICAgICAgICBpZiAobnNDYXJQbGF5SXNDb25uZWN0ZWQpCi0gICAgICAgICAgICBjYXJQ
bGF5SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXNDb25uZWN0ZWQgYm9vbFZhbHVlXTsKLSAgICB9
Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhclBsYXlJc0Nvbm5lY3RlZCA9IFdURk1vdmUo
Y2FyUGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxi
YWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPnVw
ZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3ZlKGNhclBsYXlJc0Nvbm5lY3RlZCkpOwotICAg
IH0pOwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYgKCFfY2FsbGJhY2spCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIE9wdGlvbmFsPGJvb2w+
IHNob3VsZFBhdXNlOwotICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29u
dHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1No
b3VsZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1iZXIqIG5zU2hvdWxkUGF1c2UgPSBbbm90aWZp
Y2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNlKCldOwot
ICAgICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAgICAgICAgICAgIHNob3VsZFBhdXNlID0gbnNT
aG91bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQotCi0gICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9y
dHNBaXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUGlja2Vk
Um91dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3Jp
cHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpKSB7Ci0gICAgICAgIE5TRGljdGlv
bmFyeSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVk
QVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVy
X1BpY2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAgICAgICBpZiAoW3BpY2tlZFJvdXRlIGlzS2lu
ZE9mQ2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkgewotICAgICAgICAgICAgTlNOdW1iZXIqIG5z
U3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2VkUm91dGUgdmFsdWVGb3JLZXk6Z2V0QVZTeXN0
ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRl
bygpXTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBvcnRzQWlyUGxheVZpZGVvKQotICAgICAgICAg
ICAgICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gbnNTdXBwb3J0c0FpclBsYXlWaWRlby5ib29s
VmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNo
QXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNob3Vs
ZFBhdXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSksIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gV1RG
TW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRv
KiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAgICAgICAgICAgY2Fs
bGJhY2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzaG91bGRQYXVzZSkpOwot
ICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShz
dXBwb3J0c0FpclBsYXlWaWRlbykpOwotICAgICAgICB9Ci0gICAgfSk7Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKLUBlbmQKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggODk2NGZiY2M3YWI4MzVkNDhjOWU3ZmNkODkwOWU5MDhh
YTVkZjBhYS4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzAsNiAr
MzAsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTEyNiw2ICsxMjcs
NyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ1JlbW90ZUNvZGVjcy5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggY2FhMjk4MDgyMWJhMDE3MGIxNDZiZjc2M2M3OTdjMDhmOTViMjI4
OC4uOTA5M2E4MmM5YjFkNTI1MDk1OTQ2ODUwYThkNmY4MGJkMzUxMmQ1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xOTUsNiArMTk1
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhUmVjb3JkZXJzTWVzc2FnZXNSZXBsaWVzCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDQwNDlkOGFhY2M3ZDIyNDQ1NjQxYjk3Nzc2NDdhZTcy
ZGQxMjUwMGUuLmViYTBmZjFiN2M2ODI0ZjE3YjczZTYwNzhhNzUyYTJkNWI4NGJjZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI2LDYgKzI2LDcgQEAgVlBBVEggPSBcCiAgICAg
JChXZWJLaXQyKS9HUFVQcm9jZXNzL2dyYXBoaWNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nl
c3MvbWFjIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAorICAgICQoV2ViS2l0
MikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MgXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJy
dGMgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MgXAogICAgICQoV2ViS2l0MikvTmV0
d29ya1Byb2Nlc3MvQ29va2llcyBcCkBAIC01NCw2ICs1NSw3IEBAIFZQQVRIID0gXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAorICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zIFwKICAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0YyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luc3BlY3RvciBcCkBAIC0xNjgsNiArMTcw
LDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlciBcCiAg
ICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyIFwKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAorICAgIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZCBcCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzYTE0MGVkMmIyZGM1YmFhZWU3N2NhZTY1MDYyNTY2MzIxYzZlNTA1
Li45OWQ5MWYxODE4M2M5MDdkNTZhNjZkMjI1YTQ0ZTY1NDQxM2MxYWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC04OSw2ICs4OSwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eU1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yOTEsNiArMjk1LDIwIEBA
IHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3Vy
ZUF1ZGlvU2Vzc2lvbkNvbXBsZXRpb24mCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIGlmICghbV9tZWRpYVNl
c3Npb25IZWxwZXJQcm94eSkKKyAgICAgICAgbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eSA9IG1h
a2VVbmlxdWU8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+KCp0aGlzKTsKKyAgICByZXR1
cm4gKm1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKK3sKKyAgICBtZWRpYVNlc3Np
b25IZWxwZXJQcm94eSgpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDlhZGNiYWNj
NTNlMjQwYjBhZmVkNGI3OWE3NDQyMjRkZWIwZmU0ZWEuLmFkYTExYzE3YjNjOTkzYWNlMTRhZTVi
ZTU5OGM5YTJiMWVjZDZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI7CitjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsK
IGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb247CkBAIC05NSw3ICs5Niw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGxlZ2FjeUNk
bUZhY3RvcnlQcm94eSgpOwogI2VuZGlmCi0KKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5JiBtZWRpYVNlc3Npb25IZWxwZXJQcm94eSgp
OworI2VuZGlmCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCk7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVTRShB
VURJT19TRVNTSU9OKQpAQCAtMTM0LDYgKzEzNywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5z
dXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1ZGlvU2Vzc2lvbkNvbXBsZXRpb24mJik7CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBlbnN1cmVNZWRpYVNlc3Npb25I
ZWxwZXIoKTsKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2
b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBmaW5h
bDsKQEAgLTE3OCw2ICsxODUsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk+IG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5OwogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+
IG1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1YWI0MTcyZWQzMTQ3ZjI2
YTkwMzdkYmM5ODg1YTk3ZjFlODA5Y2M2Li5kODdkNzYxMzRhZWVjMWE4YWMwNzVlNTY5OWEyOTFh
ZjM5MTI3N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsOSBA
QCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNz
YWdlIHsKICAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBw
bGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbyk7
CiAjZW5kaWYKICAgICBFbnN1cmVBdWRpb1Nlc3Npb24oKSAtPiAoc3RydWN0IFdlYktpdDo6UmVt
b3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgRW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkK
KyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggMDNlM2NiMzlhZjc2ZGI0OTIyZmVkZmNkMGFiZjkwMjFjNzBkNTlkYy4uNmRkZGRmNTIzZmQy
NzQxZjZjZjYzMzA5YTdhODI5ZGEyMTMyN2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC00Myw2ICs0Myw3
IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b1RyYWNrUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTU2Niw2ICs1NjcsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGVkOWY0NGJiOWYy
MmUzYzI0ZjFkMmQ5ODA1ODMyMWE4MTBmNzlkMzMuLmY5MzIzZmI5Mzk2MDk4YTk4ZGY5NmY2YmQ2
MmQwMTYyZDZkZjhjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTY2Miw2ICs2NjIsOCBA
QCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OGFk
MDZmZmNjOWJhYjE5ZTIyYTU2ZjI0Yjk0ZDVjNzM4MGI1ODFiLi5kODc5YzgzZDM4YTE0N2U1NjQx
YjRiYTNmYTYwYTViNmU3ODJmMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwNzEsNiArNTA3MSwxMiBAQAogCQlDREEyOUEyNzFD
QkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJQ0RBOTNEQUUyMkY4QkNGMzAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5oOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REE5M0RBRjIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFy
YW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWNQYXJhbWV0ZXJzLmNwcDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5NTkzQTI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTNCMjQxMkIxNzUwMDkxMEVFRiAvKiBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTNDMjQxMkI2NDUwMDkx
MEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5NTk0NTI0MTJDNEY1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5NDYyNDEyQzRGNTAwOTEwRUVGIC8q
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOTU5NDcyNDEyQzkxOTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3ODIzRkIxRTIx
MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3
OTIzRkIxRTIxMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQUMyMDdDMjNGQjFFRjkwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MzQsNiArNTQ0MCw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFEQUY1QTREMjNFQzlG
NzkwMEI3QjUxOCAvKiBjb2NvYSAqLywKKwkJCQlDREE5NTkzOTI0MTJCMTc1MDA5MTBFRUYgLyog
aW9zICovLAogCQkJCTA3MUJDNTc5MjNDOTNCQjkwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0
ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDcxQkM1NzcyM0M5M0JCNzAwNjgwRDdDIC8qIEF1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCkBAIC01NDk3LDYgKzU1MDQsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxRDBFQ0VBOTIzRkM4NEJCMDBE
MTcyRjYgLyogY29jb2EgKi8sCisJCQkJQ0RBOTU5NDQyNDEyQzREQTAwOTEwRUVGIC8qIGlvcyAq
LywKIAkJCQk5QjEyMjlDQzIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwICovLAogCQkJCTlCMTIyOUNCMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oICovLAogCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1
MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTEw
MTk5LDYgKzEwMjA3LDI2IEBACiAJCQluYW1lID0gRnVsbFNjcmVlbjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUNEQTk1OTM5MjQxMkIxNzUwMDkxMEVFRiAvKiBpb3MgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk1OTNBMjQx
MkIxNzUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwICovLAorCQkJCUNE
QTk1OTNCMjQxMkIxNzUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCAqLywK
KwkJCQlDREE5NTkzQzI0MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlDREE5NTk0NDI0MTJDNERBMDA5MTBFRUYgLyogaW9zICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5NTk0NjI0MTJD
NEY1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwICovLAorCQkJ
CUNEQTk1OTQ1MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eS5oICovLAorCQkJCUNEQTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0RDMjgzMUEyMDFCRDc1NjAwRTZFNzQ1
IC8qIGZ1bGxzY3JlZW4gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ2Zjg3ZTA5MDdk
ZTFlMjQ3YjY0MzI4YWM1MmRlYTdiYTA4NGIxMzEuLmY3YmM2YTMwZTQzMjk1ZjhjYTUxZTViYmNk
Y2Y5MjAzYjBiZjAwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTE4MCw2ICsxODAsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmgiCisjZW5kaWYKKwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEICht
X3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtzZXNzaW9uSUQ9JSIgUFJJdTY0
ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlzLCBSRUxFQVNFX0xPR19TRVNTSU9OX0lELCAjI19f
VkFfQVJHU19fKQogCkBAIC0yMDI5LDYgKzIwMzMsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRV
c2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCB1c2VHUFVQcm9jZXNzRm9yTWVkaWEpCiAgICAgZWxz
ZQogICAgICAgICBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCk7CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzZXRTaGFyZWRIZWxwZXIobWFrZVVuaXF1ZVJlZjxSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI+KCp0aGlzKSk7CisgICAgZWxzZQorICAgICAgICBNZWRpYVNl
c3Npb25IZWxwZXI6OnJlc2V0U2hhcmVkSGVscGVyKCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392755</attachid>
            <date>2020-03-06 12:35:36 -0800</date>
            <delta_ts>2020-03-06 15:54:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208727-20200306123536.patch</filename>
            <type>text/plain</type>
            <size>107499</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJhMDMwNjE1YWIzNjJm
NGM5ODkyNTZkNDc1Yzc5MmIyMjM4MDg2ZS4uNDY1MTk3NmZlYTQ1N2MwZDQ4MTcyZmZjM2VjZmZh
ZWNhMGYxYTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBj
b2RlIG91dCBvZiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIGFuZCBpbnRvIGEgbmV3CisgICAgICAg
IGNsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlciwgd2hpY2ggaXMgY3VycmVudGx5IGlPUyBvbmx5LiBU
aGUgYWJzdHJhY3QgYmFzZSBjbGFzcworICAgICAgICB3aWxsIGJlIG92ZXJyaWRlbiBieSBXZWJL
aXQgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbTogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0uCisgICAg
ICAgIChzaGFyZWRIZWxwZXJJbnN0YW5jZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6
OnNoYXJlZEhlbHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVk
SGVscGVyKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2V0U2hhcmVkSGVscGVyKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWRkQ2xpZW50KToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbkhlbHBlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorICAgICAgICAoTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpjYXJQbGF5U2VydmVyRGllZCk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZCk6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0KToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVv
Um91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZl
ZEludGVycnVwdGlvbik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6
XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6CisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKToKKyAgICAg
ICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9u
Ol0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKToKKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRD
aGFuZ2U6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Omhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaXJlTGVz
c1RhcmdldE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXRE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlY2VpdmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjYXJQbGF5U2Vy
dmVyRGllZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2FsbGJhY2tdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25pdG9yaW5n
QWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBpbnRlcnJ1cHRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2U6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDMtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBOb3dQbGF5aW5nIGNvbW1hbmRzIGlu
IEdQVVByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWI3NGJhNTRmN2M3NGM1NDQxYmM0Zjg4YmFmNzdmODJh
ZDIyYzQxNC4uZDVlNzQwMWUwMWIzODYxMDdlMGRjNTc4YTA0YWY1OTZmYmYxYzI2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29kZSBp
bnRvIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGNsYXNzIHBhaXIgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
L1Byb3h5LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHk6On5SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6
cmVjZWl2ZWRJbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHku
aDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6Y29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0
b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnJlY2VpdmVkSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdERpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNz
Rm9yTWVkaWEpOgorCiAyMDIwLTAzLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTm93UGxheWluZyBjb21tYW5kcyBpbiBHUFVQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjZDZiMTNhOTdkNzA1YjlmZmQxMzYx
YmE0ZTc4NTA2NGQ5NGE1NTUxLi5hZTc5M2Y0MmRlZGMxYjU5OGUxYzIwYjQ5MWExMDUxMWFiZDFj
NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQCBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCiBwbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVs
cGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmJlMTZjZGQxN2E2NjVjYWVhYWYxNDFhNWM2ZDExZTI3Mzg2NjI2
ZC4uZmViMTZiNzBlZWUxNDg3MzVmOGU0MTA2MWY4OTEwYmRhOGUwYjA5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1MSw2
ICs0MTUxLDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXND
b2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
NTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oICovOyB9OwogCQlD
REE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTk1OTM1
MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovOyB9OworCQlDREE5NTkzRjI0MTJCQUUw
MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2
MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2
QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFD
b250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVk
aWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0Lmgg
Ki87IH07CkBAIC0xMzg5Miw2ICsxMzg5NCw4IEBACiAJCUNEODcxQzY4MUZCNTJCNjkwMEYwQjk2
NSAvKiBJU09Cb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNP
Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4NzFDNjkxRkI1MkI2OTAw
RjBCOTY1IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDg3MUM2
QTFGQjUyQjZBMDBGMEI5NjUgLyogSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhB
N0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QTdCQkExOTc3MzVG
RTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNjIxMCw2ICsyNjIxNCw4IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQw
IC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQw
QkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICovLAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0
NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8sCisJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5
RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovLAorCQkJCUNEODc1QTc1MjQxMUI3OTgw
MEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi8sCiAJCQkJMDc2MzhBOTcxODg0
NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCAqLywKIAkJCQkwNzYzOEE5
ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLywKIAkJCSk7
CkBAIC0zMTU0MSw2ICszMTU0Nyw3IEBACiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8q
IE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQw
QUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUY4N0NG
RTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1
ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3MTAsNiArMzM3MTcsNyBAQAogCQkJCTE1
MDUyNEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyog
TWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2
QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTBGNjU1
NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNzJlZDBh
ZWFiZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAg
LTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CisKK2NsYXNzIE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIEludGVycnVwdGlvblR5cGUgOiBib29s
IHsgQmVnaW4sIEVuZCB9OworICAgIGVudW0gY2xhc3MgU2hvdWxkUmVzdW1lIDogYm9vbCB7IE5v
LCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0
aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFN1c3BlbmRlZFVu
ZGVyTG9jayA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpID0gMDsKKwor
ICAgIGVudW0gY2xhc3MgSGFzQXZhaWxhYmxlVGFyZ2V0cyA6IGJvb2wgeyBObywgWWVzIH07Cisg
ICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhh
c0F2YWlsYWJsZVRhcmdldHMpID0gMDsKKworICAgIGVudW0gY2xhc3MgUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0KSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZFBhdXNlIDogYm9vbCB7IE5vLCBZZXMg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVz
ZSkgPSAwOworCisgICAgZW51bSBjbGFzcyBTdXBwb3J0c0FpclBsYXlWaWRlbyA6IGJvb2wgeyBO
bywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3Vw
cG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7Cit9Owor
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVNlc3Npb25IZWxwZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBNZWRpYVNlc3Npb25IZWxwZXIm
IHNoYXJlZEhlbHBlcigpOworICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhlbHBlcihVbmlxdWVS
ZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFNoYXJlZEhl
bHBlcigpOworCisgICAgTWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgfk1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgYWRkQ2xpZW50
KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KE1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudCYpOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKGludCkgPSAwOworCisgICAgYm9vbCBpc01vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQ7IH0K
KyAgICBib29sIGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKSBjb25zdCB7IHJldHVy
biBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGU7IH0KKyAgICBib29sIGFjdGl2ZVZp
ZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlVmlk
ZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvOyB9CisgICAgYm9vbCBpc1BsYXlpbmdUb0F1dG9t
b3RpdmVIZWFkVW5pdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYWtIYXNoU2V0PE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudD4gbV9jbGllbnRzOworICAgIHVpbnQzMl90IG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzQ291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5
VmlkZW8geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dCB7IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODA5MzIxNmMxM2YwOGJiYzIwN2Q4ZDU0ZjM2Y2JhNzU5OTMzMjdmMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25I
ZWxwZXJJT1MubW0KQEAgLTAsMCArMSw2MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIk1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hLmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCisjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlJv
dXRlRGV0ZWN0b3IuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+
CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9DZWxlc3RpYWxTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgorCisjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRT
b2Z0TGluay5oPgorCitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJp
bmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJ
QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24g
PSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24iOworCisj
aWYgSEFWRShDRUxFU1RJQUwpCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwo
Q2VsZXN0aWFsKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1D
b250cm9sbGVyKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAq
KQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9s
bGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXND
b25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29u
bmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rp
b25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwo
Q2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5v
dGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0
ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxl
c3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9y
dHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzsKKworQGludGVyZmFjZSBXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyaU9T
KiBfY2FsbGJhY2s7CisKKyNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENI
T1MpCisgICAgUmV0YWluUHRyPEFWUm91dGVEZXRlY3Rvcj4gX3JvdXRlRGV0ZWN0b3I7CisjZW5k
aWYKKyAgICBib29sIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKyAgICBib29sIF9zdGFydE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZzsKK30KKworLSAoaWQpaW5pdFdpdGhDYWxsYmFj
azooTWVkaWFTZXNzaW9uSGVscGVyaU9TKiljYWxsYmFjazsKKworLSAodm9pZCljbGVhckNhbGxi
YWNrOworLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OworLSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOworLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistIChCT09MKWhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZTsKKworI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykKKy0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKy0g
KHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOworI2VuZGlmCisKK0BlbmQKKworY2xh
c3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TIGZpbmFsIDogcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBl
ciB7CitwdWJsaWM6CisgICAgTWVkaWFTZXNzaW9uSGVscGVyaU9TKCk7CisgICAgfk1lZGlhU2Vz
c2lvbkhlbHBlcmlPUygpOworCisgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlNob3VsZFJlc3VtZSk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQo
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQg
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpT
dXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3Rp
dmUoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisjaWYgSEFWRShD
RUxFU1RJQUwpCisgICAgdm9pZCBjYXJQbGF5U2VydmVyRGllZCgpOworICAgIHZvaWQgdXBkYXRl
Q2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYpOworICAgIHZvaWQgYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmKTsKKyAgICB2b2lkIGFjdGl2ZVZpZGVv
Um91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICB1c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpI
YXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAgdXNpbmcgUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9B
dXRvbW90aXZlSGVhZFVuaXQ7CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IE1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWly
UGxheVZpZGVvID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRl
bzsKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQoYm9vbCk7CisKKyAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50KSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
KCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7
CisKKyAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsK
KyNpZiBIQVZFKENFTEVTVElBTCkKKyAgICBib29sIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9u
UElEIHsgZmFsc2UgfTsKKyNlbmRpZgorfTsKKworc3RhdGljIFVuaXF1ZVJlZjxNZWRpYVNlc3Np
b25IZWxwZXI+JiBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8
VW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4+IGhlbHBlciA9IG1ha2VVbmlxdWVSZWY8TWVk
aWFTZXNzaW9uSGVscGVyaU9TPigpOworICAgIHJldHVybiBoZWxwZXI7Cit9CisKK01lZGlhU2Vz
c2lvbkhlbHBlciYgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKQoreworICAgIHJl
dHVybiBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cjo6cmVzZXRTaGFyZWRIZWxwZXIoKQoreworICAgIHNoYXJlZEhlbHBlckluc3RhbmNlKCkgPSBt
YWtlVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcmlPUz4oKTsKK30KKwordm9pZCBNZWRpYVNl
c3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcihVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVy
PiYmIGhlbHBlcikKK3sKKyAgICBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpID0gV1RGTW92ZShoZWxw
ZXIpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWRkQ2xpZW50KE1lZGlhU2Vzc2lv
bkhlbHBlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5z
KGNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9pZCBNZWRpYVNl
c3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xp
ZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKworTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpNZWRpYVNl
c3Npb25IZWxwZXJpT1MoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1fb2JqY09ic2VydmVyID0gYWRvcHROUyhbW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhbGxvY10g
aW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CisgICAgbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07Cisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAg
dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6bnVsbG9wdCk7CisjZW5kaWYKK30KKworTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp+TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKK3sKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFj
a107CisgICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGlmICht
X2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGF2
ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKworICAgIGlmICghY2FuTG9hZEFWU3lz
dGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6
QChwaWQpIGZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRp
b25TdGF0ZUZyb20oKSBlcnJvcjomZXJyb3JdOworICAgIGlmIChlcnJvcikKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJGYWlsZWQgdG8gc2V0IHVwIFBJRCBwcm94eWluZzogJXMiLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKKyNlbmRpZgorfQorCit2b2lkIE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlm
IChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCisgICAgICAgIHJldHVybjsKKwor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX29iamNPYnNlcnZlciBzdGFy
dE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNz
Um91dGVzKCkKK3sKKyAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9vYmpjT2JzZXJ2
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCit9CisKKyNpZiBIQVZFKENFTEVTVElBTCkKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpjYXJQbGF5U2VydmVyRGllZCgpCit7CisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVk
KFdURjo6bnVsbG9wdCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVD
YXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJiBjYXJQbGF5SXNDb25uZWN0ZWQpCit7
CisgICAgaWYgKGNhclBsYXlJc0Nvbm5lY3RlZCkgeworICAgICAgICBzZXRJc1BsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdChjYXJQbGF5SXNDb25uZWN0ZWQudmFsdWUoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxh
eUlzQ29ubmVjdGVkQXR0cmlidXRlKCkpIHsKKyAgICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0SXNQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoW1tbZ2V0QVZTeXN0ZW1Db250cm9sbGVyQ2xhc3Mo
KSBzaGFyZWRBVlN5c3RlbUNvbnRyb2xsZXJdIGF0dHJpYnV0ZUZvcktleTpnZXRBVlN5c3RlbUNv
bnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlKCldIGJvb2xWYWx1ZV0pOworfQor
Cit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQoYm9vbCBpc1BsYXlpbmcpCit7CisgICAgaWYgKGlzUGxheWluZyA9PSBtX2lzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gaXNQbGF5aW5nOworICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXREaWRDaGFuZ2UobV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA/IFBsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdDo6WWVzIDogUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpObyk7
Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCit7CisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KHNob3VsZFBhdXNlLnZhbHVlT3IoZmFsc2UpID8gU2hvdWxkUGF1c2U6OlllcyA6IFNob3VsZFBh
dXNlOjpObyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc3VwcG9ydHNBaXJQbGF5VmlkZW8pCit7Cisg
ICAgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBzdXBwb3J0c0FpclBs
YXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKKworICAgIGF1dG8gcGxheWJhY2tUYXJnZXQgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZShbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dF0pOworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURp
ZENoYW5nZShtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA/IFN1cHBvcnRz
QWlyUGxheVZpZGVvOjpZZXMgOiBTdXBwb3J0c0FpclBsYXlWaWRlbzo6Tm8sIHBsYXliYWNrVGFy
Z2V0LmNvcHlSZWYoKSk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6
OnJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0
aW9uVHlwZSB0eXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSBzaG91
bGRSZXN1bWUpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
IGNsaWVudC5yZWNlaXZlZEludGVycnVwdGlvbih0eXBlLCBzaG91bGRSZXN1bWUpOworfQorCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQor
eworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVu
dDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKHVuZGVyTG9jayk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVy
TG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCh1bmRlckxvY2spOworfQorCit2b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1faXNFeHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UobV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzIDogSGFzQXZhaWxhYmxlVGFyZ2V0czo6Tm8p
OworfQorCitAaW1wbGVtZW50YXRpb24gV2ViTWVkaWFTZXNzaW9uSGVscGVyCisKKy0gKGlkKWlu
aXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyopY2FsbGJhY2sKK3sKKyAgICBM
T0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrXSIpOwor
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpj
ZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CisgICAgW2NlbnRl
ciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRpb246KSBuYW1l
OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpbUEFMOjpnZXRB
VkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKKworICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikg
bmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlL
aXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmls
XTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25B
Y3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5h
bWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNh
dGlvbigpIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldlYlVJQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisjaWYg
SEFWRShDRUxFU1RJQUwpCisgICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfU2VydmVy
Q29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKKyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2VydmVyRGllZDopIG5hbWU6Z2V0QVZT
eXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkgb2JqZWN0
Om5pbF07CisgICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVj
dGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFt
ZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJf
QWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpKQorICAgICAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFjdGl2ZUF1ZGlvUm91dGVEaWRD
aGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CisjZW5kaWYKKworICAgIC8vIE5vdyBwbGF5
aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhlIGRlbGl2ZXJ5IG9mIHJlbW90ZSBj
b250cm9sIGV2ZW50cy4KKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgW1tQ
QUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBiZWdpblJlY2Vp
dmluZ1JlbW90ZUNvbnRyb2xFdmVudHNdOworICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgfSk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10iKTsKKwor
I2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoIXB0
aHJlYWRfbWFpbl9ucCgpKSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3RvcildICgp
IG11dGFibGUgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBkaXBh
dGNoZWQgdG8gVUkgdGhyZWFkLiIpOworICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5h
YmxlZCA9IE5POworICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5jbGVhcigpOworICAgICAgICAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Cisj
ZW5kaWYKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6c2VsZl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNsZWFy
Q2FsbGJhY2sKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVh
ckNhbGxiYWNrXSIpOworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAoQk9PTCloYXNXaXJl
bGVzc1RhcmdldHNBdmFpbGFibGUKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lv
bkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdIik7CisjaWYgSEFWRShNRURJQV9Q
TEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIHJldHVybiBfcm91dGVEZXRlY3Rvci5n
ZXQoKS5tdWx0aXBsZVJvdXRlc0RldGVjdGVkOworI2Vsc2UKKyAgICByZXR1cm4gTk87CisjZW5k
aWYKK30KKworI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKy0g
KHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlcworeworICAgIGlmIChfbW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIF9tb25pdG9yaW5nQWlyUGxh
eVJvdXRlcyA9IHRydWU7CisKKyAgICBpZiAoX3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQ
ZW5kaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3JvdXRlRGV0ZWN0b3IpIHsKKyAg
ICAgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gWUVTOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0
ZXNQZW5kaW5nID0gdHJ1ZTsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CisKKyAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCghcHJvdGVjdGVkU2VsZi0+X3JvdXRl
RGV0ZWN0b3IpOworCisgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAg
ICAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZSb3V0ZURldGVj
dG9ySW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcm91dGVE
ZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBwcm90ZWN0ZWRTZWxmLT5fbW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXM7CisgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnByb3RlY3RlZFNlbGYuZ2V0KCkgc2VsZWN0b3I6
QHNlbGVjdG9yKHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOikgbmFtZTpBVlJvdXRl
RGV0ZWN0b3JNdWx0aXBsZVJvdXRlc0RldGVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVj
dDpwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rvci5nZXQoKV07CisKKyAgICAgICAgICAgIHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoKTsKKyAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAg
fQorCisgICAgICAgIHByb3RlY3RlZFNlbGYtPl9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
UGVuZGluZyA9IGZhbHNlOworICAgIH0pOworfQorCistICh2b2lkKXN0b3BNb25pdG9yaW5nQWly
UGxheVJvdXRlcworeworICAgIGlmICghX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9w
TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdIik7CisKKyAgICBfbW9uaXRvcmluZ0FpclBsYXlSb3V0
ZXMgPSBmYWxzZTsKKyAgICBfcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJs
ZWQgPSBOTzsKK30KKyNlbmRpZiAvLyBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdB
VENIT1MpCisKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgoreworICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAgdXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWU7CisKKyAgICBOU1VJbnRlZ2VyIHR5cGUg
PSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvblR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBJbnRlcnJ1cHRp
b25UeXBlIGludGVycnVwdGlvblR5cGUgPSAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVw
dGlvblR5cGVFbmRlZCA/IEludGVycnVwdGlvblR5cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6
OkJlZ2luKTsKKyAgICBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpO
bzsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlv
bl0gLSB0eXBlID0gJWkiLCAoaW50KXR5cGUpOworCisgICAgaWYgKGludGVycnVwdGlvblR5cGUg
PT0gSW50ZXJydXB0aW9uVHlwZTo6RW5kICYmIFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2Jq
ZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZElu
dGVnZXJWYWx1ZV0gPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1
bWUpCisgICAgICAgIHNob3VsZFJlc3VtZSA9IFNob3VsZFJlc3VtZTo6WWVzOworCisgICAgY2Fs
bE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5yZWNlaXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRp
b25UeXBlLCBzaG91bGRSZXN1bWUpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAg
ICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1
c3BlbmRlZFVuZGVyTG9jazsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmRdIik7CisKKyAgICBhdXRvIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0g
W1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVy
TG9jayJdIGJvb2xWYWx1ZV0gPyBTdXNwZW5kZWRVbmRlckxvY2s6OlllcyA6IFN1c3BlbmRlZFVu
ZGVyTG9jazo6Tm87CisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9j
a10oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2Vs
Zi0+X2NhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
Cit7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3Rl
ZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwor
ICAgIH0pOworfQorCistICh2b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOworCisgICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7CisKKyAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIH0pOworfQorCistICh2b2lkKWFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgoreworICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAg
IHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSIpOworCisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVy
TG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5k
ZWRVbmRlckxvY2siXSBib29sVmFsdWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNw
ZW5kZWRVbmRlckxvY2s6Ok5vOworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09u
TWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRV
bmRlckxvY2tdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3Rl
Y3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNp
ZiBIQVZFKENFTEVTVElBTCkKKy0gKHZvaWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVy
bjsKKworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2
ZXJEaWVkOl0iKTsKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2Vy
dmVyRGllZCgpOworICAgIH0pOworfQorCistICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENo
YW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVj
dGVkOworICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9D
YXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgeworICAgICAgICBOU051
bWJlciAqbnNDYXJQbGF5SXNDb25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFs
dWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNh
dGlvblBhcmFtZXRlcigpXTsKKyAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAg
ICAgICAgICAgY2FyUGxheUlzQ29ubmVjdGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xW
YWx1ZV07CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0
ZWQgPSBXVEZNb3ZlKGNhclBsYXlJc0Nvbm5lY3RlZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAg
IGNhbGxiYWNrLT51cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25u
ZWN0ZWQpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBP
cHRpb25hbDxib29sPiBzaG91bGRQYXVzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlv
blBhcmFtZXRlcl9TaG91bGRQYXVzZSgpKSB7CisgICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBh
dXNlID0gW25vdGlmaWNhdGlvbi51c2VySW5mbyB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRy
b2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91
bGRQYXVzZSgpXTsKKyAgICAgICAgaWYgKG5zU2hvdWxkUGF1c2UpCisgICAgICAgICAgICBzaG91
bGRQYXVzZSA9IG5zU2hvdWxkUGF1c2UuYm9vbFZhbHVlOworICAgIH0KKworICAgIE9wdGlvbmFs
PGJvb2w+IHN1cHBvcnRzQWlyUGxheVZpZGVvOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250
cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxl
cl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAg
ICAgICBOU0RpY3Rpb25hcnkqIHBpY2tlZFJvdXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJD
bGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lz
dGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNr
ZWRSb3V0ZSBpc0tpbmRPZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAg
IE5TTnVtYmVyKiBuc1N1cHBvcnRzQWlyUGxheVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9y
S2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9y
dHNBaXJQbGF5VmlkZW8oKV07CisgICAgICAgICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRl
bykKKyAgICAgICAgICAgICAgICBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQ
bGF5VmlkZW8uYm9vbFZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhy
ZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBzaG91bGRQYXVzZSA9IFdURk1vdmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBs
YXlWaWRlbyA9IFdURk1vdmUoc3VwcG9ydHNBaXJQbGF5VmlkZW8pXSgpIG11dGFibGUgeworICAg
ICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hv
dWxkUGF1c2UpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hh
bmdlKFdURk1vdmUoc3VwcG9ydHNBaXJQbGF5VmlkZW8pKTsKKyAgICAgICAgfQorICAgIH0pOwor
Cit9CisjZW5kaWYgLy8gSEFWRShDRUxFU1RJQUwpCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmgKaW5kZXggNWRmMjBhN2FhMTRjMWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4u
NGRjOGZmM2MxMzJhYzU1OThiMjM5Y2M0ZDIyM2U2MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisj
aW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVySU9TLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxOCAr
NDIsMTMgQEAgZXh0ZXJuIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kTm90aWZpY2F0aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MgOiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNz
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MKKyAgICA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EKKyAgICAsIHB1YmxpYyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZSgpIG92ZXJyaWRlOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZv
aWQgY2FyUGxheVNlcnZlckRpZWQoKTsKLSAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3Rl
ZChPcHRpb25hbDxib29sPiYmKTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uo
T3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9w
dGlvbmFsPGJvb2w+JiYpOwotI2VuZGlmCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQg
KzYyLDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElESWZOZWNlc3NhcnkoKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2so
UGxhdGZvcm1NZWRpYVNlc3Npb24mLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5h
bDsKIAorICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJ
bnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZp
bmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkg
ZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAg
IHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxl
VGFyZ2V0cykgZmluYWw7CisgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3Vs
ZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9y
dHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2
b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9t
b3RpdmVIZWFkVW5pdCkgZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1MiOyB9CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25I
ZWxwZXI+IG1fb2JqY09ic2VydmVyOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9p
c01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVz
ZW50ZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3
N2FkODYyNGNiNDViZGYzOTgzZWM4ZC4uN2M1MTViNTg1ZDRhNmJkNmFlMDlhNzQwY2U2NjQzYzkz
MDE3NDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KQEAgLTM1LDY3ICszNSwxMCBAQAogI2lt
cG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnku
aCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkF1ZGlvU2Vzc2lvbi5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5o
PgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91
bmRhdGlvblNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgot
Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZp
Y2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmROb3RpZmljYXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdl
YlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxF
U1RJQUwpCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQot
U09GVF9MSU5LX0NMQVNTX09QVElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVy
X1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJ
c0Nvbm5lY3RlZEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlf
RkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRD
aGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZp
Y2F0aW9uUGFyYW1ldGVyLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZp
Y2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlh
bCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBB
VlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBh
cmFtZXRlcl9TaG91bGRQYXVzZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlf
RkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwg
TlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5Vmlk
ZW8sIE5TU3RyaW5nICopCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBp
bnRlcmZhY2UgV2ViTWVkaWFTZXNzaW9uSGVscGVyIDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MqIF9jYWxsYmFjazsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykKLSAgICBSZXRhaW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVE
ZXRlY3RvcjsKLSNlbmRpZgotICAgIGJvb2wgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAg
IGJvb2wgX3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClp
bml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAo
dm9pZCljbGVhckNhbGxiYWNrOwotLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247
Ci0tIChCT09MKWhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFf
UExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWly
UGxheVJvdXRlczsKLS0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlm
Ci0KLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0
ZSgpCkBAIC0xMDYsMjIgKzQ5LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9j
XSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsKLQotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVw
ZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOwotI2VuZGlmCiB9CiAKIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKIHsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFj
a107Ci0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICBNZWRp
YVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9u
cygpCkBAIC0xNDMsOSArNzYsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0
UmVzdHJpY3Rpb25zKCkKIAogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGUoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIHJldHVybiBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6c2hhcmVkSGVscGVyKCkuaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpOwog
fQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0
TW9uaXRvcmluZygpCkBAIC0xNTUsMTYgKzg2LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJu
IHNlc3Npb24ucmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0p
OwogCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0g
IiwgcmVxdWlyZXNNb25pdG9yaW5nKTsKKyAgICBpZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1f
aXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpCisgICAgICAgIHJldHVybjsKIAotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMg
PSByZXF1aXJlc01vbml0b3Jpbmc7CisKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJy
ZXF1aXJlc01vbml0b3JpbmcgPSAiLCByZXF1aXJlc01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJl
cXVpcmVzTW9uaXRvcmluZykKLSAgICAgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXNdOworICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBl
cigpLnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBb
bV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRI
ZWxwZXIoKS5zdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAt
MTc0LDIxICsxMDYsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50
ZWRBcHBsaWNhdGlvblBJRCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFw
cGxpY2F0aW9uUElEID0gdHJ1ZTsKLSAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KCk7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgog
fQogCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGlj
YXRpb25QSUQoKQogewotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lz
dGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6
QChwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKSkgZm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxl
cl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAg
aWYgKGVycm9yKQotICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHBy
b3h5aW5nOiAlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2Vu
ZGlmCisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5
Q2FsbGluZ1VwZGF0ZU5vd1BsYXlpbmcpCkBAIC0yMDEsNDUgKzEyNSwyNSBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNl
c3Npb24mIHNlc3NpbwogI2VuZGlmCiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNB
dmFpbGFibGVUYXJnZXRzIGhhdmVUYXJnZXRzKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotCi0gICAgYm9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJl
bGVzc1RhcmdldHNBdmFpbGFibGVdOwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2
ZVRhcmdldHMpOwogCiAgICAgZm9yRWFjaFNlc3Npb24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vz
c2lvbikgewotICAgICAgICBzZXNzaW9uLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhdmVUYXJnZXRzKTsKKyAgICAgICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZShoYXZlVGFyZ2V0cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZ
ZXMpOwogICAgIH0pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYg
SEFWRShDRUxFU1RJQUwpCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2
ZXJEaWVkKCkKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwot
ICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworICAgIHNldElzUGxh
eWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2Fy
UGxheUlzQ29ubmVjdGVkKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQ
bGF5SXNDb25uZWN0ZWQpIHsKLSAgICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgc2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFj
YW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7
Ci0gICAgICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
KFtbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVy
XSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3Rl
ZEF0dHJpYnV0ZSgpXSBib29sVmFsdWVdKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1
c2UpCi17Ci0gICAgaWYgKCFzaG91bGRQYXVzZSB8fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAg
ICBpZiAoc2hvdWxkUGF1c2UgIT0gU2hvdWxkUGF1c2U6OlllcykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZm9yRWFjaFNlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTUy
LDYzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShPcHRpb25hbDxib29sPiYmIHNob3VsZFBhCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29s
PiYmIHN1cHBvcnRzQWlyUGxheVZpZGVvKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjph
Y3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWly
UGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAg
ICBhdXRvIG5vd1BsYXlpbmdTZXNzaW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwog
ICAgIGlmICghbm93UGxheWluZ1Nlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
c2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgPSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9y
KGZhbHNlKTsKLSAgICBhdXRvIHBsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENv
Y29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1By
ZXNlbnRhdGlvbk91dHB1dENvbnRleHRdKTsKLSAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOworICAg
IG5vd1BsYXlpbmdTZXNzaW9uLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0
c0FpclBsYXlWaWRlbyA9PSBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5
aW5nU2Vzc2lvbi0+c2V0UGxheWJhY2tUYXJnZXQoV1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwog
fQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdl
Yk1lZGlhU2Vzc2lvbkhlbHBlcgotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TKiljYWxsYmFjawotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNz
aW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2tdIik7Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxs
YmFjazsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJy
dXB0aW9uTm90aWZpY2F0aW9uIG9iamVjdDpbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkg
c2hhcmVkSW5zdGFuY2VdXTsKLQotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6Omdl
dF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9i
amVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
Tm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2Vi
VUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAg
ICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlB
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwot
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAg
aWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmlj
YXRpb24oKSkKLSAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihjYXJQbGF5U2VydmVyRGllZDopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZl
ckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0
aW9uKCkpCi0gICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xs
ZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07
Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZU5vdGlmaWNhdGlvbigpKQotICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lz
dGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2Jq
ZWN0Om5pbF07Ci0jZW5kaWYKLQotICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNz
IHdlIHR1cm4gb24gdGhlIGRlbGl2ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZl
bnRzXTsKLSAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAg
cmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIExPRyhNZWRpYSwgIi1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdIik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlF
UikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVE
ZXRlY3RvciA9IFdURk1vdmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIExPRyhNZWRpYSwgInNhZmVseVRlYXJEb3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4i
KTsKLSAgICAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAgICAg
cm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAg
ICAgIHJvdXRlRGV0ZWN0b3IuY2xlYXIoKTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9y
LmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAg
IFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBf
Y2FsbGJhY2sgPSBuaWw7Ci19Ci0KLS0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
Ci17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NU
YXJnZXRzQXZhaWxhYmxlXSIpOwotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0o
V0FUQ0hPUykKLSAgICByZXR1cm4gX3JvdXRlRGV0ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNE
ZXRlY3RlZDsKLSNlbHNlCi0gICAgcmV0dXJuIE5POwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1F
RElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0g
ICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKF9yb3V0ZURldGVjdG9yKSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9y
LmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0K
LSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzXSIpOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewot
ICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAg
ICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVj
dG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0p
OwotICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVE
ZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVz
OwotICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRP
YnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1Jv
dXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5hbWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0
ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3Jv
dXRlRGV0ZWN0b3IuZ2V0KCldOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJh
Y2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0
ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAg
ICB9KTsKLX0KLQotLSAodm9pZClzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBp
ZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91
dGVzXSIpOwotCi0gICAgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3Jv
dXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYg
Ly8gSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotCi0tICh2b2lkKWlu
dGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9j
YWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1
c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0g
dW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRl
cnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0g
ICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5
cGUgPSAlaSIsIChpbnQpdHlwZSk7Ci0KLSAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvblR5cGVFbmRlZCAmJiBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZv
cktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2Vy
VmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQot
ICAgICAgICBmbGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwot
Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCB0eXBlLCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlm
ICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0g
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlQmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFj
ay0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVw
dGlvbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRp
b24oZmxhZ3MpOwotCi0gICAgfSk7Ci19CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUs
IFNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNh
dGlvbik7Ci0KLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0
ZW1JbnRlcnJ1cHRpb25zKCkpCisgICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25z
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNT
dXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktl
eTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0
byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxs
YmFjay0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKLSAgICB9KTsKLX0KKyAgICBhdXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJl
c3VtZTo6WWVzID8gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9GbGFnczsKIAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKLQotICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2ls
bElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAg
IGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlm
ICh0eXBlID09IEludGVycnVwdGlvblR5cGU6OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNl
CisgICAgICAgIGVuZEludGVycnVwdGlvbihmbGFncyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3Vz
cGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxs
SWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1l
ZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBs
aWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5k
ZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVz
c1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJh
Y2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3Rl
bUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7
Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRv
KiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxi
YWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIH0pOwor
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KTsKIH0KIAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrKQogewotICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5
c3RlbUludGVycnVwdGlvbnMoKSkKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlv
bnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlz
U3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JL
ZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhy
ZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1
dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2Fs
bGJhY2stPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9j
azo6WWVzKTsKIH0KIAotI2lmIEhBVkUoQ0VMRVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVy
RGllZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmICghX2Nh
bGxiYWNrKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQ
bGF5U2VydmVyRGllZDpdIik7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAg
Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJh
Y2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2Fy
UGxheVNlcnZlckRpZWQoKTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlz
Q29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAg
IGlmICghX2NhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBj
YXJQbGF5SXNDb25uZWN0ZWQ7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0
ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7
Ci0gICAgICAgIE5TTnVtYmVyICpuc0NhclBsYXlJc0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9u
IHVzZXJJbmZvXSB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29u
bmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyKCldOwotICAgICAgICBpZiAobnNDYXJQbGF5SXND
b25uZWN0ZWQpCi0gICAgICAgICAgICBjYXJQbGF5SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXND
b25uZWN0ZWQgYm9vbFZhbHVlXTsKLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNh
clBsYXlJc0Nvbm5lY3RlZCA9IFdURk1vdmUoY2FyUGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNr
KQotICAgICAgICAgICAgY2FsbGJhY2stPnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3Zl
KGNhclBsYXlJc0Nvbm5lY3RlZCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlv
Um91dGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYg
KCFfY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOwotICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFBhdXNlOwotICAgIGlmIChub3RpZmlj
YXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1i
ZXIqIG5zU2hvdWxkUGF1c2UgPSBbbm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5Omdl
dEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9u
UGFyYW1ldGVyX1Nob3VsZFBhdXNlKCldOwotICAgICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAg
ICAgICAgICAgIHNob3VsZFBhdXNlID0gbnNTaG91bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQot
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfUGlja2VkUm91dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZT
eXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlW
aWRlbygpKSB7Ci0gICAgICAgIE5TRGljdGlvbmFyeSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lz
dGVtQ29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVG
b3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAg
ICAgICBpZiAoW3BpY2tlZFJvdXRlIGlzS2luZE9mQ2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkg
ewotICAgICAgICAgICAgTlNOdW1iZXIqIG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2Vk
Um91dGUgdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25L
ZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpXTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBv
cnRzQWlyUGxheVZpZGVvKQotICAgICAgICAgICAgICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0g
bnNTdXBwb3J0c0FpclBsYXlWaWRlby5ib29sVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZiksIHNob3VsZFBhdXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSks
IHN1cHBvcnRzQWlyUGxheVZpZGVvID0gV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykgewotICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2UoV1RGTW92ZShzaG91bGRQYXVzZSkpOwotICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbykpOwotICAgICAg
ICB9Ci0gICAgfSk7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZF
KENFTEVTVElBTCkKLUBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDc0OWIy
ZGIwOWI5Njc0NmY0YTBmMWUzNGMyMTc0MmVkZjUzZTQ2Yi4uZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1
MzU4NjEzMmYyMmFiOTU2YjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdApAQCAtMjcsNiArMjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMTIyLDYgKzEyMyw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENSZW1vdGVDb2RlY3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDk5NTAzNTEyYmE1NThiMmI0MTAwOGY1YjE2NjUw
NDYwYTk1NDE0NTYuLjBiODU3MzY0ODFlMDc1NWY4NmQ5MjVlMzA2MmU1ZGMzZTIzNjgzNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
MTgzLDYgKzE4MywxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVNZWRpYVJlY29yZGVyc01lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxYzNkMWEyMGVlYTNiNzM4MDAxMDJl
MWQzMTk4Mzc5MDNhYTZjZDBhLi5jYjcxNTJmYTMxNDY5NTI1MTAxOGZhZWEwNWFmMTA2MzZlMGI0
NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNiw2ICsyNiw3IEBAIFZQQVRI
ID0gXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQy
KS9HUFVQcm9jZXNzL21hYyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKKyAg
ICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zIFwKICAgICAkKFdlYktpdDIpL0dQVVBy
b2Nlc3Mvd2VicnRjIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdl
YktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMgXApAQCAtNTQsNiArNTUsNyBAQCBWUEFUSCA9
IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVIFwKICAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
IFwKKyAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcyBcCiAgICAgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9J
Y29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IgXApAQCAt
MTY0LDYgKzE2Niw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVj
b3JkZXIgXAogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlciBcCisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKyAgICBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBcCiAgICAgUmVtb3RlT2JqZWN0UmVnaXN0cnkg
XAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzFkMjA3MzFlZTViNzMyMjljNTFlYjM0ODI3MGVh
YmU2OGM1Y2M3My4uMmNiMmE5NWJjNmUzN2YzY2VmM2E5M2JiYzZjNzU2MTAxMDE1ZWRiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtODMsNiArODMsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eU1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yODksNiArMjkz
LDIwIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlQXVkaW9TZXNzaW9u
KEVuc3VyZUF1ZGlvU2Vzc2lvbkNvbXBsZXRpb24mCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6bWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIGlmICghbV9t
ZWRpYVNlc3Npb25IZWxwZXJQcm94eSkKKyAgICAgICAgbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94
eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+KCp0aGlzKTsKKyAg
ICByZXR1cm4gKm1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7Cit9CisKK3ZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKK3sKKyAgICBtZWRp
YVNlc3Npb25IZWxwZXJQcm94eSgpOworfQorI2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODAxNTZkMWJlY2VhNmJiZTIzOGI2YTAx
OGI1MGY5ODI1ZGI1OWI0NC4uMzY4YjBiZjY2YmI4NWE5ZTRjYWZhMmNiNWE4MmU2NzJjY2MwNTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94
eTsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKK2Ns
YXNzIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTg3LDcgKzg4
LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RN
RmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgotCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgbWVkaWFTZXNz
aW9uSGVscGVyUHJveHkoKTsKKyNlbmRpZgogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOwogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyJiBhdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CkBAIC0xMjQsNiArMTI3LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBlbnN1cmVBdWRpb1Nlc3Npb24oRW5zdXJlQXVkaW9TZXNzaW9uQ29tcGxl
dGlvbiYmKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGVu
c3VyZU1lZGlhU2Vzc2lvbkhlbHBlcigpOworI2VuZGlmCisKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIGZpbmFsOwpAQCAtMTY3LDYgKzE3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+IG1fYXVkaW9TZXNzaW9uUHJveHk7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eT4gbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDVhYjQxNzJlZDMxNDdmMjZhOTAzN2RiYzk4ODVhOTdmMWU4MDljYzYuLmQ4N2Q3NjEzNGFl
ZWMxYThhYzA3NWU1Njk5YTI5MWFmMzkxMjc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0zMCw2ICszMCw5IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9v
bCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJ
bmZvIG5vd1BsYXlpbmdJbmZvKTsKICNlbmRpZgogICAgIEVuc3VyZUF1ZGlvU2Vzc2lvbigpIC0+
IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb24pIFN5bmNocm9ub3VzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbnN1cmVN
ZWRpYVNlc3Npb25IZWxwZXIoKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlNjBiNDRlZTNkMWJiNjUzZGNjYjE4MzkxZjVkZTM4ZTNhM2Q5NDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eTo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihn
cHVDb25uZWN0aW9uKQoreworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCku
YWRkQ2xpZW50KCp0aGlzKTsKK30KKworUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6On5S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpCit7CisgICAgc3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVt
b3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX2lzTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzID0gdHJ1ZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhl
bHBlcigpLnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQor
eworICAgIGlmICghbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IGZhbHNlOworICAgIE1lZGlh
U2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
cygpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCit7CisgICAgaWYgKG1fcHJvdmlkZWRBcHBs
aWNhdGlvblBJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm92aWRlZEFwcGxpY2F0aW9u
UElEID0gdHJ1ZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnByb3Zp
ZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQocGlkKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eTo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0
eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpSZWNl
aXZlZEludGVycnVwdGlvbih0eXBlLCBzaG91bGRSZXN1bWUpLCB7IH0pOworfQorCit2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBtX2dwdUNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayks
IHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxv
Y2spCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1
c3BlbmRlZFVuZGVyTG9jayksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBtX2dwdUNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6QXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKSwgeyB9KTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCB7IH0p
OworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJs
ZVRhcmdldHMpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpLCB7IH0pOworfQorCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERp
ZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZykKK3sKKyAgICBtX2dw
dUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UocGxheWluZyks
IHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1
ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCit7CisgICAgbV9ncHVD
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OkFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpLCB7IH0pOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlk
Q2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgbV9ncHVDb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OkFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+
dGFyZ2V0Q29udGV4dCgpKSwgeyB9KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4
NTM5N2RhMzIwZjIxMWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eQorICAgIDogcHVibGljIFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudAorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0
dWFsIH5SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpOworCitwcml2YXRlOgorICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAg
dm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIHZvaWQgc3RvcE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRChpbnQpOworCisgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgdm9p
ZCByZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpIGZp
bmFsOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVu
ZGVyTG9jaykgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChT
dXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21l
SW5hY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkg
ZmluYWw7CisgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShI
YXNBdmFpbGFibGVUYXJnZXRzKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7Cisg
ICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAg
ICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJl
ZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIGJvb2wgbV9w
cm92aWRlZEFwcGxpY2F0aW9uUElEIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMgeyBmYWxzZSB9OworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fZ3B1Q29ubmVjdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI2YzQ4NTE3
YmFiZWE4YTg0NGJmNWRhZDQ3NWNlN2ZmMzk5OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBOb3RSZWZD
b3VudGVkIHsKKyAgICBTdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCisgICAgU3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCisgICAgUHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRChpbnQgcGlkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDEwNTZiOWVkZTU0YmFh
YWUyYjI5YTA1NjdhODVmNmExOTQ4OGJmZGQuLjFjOTI0NWUwYjlmNGJiYzJiODBkN2UzY2MwNGVm
ZDIwM2Q4ZTA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDAsNiArNDAsNyBAQCBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAor
R1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAK
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC01
NjAsNiArNTYxLDcgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAK
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlZDlmNDRiYjlmMjJlM2MyNGYxZDJkOTgwNTgz
MjFhODEwZjc5ZDMzLi5mOTMyM2ZiOTM5NjA5OGE5OGRmOTZmNmJkNjJkMDE2MmQ2ZGY4Y2M4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02NjIsNiArNjYyLDggQEAgUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRp
YVJlY29yZGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIxZmIxYzllZTA5MzJkNTJiNGYx
ZDUyZDJiNWIwZjNlMzA2Mzc2Ny4uNTllMzQyYmQzNjdiZTk3MDUwZmNkMWU3NDA5NTJiNjZjYmI5
MDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01MDY3LDYgKzUwNjcsMTIgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8q
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFF
MjJGOEJDRjMwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
aDsgcGF0aCA9IGlvcy9mdWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFt
ZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAw
NDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7
IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0
ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0EyNDEyQjE3NTAw
OTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5NTkzQjI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQzI0MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5NDUyNDEy
QzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk1OTQ2MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ3MjQx
MkM5MTkwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90
ZUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3
QzIzRkIxRUY5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDAwLDYgKzU0MDYsNyBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1MTggLyogY29j
b2EgKi8sCisJCQkJQ0RBOTU5MzkyNDEyQjE3NTAwOTEwRUVGIC8qIGlvcyAqLywKIAkJCQkwNzFC
QzU3OTIzQzkzQkI5MDA2ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovLAog
CQkJCTA3MUJDNTc3MjNDOTNCQjcwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5o
ICovLAogCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwICovLApAQCAtNTQ1NCw2ICs1NDYxLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICov
LAorCQkJCUNEQTk1OTQ0MjQxMkM0REEwMDkxMEVFRiAvKiBpb3MgKi8sCiAJCQkJOUIxMjI5Q0My
M0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLywK
IAkJCQk5QjEyMjlDQjIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIuaCAqLywKIAkJCQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDEzNSw2ICsxMDE0MywyNiBA
QAogCQkJbmFtZSA9IEZ1bGxTY3JlZW47CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlDREE5NTkzOTI0MTJCMTc1MDA5MTBFRUYgLyogaW9zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5NTkzQTI0MTJCMTc1MDA5MTBFRUYgLyog
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCAqLywKKwkJCQlDREE5NTkzQjI0MTJCMTc1MDA5
MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggKi8sCisJCQkJQ0RBOTU5M0MyNDEy
QjY0NTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbiAqLywK
KwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJQ0RBOTU5NDQyNDEyQzREQTAwOTEwRUVGIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOTU5NDYyNDEyQzRGNTAwOTEwRUVGIC8qIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcCAqLywKKwkJCQlDREE5NTk0NTI0MTJDNEY1
MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCAqLywKKwkJCQlDREE5
NTk0NzI0MTJDOTE5MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVz
c2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUNEQzI4MzFBMjAxQkQ3NTYwMEU2RTc0NSAvKiBmdWxsc2NyZWVuICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZjRkNzVmMjk4MDgwMzRmMWE0OWNi
YzlhNWMyOWQ1NTE5MTg1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC0wLDAg
KzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBt
X3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCksIHsgfSk7
Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpjb25uZWN0
aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3Rh
cnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJl
bGVzc1JvdXRlc0NvdW50KyspCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RhcnRNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9tb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworICAgIGNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJv
dmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwaWQpLCB7IH0pOworfQorCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlw
ZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlw
ZSwgc2hvdWxkUmVzdW1lKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVk
VW5kZXJMb2NrKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9j
ayk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQorewor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkK
K3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFw
cGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFp
bGFibGVUYXJnZXRzKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZh
aWxhYmxlVGFyZ2V0cyk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQgcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQoreworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXREaWRDaGFuZ2UocGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxk
UGF1c2Ugc2hvdWxkUGF1c2UpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CisgICAgICAgIGNsaWVudC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlKTsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRD
aGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKK3sKKyAgICBSZWZQdHI8TWVkaWFQ
bGF5YmFja1RhcmdldD4gdGFyZ2V0T2JqZWN0OworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUo
KSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkKKyAg
ICAgICAgdGFyZ2V0T2JqZWN0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpj
cmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVWaWRl
b1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJnZXRPYmplY3QuY29weVJl
ZigpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRh
ZDVjMGRkMTBiY2E4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyIGZpbmFsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyCisg
ICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcihXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0OworCisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKCk7CisKKyAgICB1c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5nIEludGVy
cnVwdGlvblR5cGUgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVw
dGlvblR5cGU7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7
CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6OlNob3VsZFBhdXNlOworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWly
UGxheVZpZGVvID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0Fp
clBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworcHJpdmF0ZToKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZWRpYVNlc3Np
b25IZWxwZXIKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9p
ZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcworICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwg
U2hvdWxkUmVzdW1lKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChT
dXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIHZv
aWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFy
Z2V0cyk7CisgICAgdm9pZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURp
ZENoYW5nZShTaG91bGRQYXVzZSk7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KFN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dCYmKTsKKworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGUzYzU3Y2RmOTYzNTljOGYzNzhiNTkxMDQ2N2E4MjcxYzgxZGQxNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisjIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIgTm90UmVmQ291bnRlZCB7CisgICAgUmVjZWl2ZWRJbnRlcnJ1cHRpb24oZW51bTpib29sIFdl
YktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIGVu
dW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUmVzdW1lIHNo
b3VsZFJlc3VtZSkKKyAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoZW51bTpib29s
IFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3Vz
cGVuZGVkVW5kZXJMb2NrKQorICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGVudW06
Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2Nr
IHN1c3BlbmRlZFVuZGVyTG9jaykKKyAgICBBcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgp
CisgICAgQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQorICAgIEV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6SGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQorICAgIElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IGlzUGxh
eWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQorICAgIEFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uo
ZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTaG91bGRQYXVzZSBz
aG91bGRQYXVzZSkKKyAgICBBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9y
dHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdl
dCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMjhlZDcwYzc1YmQ5YjI5MDRhNmYxM2FjOGI3ODUxZTA5OTE3NzczYy4uZjMxYmVhOGNiOTI1
ZjRjMzllMDJmM2Q0OTVmNTE4NjgyZjgwOGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTc5LDYgKzE3OSwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZh
Y3RvcnkuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9H
X1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQog
I2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Np
b25JRD0lIiBQUkl1NjQgIl0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NF
U1NJT05fSUQsICMjX19WQV9BUkdTX18pCiAKQEAgLTIwMTEsNiArMjAxNSwxMyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JN
ZWRpYSkKICAgICBlbHNlCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihB
dWRpb1Nlc3Npb246OmNyZWF0ZSgpKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBpZiAodXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQorICAgICAgICBNZWRpYVNlc3Npb25I
ZWxwZXI6OnNldFNoYXJlZEhlbHBlcihtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcj4oKnRoaXMpKTsKKyAgICBlbHNlCisgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVz
ZXRTaGFyZWRIZWxwZXIoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="408146"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392803</attachid>
            <date>2020-03-06 16:32:34 -0800</date>
            <delta_ts>2020-03-07 08:49:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208727-20200306163233.patch</filename>
            <type>text/plain</type>
            <size>107364</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3NTRlM2ZiMGM4YTFi
YmJhMmZiYjU1NWJkMTc1ZDk2NWMzNjc1Mi4uNzYzMTExNzhlOGFhNjc2ODJhNzVlOTI4ZTI5MmU3
Zjk5MTQ4Zjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29k
ZSBvdXQgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyBhbmQgaW50byBhIG5ldworICAgICAgICBj
bGFzcyBNZWRpYVNlc3Npb25IZWxwZXIsIHdoaWNoIGlzIGN1cnJlbnRseSBpT1Mgb25seS4gVGhl
IGFic3RyYWN0IGJhc2UgY2xhc3MKKyAgICAgICAgd2lsbCBiZSBvdmVycmlkZW4gYnkgV2ViS2l0
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tLgorICAgICAg
ICAoc2hhcmVkSGVscGVySW5zdGFuY2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpyZXNldFNoYXJlZEhl
bHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcik6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENsaWVudCk6CisgICAgICAgIChNZWRpYVNl
c3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6On5NZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJ
bnRlcnJ1cHRpb24pOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZDpdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKToK
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0pOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NU
YXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y2FyUGxheVNlcnZl
ckRpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
Ol0pOiBEZWxldGVkLgorCiAyMDIwLTAzLTA2ICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGluaWFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTZXQgaW1wb3J0YW50IEVHTCBjb250ZXh0IGF0dHJp
YnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMTU1NzU5NDBmNTlkYTYyNTlhYmQ0ZmIxZWViNTk3NmFjMGFiYjRk
YS4uYTdjNGViNTYyZTdiYmJkMjQ5ZDg1YzMwMTQ1NTg0YWRmOWNjMTRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MCBAQAorMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVUF0gTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29kZSBpbnRvIHRo
ZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFkZCBhIG5ldyBjbGFzcyBwYWlyIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci9Qcm94eS4K
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVNl
c3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6
c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnJlY2VpdmVk
SW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojph
cHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg6IEFkZGVk
LgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXRE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFj
dGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlh
KToKKwogMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIHVuaWZpZWQgYnVpbGQgZml4OyBJbmNsdWRlIHdoYXQgeW91IHVzZSwg
aW4gdGhpcyBjYXNlOiBGcmFtZUluZm9EYXRhLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCBjZDZiMTNhOTdkNzA1YjlmZmQxMzYxYmE0ZTc4NTA2NGQ5NGE1NTUxLi5hZTc5M2Y0MmRlZGMx
YjU5OGUxYzIwYjQ5MWExMDUxMWFiZDFjNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTE3MSw2ICsxNzEsNyBAQCBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1
ZGlvL21hYy9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2QyZGRlNjVmNDA1ZGY0
ZmFkNzQwMDEwMjA5NjRlMjlmOGMzOGMwYS4uMGFhNWQwNjNkZTU3MmJkN2I5MmViZDY5MjkyN2I2
OWQ5MTRkMDQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDE1Miw2ICs0MTUyLDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3ODAw
QTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGls
aXRpZXNDb2NvYS5oICovOyB9OwogCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9T
ZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsK
IAkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25I
ZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICov
OyB9OworCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3
NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAw
RkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAq
LzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3
QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMkUx
N0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAv
KiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CkBAIC0xMzg5NCw2ICsxMzg5Niw4IEBACiAJ
CUNEODcxQzY4MUZCNTJCNjkwMEYwQjk2NSAvKiBJU09Cb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSVNPQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4NzFDNjkxRkI1MkI2OTAwRjBCOTY1IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDg3MUM2QTFGQjUyQjZBMDBGMEI5NjUgLyogSVNPT3JpZ2luYWxG
b3JtYXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPT3Jp
Z2luYWxGb3JtYXRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3
NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDhBN0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q4QTdCQkExOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2MUQy
MzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjIxMyw2ICsyNjIxNyw4IEBACiAJCQkJ
Q0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8sCiAJ
CQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICovLAog
CQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8sCisJ
CQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICov
LAorCQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1Mu
bW0gKi8sCiAJCQkJMDc2MzhBOTcxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MuaCAqLywKIAkJCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbSAqLywKIAkJCSk7CkBAIC0zMTU0NCw2ICszMTU1MCw3IEBACiAJCQkJQTE3
RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9u
RXZlbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTZGNUVDODFCNTg3
MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRl
cnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNC
RTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3
MTQsNiArMzM3MjEsNyBAQAogCQkJCTE1MDUyNEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQjEy
NEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8q
IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3MUI1
ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIg
LyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzNzJlZDBhZWFiZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXQ7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5NZWRpYVNlc3Npb25IZWxwZXJDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNz
IEludGVycnVwdGlvblR5cGUgOiBib29sIHsgQmVnaW4sIEVuZCB9OworICAgIGVudW0gY2xhc3Mg
U2hvdWxkUmVzdW1lIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2
ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSA9IDA7CisKKyAg
ICBlbnVtIGNsYXNzIFN1c3BlbmRlZFVuZGVyTG9jayA6IGJvb2wgeyBObywgWWVzIH07CisgICAg
dmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRl
ckxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9u
V2lsbEJlY29tZUluYWN0aXZlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpID0gMDsKKworICAgIGVudW0gY2xhc3MgSGFzQXZhaWxhYmxlVGFyZ2V0
cyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpID0gMDsKKworICAgIGVu
dW0gY2xhc3MgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNob3Vs
ZFBhdXNlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlQXVkaW9S
b3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSkgPSAwOworCisgICAgZW51bSBjbGFzcyBTdXBwb3J0
c0FpclBsYXlWaWRlbyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFjdGl2
ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmKSA9IDA7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVNlc3Np
b25IZWxwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0
YXRpYyBNZWRpYVNlc3Npb25IZWxwZXImIHNoYXJlZEhlbHBlcigpOworICAgIHN0YXRpYyB2b2lk
IHNldFNoYXJlZEhlbHBlcihVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYmKTsKKyAgICBz
dGF0aWMgdm9pZCByZXNldFNoYXJlZEhlbHBlcigpOworCisgICAgTWVkaWFTZXNzaW9uSGVscGVy
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfk1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgYWRkQ2xpZW50KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOworICAg
IHZvaWQgcmVtb3ZlQ2xpZW50KE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOworCisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgPSAwOworCisgICAgYm9v
bCBpc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzQ291bnQ7IH0KKyAgICBib29sIGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGU7IH0KKyAgICBib29sIGFjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvOyB9Cisg
ICAgYm9vbCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYWtI
YXNoU2V0PE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudD4gbV9jbGllbnRzOworICAgIHVpbnQzMl90
IG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzRXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hY3RpdmVW
aWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCB7IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25IZWxwZXJJT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2ZDliMmFlYjJjNTk3NGJkMTY4NTAwMTlk
ZGZkMjg3Yzg5M2JkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTAsMCArMSw2MDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhU2Vzc2lvbkhlbHBl
cklPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCAiTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgiCisjaW1wb3J0ICJXZWJDb3Jl
VGhyZWFkUnVuLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KKyNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVlJvdXRlRGV0ZWN0b3IuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9DZWxlc3RpYWxT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Vu
aXF1ZVJlZi5oPgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
KyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorCitXRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24i
OworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmlj
YXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24iOworCisjaWYgSEFWRShDRUxFU1RJQUwpCitTT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQorU09GVF9MSU5LX0NMQVNTX09QVElP
TkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQorU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0
aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwg
TlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3Rl
bUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1D
b250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVy
X0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwg
TlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURl
c2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCisjZW5k
aWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzsKKworQGludGVyZmFjZSBXZWJNZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7Cisg
ICAgTWVkaWFTZXNzaW9uSGVscGVyaU9TKiBfY2FsbGJhY2s7CisKKyNpZiAhUExBVEZPUk0oV0FU
Q0hPUykKKyAgICBSZXRhaW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKKyNl
bmRpZgorICAgIGJvb2wgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzOworICAgIGJvb2wgX3N0YXJ0
TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nOworfQorCistIChpZClpbml0V2l0aENhbGxi
YWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNhbGxiYWNrOworCistICh2b2lkKWNsZWFyQ2Fs
bGJhY2s7CistICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b247CistICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb247CistICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKEJPT0wpaGFz
V2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlOworCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpCistICh2
b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7CistICh2b2lkKXN0b3BNb25pdG9yaW5n
QWlyUGxheVJvdXRlczsKKyNlbmRpZgorCitAZW5kCisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNlc3Npb25IZWxwZXIgeworcHVibGljOgorICAgIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUygpOworICAgIH5NZWRpYVNlc3Npb25IZWxwZXJpT1MoKTsKKwor
ICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB2
b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJy
dXB0aW9uVHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRSZXN1bWUpOworICAg
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgdm9pZCBhcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHZvaWQg
Y2FyUGxheVNlcnZlckRpZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChP
cHRpb25hbDxib29sPiYmKTsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0
aW9uYWw8Ym9vbD4mJik7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlv
bmFsPGJvb2w+JiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdXNpbmcgSGFzQXZhaWxhYmxl
VGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SGFzQXZhaWxhYmxlVGFyZ2V0czsK
KyAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJ
bnRlcnJ1cHRpb25UeXBlOworICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9
IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0Owor
ICAgIHVzaW5nIFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQ
YXVzZTsKKyAgICB1c2luZyBTaG91bGRSZXN1bWUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlNob3VsZFJlc3VtZTsKKyAgICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6U3VwcG9ydHNBaXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3VzcGVu
ZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxv
Y2s7CisKKyAgICB2b2lkIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwor
CisgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Cisg
ICAgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQg
c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOworCisgICAgUmV0YWluUHRyPFdl
Yk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpjT2JzZXJ2ZXI7CisjaWYgSEFWRShDRUxFU1RJQUwp
CisgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07CisjZW5k
aWYKK307CisKK3N0YXRpYyBVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPiYgc2hhcmVkSGVs
cGVySW5zdGFuY2UoKQoreworICAgIE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxNZWRpYVNlc3Np
b25IZWxwZXI+PiBoZWxwZXIgPSBtYWtlVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcmlPUz4o
KTsKKyAgICByZXR1cm4gaGVscGVyOworfQorCitNZWRpYVNlc3Npb25IZWxwZXImIE1lZGlhU2Vz
c2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkSGVscGVySW5z
dGFuY2UoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVkSGVscGVy
KCkKK3sKKyAgICBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpID0gbWFrZVVuaXF1ZVJlZjxNZWRpYVNl
c3Npb25IZWxwZXJpT1M+KCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpzZXRTaGFy
ZWRIZWxwZXIoVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4mJiBoZWxwZXIpCit7CisgICAg
c2hhcmVkSGVscGVySW5zdGFuY2UoKSA9IFdURk1vdmUoaGVscGVyKTsKK30KKwordm9pZCBNZWRp
YVNlc3Npb25IZWxwZXI6OmFkZENsaWVudChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2Ns
aWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVD
bGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7
Cit9CisKK01lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKK3sK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX29iamNPYnNlcnZlciA9IGFk
b3B0TlMoW1tXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhp
c10pOworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29iamNPYnNl
cnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5l
Y3RlZChXVEY6Om51bGxvcHQpOworI2VuZGlmCit9CisKK01lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgW21fb2JqY09ic2VydmVyIGNsZWFyQ2FsbGJhY2tdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQ
cmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKK3sKKyNpZiBIQVZFKENFTEVTVElBTCkK
KyAgICBpZiAobV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9IHRydWU7CisKKyAgICBpZiAoIWNh
bkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0ZUZyb20o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW1tn
ZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxlcl0gc2V0
QXR0cmlidXRlOkAocGlkKSBmb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJp
dEFwcGxpY2F0aW9uU3RhdGVGcm9tKCkgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHNldCB1cCBQSUQgcHJveHlpbmc6ICVzIiwg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7CisjZW5kaWYKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkK
K3sKKyAgICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9vYmpjT2Jz
ZXJ2ZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0NvdW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21f
b2JqY09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCisjaWYgSEFWRShDRUxFU1RJQUwpCit2b2lkIE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQoKQoreworICAgIHVwZGF0ZUNhclBsYXlJ
c0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29u
bmVjdGVkKQoreworICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKKyAgICAgICAgc2V0SXNQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVlKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9s
bGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7CisgICAgICAgIHNldElzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVtQ29udHJv
bGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0
QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBib29sVmFs
dWVdKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWluZ1RvQXV0
b21vdGl2ZUhlYWRVbml0KGJvb2wgaXNQbGF5aW5nKQoreworICAgIGlmIChpc1BsYXlpbmcgPT0g
bV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IGlzUGxheWluZzsKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmlzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0RGlkQ2hhbmdlKG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPyBQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdDo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9S
b3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHNob3VsZFBhdXNlKQoreworICAgIGZvciAo
YXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShzaG91bGRQYXVzZS52YWx1ZU9yKGZhbHNlKSA/IFNob3VsZFBhdXNlOjpZZXMg
OiBTaG91bGRQYXVzZTo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0
aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWlyUGxheVZp
ZGVvKQoreworICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3Vw
cG9ydHNBaXJQbGF5VmlkZW8udmFsdWVPcihmYWxzZSk7CisKKyAgICBhdXRvIHBsYXliYWNrVGFy
Z2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRdKTsKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2UobV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8g
PyBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86Ok5vLCBw
bGF5YmFja1RhcmdldC5jb3B5UmVmKCkpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OkludGVycnVwdGlvblR5cGUgdHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRS
ZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1l
KTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZCh1bmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5h
Y3RpdmUoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVy
TG9jayB1bmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQodW5kZXJMb2NrKTsK
K30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFz
V2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWlsYWJsZVRh
cmdldHM6Ok5vKTsKK30KKworQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgor
CistIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNhbGxiYWNr
Cit7CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxs
YmFja10iKTsKKworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlmaWNhdGlv
bkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwor
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0
aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6
W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisKKyAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlL
aXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxd
OworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOlBB
TDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uKCkg
b2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25X
aWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFt
ZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9s
bGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheVNlcnZlckRpZWQ6KSBu
YW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlmaWNhdGlv
bigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBs
YXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbigpKQorICAgICAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlJc0Nvbm5lY3RlZERpZENo
YW5nZTopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENo
YW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkKKyAgICAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9S
b3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworI2VuZGlmCisKKyAgICAv
LyBOb3cgcGxheWluZyB3b24ndCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxpdmVyeSBv
ZiByZW1vdGUgY29udHJvbCBldmVudHMuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0g
YmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKKyAgICAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIH0pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxs
b2NdIik7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoIXB0aHJlYWRfbWFpbl9u
cCgpKSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3RvcildICgpIG11dGFibGUgewor
ICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBkaXBhdGNoZWQgdG8gVUkg
dGhyZWFkLiIpOworICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAg
ICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POwor
ICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5jbGVhcigpOworICAgICAgICAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgX3JvdXRl
RGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87CisjZW5kaWYKKworICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2Vs
Zl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJhY2sKK3sK
KyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSIp
OworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNB
dmFpbGFibGUKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNX
aXJlbGVzc1RhcmdldHNBdmFpbGFibGVdIik7CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpCisgICAg
cmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgpLm11bHRpcGxlUm91dGVzRGV0ZWN0ZWQ7CisjZWxz
ZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKFdBVENIT1MpCist
ICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoX21vbml0b3Jp
bmdBaXJQbGF5Um91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBfbW9uaXRvcmluZ0FpclBs
YXlSb3V0ZXMgPSB0cnVlOworCisgICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVz
UGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9yb3V0ZURldGVjdG9yKSB7Cisg
ICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IFlFUzsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91
dGVzUGVuZGluZyA9IHRydWU7CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgY2FsbE9uV2ViVGhy
ZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNlbGYtPl9yb3V0
ZURldGVjdG9yKTsKKworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKSB7Cisg
ICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgICAgIHByb3Rl
Y3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91dGVEZXRl
Y3Rvckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3JvdXRl
RGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVkU2VsZi0+X21v
bml0b3JpbmdBaXJQbGF5Um91dGVzOworICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgpIHNlbGVjdG9y
OkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5hbWU6QVZSb3V0
ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmpl
Y3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOworCisgICAgICAgICAgICBw
cm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKCk7CisgICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAg
IH0KKworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRl
c1BlbmRpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworLSAodm9pZClzdG9wTW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3Rv
cE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgX21vbml0b3JpbmdBaXJQbGF5Um91
dGVzID0gZmFsc2U7CisgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFi
bGVkID0gTk87Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdBVENIT1MpCisKKy0gKHZvaWQpaW50
ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5nIElu
dGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5
cGU7CisgICAgdXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpT
aG91bGRSZXN1bWU7CisKKyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRpb24gdXNl
ckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXldIHVu
c2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBJbnRlcnJ1cHRpb25UeXBlIGludGVycnVwdGlvblR5
cGUgPSAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCA/IEludGVy
cnVwdGlvblR5cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6OkJlZ2luKTsKKyAgICBTaG91bGRS
ZXN1bWUgc2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpObzsKKworICAgIExPRyhNZWRpYSwg
Ii1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBlID0gJWkiLCAoaW50
KXR5cGUpOworCisgICAgaWYgKGludGVycnVwdGlvblR5cGUgPT0gSW50ZXJydXB0aW9uVHlwZTo6
RW5kICYmIFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVkaW9TZXNz
aW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0gQVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCisgICAgICAgIHNob3VsZFJl
c3VtZSA9IFNob3VsZFJlc3VtZTo6WWVzOworCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpbnRl
cnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRv
KiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxi
YWNrLT5yZWNlaXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWUp
OworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRl
ckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKwor
ICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdIik7
CisKKyAgICBhdXRvIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJ
bmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV0gPyBT
dXNwZW5kZWRVbmRlckxvY2s6OlllcyA6IFN1c3BlbmRlZFVuZGVyTG9jazo6Tm87CisgICAgY2Fs
bE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
cmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQorICAgICAg
ICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1c3BlbmRl
ZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VEX1BBUkFN
KG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAg
ICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIH0p
OworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKwor
ICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7CisK
KyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBj
YWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIH0pOworfQorCistICh2b2lk
KXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisgICAgaWYgKCFf
Y2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNB
dmFpbGFibGVEaWRDaGFuZ2VdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSgpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5nIFN1c3Bl
bmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJM
b2NrOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kXSIpOworCisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlv
biB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFs
dWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNwZW5kZWRVbmRlckxvY2s6Ok5vOwor
ICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVk
U2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKENFTEVTVElBTCkKKy0g
KHZvaWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7
CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwg
Ii1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0iKTsKKyAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2VydmVyRGllZCgpOworICAgIH0pOwor
fQorCistICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIGlmIChub3RpZmlj
YXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3Rp
ZmljYXRpb25QYXJhbWV0ZXIoKSkgeworICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25u
ZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsKKyAg
ICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAgICAgICAgICAgY2FyUGxheUlzQ29u
bmVjdGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07CisgICAgfQorCisgICAg
Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNhclBsYXlJ
c0Nvbm5lY3RlZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT51cGRhdGVDYXJQ
bGF5SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKKyAgICB9KTsKK30K
KworLSAodm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxib29sPiBzaG91bGRQ
YXVzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJf
QWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVz
ZSgpKSB7CisgICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlmaWNhdGlvbi51
c2VySW5mbyB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsKKyAgICAgICAg
aWYgKG5zU2hvdWxkUGF1c2UpCisgICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5zU2hvdWxkUGF1
c2UuYm9vbFZhbHVlOworICAgIH0KKworICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWlyUGxh
eVZpZGVvOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0
cmlidXRlKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5
X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAgICAgICBOU0RpY3Rpb25hcnkqIHBp
Y2tlZFJvdXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVt
Q29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRS
b3V0ZUF0dHJpYnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tpbmRPZkNsYXNz
Ok5TRGljdGlvbmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAgIE5TTnVtYmVyKiBuc1N1cHBvcnRz
QWlyUGxheVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJv
bGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKV07Cisg
ICAgICAgICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKKyAgICAgICAgICAgICAgICBz
dXBwb3J0c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9vbFZhbHVlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91bGRQYXVzZSA9
IFdURk1vdmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdURk1vdmUoc3Vw
cG9ydHNBaXJQbGF5VmlkZW8pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY2FsbGJh
Y2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5h
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsKKyAgICAgICAg
ICAgIGNhbGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc3VwcG9ydHNB
aXJQbGF5VmlkZW8pKTsKKyAgICAgICAgfQorICAgIH0pOworCit9CisjZW5kaWYgLy8gSEFWRShD
RUxFU1RJQUwpCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNWRmMjBh
N2FhMTRjMWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4uNGRjOGZmM2MxMzJhYzU1OThiMjM5
Y2M0ZDIyM2U2MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
SGVscGVySU9TLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxOCArNDIsMTMgQEAgZXh0ZXJuIE5TU3Ry
aW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MgOiBwdWJs
aWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1MKKyAgICA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKKyAgICAsIHB1YmxpYyBN
ZWRpYVNlc3Npb25IZWxwZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpIG92
ZXJyaWRlOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZvaWQgY2FyUGxheVNlcnZlckRpZWQo
KTsKLSAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsK
LSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7Ci0g
ICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOwotI2Vu
ZGlmCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQgKzYyLDIyIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKSBmaW5h
bDsKICAgICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24m
LCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAorICAgIC8vIE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0
aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQgYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7CisgICAg
dm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2
b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MiOyB9CiAjZW5k
aWYKIAotICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09ic2VydmVy
OwotI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCB7
IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3N2FkODYyNGNiNDViZGYzOTgzZWM4
ZC4uN2M1MTViNTg1ZDRhNmJkNmFlMDlhNzQwY2U2NjQzYzkzMDE3NDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0KQEAgLTM1LDY3ICszNSwxMCBAQAogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQgIldlYkNvcmVU
aHJlYWRSdW4uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgotI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgotI2ltcG9y
dCA8cGFsL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
LSNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24i
OwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmlj
YXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi1TT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQotU09GVF9MSU5LX0NMQVNTX09QVElP
TkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0
aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENl
bGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwg
TlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3Rl
bUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0
cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1D
b250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVy
X0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwg
TlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURl
c2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCi0jZW5k
aWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViTWVkaWFTZXNz
aW9uSGVscGVyIDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MqIF9jYWxs
YmFjazsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAg
ICBSZXRhaW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKLSNlbmRpZgotICAg
IGJvb2wgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgIGJvb2wgX3N0YXJ0TW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAodm9pZCljbGVhckNhbGxiYWNrOwot
LSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAo
dm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tIChCT09MKWhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0o
V0FUQ0hPUykKLS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKLS0gKHZvaWQp
c3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlmCi0KLUBlbmQKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
PiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgpCkBAIC0xMDYsMjIgKzQ5LDEy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSgpCiB7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBh
ZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRo
aXNdKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmVzZXRSZXN0cmljdGlv
bnMoKTsKLQotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3Rl
ZChXVEY6Om51bGxvcHQpOwotI2VuZGlmCiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6On5N
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFja107Ci0gICAgbV9vYmpjT2JzZXJ2
ZXIgPSBuaWw7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIGlmIChtX2lzTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJl
ZEhlbHBlcigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKIH0KIAogdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCkBAIC0xNDMsOSArNzYsNyBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkKIAogYm9v
bCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKQog
ewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBbbV9vYmpjT2Jz
ZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCku
aXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCkBAIC0xNTUs
MTYgKzg2LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxl
c3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJuIHNlc3Npb24ucmVxdWlyZXNQbGF5
YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0pOwogCi0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25pdG9yaW5n
KTsKKyAgICBpZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1faXNNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMpCisgICAgICAgIHJldHVybjsKIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSByZXF1aXJlc01vbml0b3Jpbmc7
CisKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01vbml0b3JpbmcgPSAi
LCByZXF1aXJlc01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJlcXVpcmVzTW9uaXRvcmluZykKLSAg
ICAgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOworICAg
ICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
KyAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdG9wTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAtMTc0LDIxICsxMDYsMTMgQEAgdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
SWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsK
LSAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisgICAgTWVkaWFTZXNzaW9u
SGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBy
ZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQogewotI2lmIEhB
VkUoQ0VMRVNUSUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0lu
aGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkgc2hh
cmVkQVZTeXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoKSkgZm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNh
dGlvblN0YXRlRnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBX
VEZMb2dBbHdheXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2VuZGlmCisgICAgTWVkaWFTZXNzaW9u
SGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBy
ZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9u
LCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5Q2FsbGluZ1VwZGF0ZU5vd1BsYXlp
bmcpCkBAIC0yMDEsNDUgKzEyNSwyNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNl
c3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3NpbwogI2VuZGlm
CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhdmVU
YXJnZXRzKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgYm9vbCBo
YXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVd
OwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2ZVRhcmdldHMpOwogCiAgICAgZm9y
RWFjaFNlc3Npb24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAgICBzZXNz
aW9uLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJnZXRzKTsK
KyAgICAgICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSho
YXZlVGFyZ2V0cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMpOwogICAgIH0pOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYgSEFWRShDRUxFU1RJQUwpCi12b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2ZXJEaWVkKCkKK3ZvaWQgTWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkK
IHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIHVwZGF0ZUNhclBsYXlJc0Nv
bm5lY3RlZChXVEY6Om51bGxvcHQpOworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0KHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ6Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlQ2Fy
UGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVkKQordm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3Vs
ZFBhdXNlIHNob3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKLSAg
ICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVk
LnZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgc2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9s
bGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIHNldElzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVtQ29udHJv
bGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0
QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBib29sVmFs
dWVdKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRl
RGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCi17Ci0gICAgaWYgKCFzaG91
bGRQYXVzZSB8fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAgICBpZiAoc2hvdWxkUGF1c2UgIT0g
U2hvdWxkUGF1c2U6OlllcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yRWFjaFNlc3Npb24o
W10oYXV0byYgc2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTUyLDYzIEBAIHZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYm
IHNob3VsZFBhCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0
aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWlyUGxheVZp
ZGVvKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hh
bmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsIHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAgICBhdXRvIG5vd1BsYXlpbmdTZXNz
aW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIGlmICghbm93UGxheWluZ1Nl
c3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQgPSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKLSAgICBhdXRvIHBs
YXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0
QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRl
eHRdKTsKLSAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQoc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOworICAgIG5vd1BsYXlpbmdTZXNzaW9uLT5z
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0c0FpclBsYXlWaWRlbyA9PSBTdXBw
b3J0c0FpclBsYXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0UGxheWJh
Y2tUYXJnZXQoV1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwogfQotI2VuZGlmCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhlbHBlcgot
Ci0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFj
awotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2Fs
bGJhY2tdIik7Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIE5TTm90aWZp
Y2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihpbnRl
cnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIG9i
amVjdDpbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdXTsKLQot
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6Omdl
dF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0
Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihh
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVy
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5h
bWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRp
b24oKSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRl
ciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6
KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNv
bnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKLSAgICAgICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2VydmVyRGll
ZDopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZp
Y2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJf
Q2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29ubmVjdGVk
RGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVk
RGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5
c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpKQot
ICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0jZW5kaWYKLQot
ICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhlIGRlbGl2
ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNh
dGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKLSAgICAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGRlYWxsb2NdIik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENI
T1MpCi0gICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdURk1vdmUoX3Jv
dXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgInNhZmVs
eVRlYXJEb3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKLSAgICAgICAgICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5nZXQoKS5y
b3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3IuY2xl
YXIoKTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgfSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9u
RW5hYmxlZCA9IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0K
LQotLSAodm9pZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBfY2FsbGJhY2sgPSBuaWw7Ci19Ci0K
LS0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCi17Ci0gICAgTE9HKE1lZGlhLCAi
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSIpOwot
I2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4g
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNEZXRlY3RlZDsKLSNlbHNlCi0gICAg
cmV0dXJuIE5POwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRG
T1JNKFdBVENIT1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAg
ICBpZiAoX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBf
bW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0gICAgaWYgKF9zdGFydE1vbml0b3Jp
bmdBaXJQbGF5Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9yb3V0
ZURldGVjdG9yKSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9u
RW5hYmxlZCA9IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9zdGFydE1vbml0
b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0KLSAgICBMT0coTWVkaWEsICItW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0g
ICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIXByb3Rl
Y3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJv
dGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxm
LmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5n
ZTopIG5hbWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5v
dGlmaWNhdGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOwot
Ci0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9y
aW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClz
dG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxh
eVJvdXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAgX21vbml0
b3JpbmdBaXJQbGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91
dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYgLy8gSEFWRShNRURJQV9QTEFZRVIp
ICYmICFQTEFURk9STShXQVRDSE9TKQotCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2st
PndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5
OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVd
OwotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQpdHlwZSk7
Ci0KLSAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCAm
JiBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNz
aW9uSW50ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwotCi0gICAgY2FsbE9uV2ViVGhyZWFk
T3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCB0eXBlLCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogY2FsbGJhY2sgPSBw
cm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb25UeXBlQmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFjay0+YmVnaW5JbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwotCi0gICAgfSk7
Ci19CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZl
ZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBzaG91bGRS
ZXN1bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBpZiAoIV9j
YWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCisg
ICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxvY2sgPSBb
W1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVkVW5kZXJM
b2NrIl0gYm9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVuZGVkVW5k
ZXJMb2NrXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0
ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKLX0KKyAgICBh
dXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9G
bGFnczsKIAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQot
ICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVw
dGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7Ci0KLSAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlmICh0eXBlID09IEludGVycnVwdGlv
blR5cGU6OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGVuZEludGVycnVw
dGlvbihmbGFncyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3Vz
cGVuZGVkVW5kZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0g
ICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0
aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFj
dGl2ZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVu
ZGVyTG9jazo6WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENo
YW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWly
UGxheVJvdXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3Rl
ZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotLSAodm9pZClhcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIGlmICgh
X2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkK
KyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0g
W1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVy
TG9jayJdIGJvb2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVu
ZGVyTG9ja10oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVj
dGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKKyAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3Vz
cGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotI2lmIEhB
VkUoQ0VMRVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVyRGllZDooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlmICh3aWxs
SWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0co
TWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpdIik7Ci0g
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNw
YXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgp
IG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5f
Y2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQoKTsKLSAg
ICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2lsbEJlY29t
ZUluYWN0aXZlKCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIGlmICghX2NhbGxiYWNrKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBjYXJQbGF5SXNDb25uZWN0ZWQ7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJ
c0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7Ci0gICAgICAgIE5TTnVtYmVyICpu
c0NhclBsYXlJc0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSB2YWx1ZUZvcktl
eTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFy
YW1ldGVyKCldOwotICAgICAgICBpZiAobnNDYXJQbGF5SXNDb25uZWN0ZWQpCi0gICAgICAgICAg
ICBjYXJQbGF5SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXNDb25uZWN0ZWQgYm9vbFZhbHVlXTsK
LSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhclBsYXlJc0Nvbm5lY3RlZCA9IFdU
Rk1vdmUoY2FyUGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8q
IGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJh
Y2stPnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3ZlKGNhclBsYXlJc0Nvbm5lY3RlZCkp
OwotICAgIH0pOwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYgKCFfY2FsbGJhY2spCi0gICAgICAg
IHJldHVybjsKLQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIE9wdGlvbmFs
PGJvb2w+IHNob3VsZFBhdXNlOwotICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lz
dGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1l
dGVyX1Nob3VsZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1iZXIqIG5zU2hvdWxkUGF1c2UgPSBb
bm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9B
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNl
KCldOwotICAgICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAgICAgICAgICAgIHNob3VsZFBhdXNl
ID0gbnNTaG91bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQotCi0gICAgT3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJf
UGlja2VkUm91dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1JvdXRl
RGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpKSB7Ci0gICAgICAgIE5T
RGljdGlvbmFyeSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNzKCkg
c2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250
cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAgICAgICBpZiAoW3BpY2tlZFJvdXRl
IGlzS2luZE9mQ2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkgewotICAgICAgICAgICAgTlNOdW1i
ZXIqIG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2VkUm91dGUgdmFsdWVGb3JLZXk6Z2V0
QVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBs
YXlWaWRlbygpXTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBvcnRzQWlyUGxheVZpZGVvKQotICAg
ICAgICAgICAgICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gbnNTdXBwb3J0c0FpclBsYXlWaWRl
by5ib29sVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRp
c3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiks
IHNob3VsZFBhdXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSksIHN1cHBvcnRzQWlyUGxheVZpZGVv
ID0gV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAgICAgICAg
ICAgY2FsbGJhY2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzaG91bGRQYXVz
ZSkpOwotICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoV1RG
TW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbykpOwotICAgICAgICB9Ci0gICAgfSk7Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKLUBlbmQKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDc0OWIyZGIwOWI5Njc0NmY0YTBmMWUzNGMy
MTc0MmVkZjUzZTQ2Yi4uZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2YjI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
MjcsNiArMjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMu
aW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTIyLDYgKzEyMyw3IEBAICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENSZW1vdGVDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IDk5NTAzNTEyYmE1NThiMmI0MTAwOGY1YjE2NjUwNDYwYTk1NDE0NTYuLjBiODU3MzY0
ODFlMDc1NWY4NmQ5MjVlMzA2MmU1ZGMzZTIzNjgzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTgzLDYgKzE4MywxMiBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJlY29y
ZGVyc01lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3Ry
eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAxYzNkMWEyMGVlYTNiNzM4MDAxMDJlMWQzMTk4Mzc5MDNhYTZjZDBhLi5j
YjcxNTJmYTMxNDY5NTI1MTAxOGZhZWEwNWFmMTA2MzZlMGI0NzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0yNiw2ICsyNiw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0Mikv
R1BVUHJvY2Vzcy9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21hYyBcCiAg
ICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nl
c3MvbWVkaWEvaW9zIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjIFwKICAgICAk
KFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNz
L0Nvb2tpZXMgXApAQCAtNTQsNiArNTUsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvR1BVIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzIFwK
ICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IgXApAQCAtMTY0LDYgKzE2Niw4IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXIgXAogICAgIFJlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisg
ICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eSBcCiAgICAgUmVtb3RlT2JqZWN0UmVnaXN0cnkgXAogICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQgXAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggNzFkMjA3MzFlZTViNzMyMjljNTFlYjM0ODI3MGVhYmU2OGM1Y2M3My4uMmNiMmE5NWJj
NmUzN2YzY2VmM2E5M2JiYzZjNzU2MTAxMDE1ZWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODMsNiAr
ODMsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yODksNiArMjkzLDIwIEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1ZGlvU2Vzc2lvbkNv
bXBsZXRpb24mCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIGlmICghbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94
eSkKKyAgICAgICAgbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fbWVkaWFTZXNz
aW9uSGVscGVyUHJveHk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5z
dXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKK3sKKyAgICBtZWRpYVNlc3Npb25IZWxwZXJQcm94eSgp
OworfQorI2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggODAxNTZkMWJlY2VhNmJiZTIzOGI2YTAxOGI1MGY5ODI1ZGI1OWI0NC4uMzY4
YjBiZjY2YmI4NWE5ZTRjYWZhMmNiNWE4MmU2NzJjY2MwNTc0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01MSw2
ICs1MSw3IEBAIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKK2NsYXNzIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlQXVk
aW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTg3LDcgKzg4LDkgQEAgcHVibGljOgogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0
b3J5UHJveHkoKTsKICNlbmRpZgotCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgbWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKTsKKyNl
bmRpZgogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSgpOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NF
U1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyJiBhdWRpb1Nlc3Npb25N
YW5hZ2VyKCk7CkBAIC0xMjQsNiArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVB
dWRpb1Nlc3Npb24oRW5zdXJlQXVkaW9TZXNzaW9uQ29tcGxldGlvbiYmKTsKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBl
cigpOworI2VuZGlmCisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOwpA
QCAtMTY3LDYgKzE3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBV
U0UoQVVESU9fU0VTU0lPTikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHk+IG1fYXVkaW9TZXNzaW9uUHJveHk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eT4g
bV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVhYjQxNzJlZDMxNDdmMjZh
OTAzN2RiYzk4ODVhOTdmMWU4MDljYzYuLmQ4N2Q3NjEzNGFlZWMxYThhYzA3NWU1Njk5YTI5MWFm
MzkxMjc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw5IEBA
IG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3Nh
Z2UgewogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKTsK
ICNlbmRpZgogICAgIEVuc3VyZUF1ZGlvU2Vzc2lvbigpIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1v
dGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9ub3VzCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbnN1cmVNZWRpYVNlc3Npb25IZWxwZXIoKQor
I2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNjBiNDRlZTNkMWJiNjUzZGNj
YjE4MzkxZjVkZTM4ZTNhM2Q5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcApAQCAt
MCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQoreworICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuYWRkQ2xpZW50KCp0aGlzKTsKK30K
KworUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6On5SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eSgpCit7CisgICAgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzID0gdHJ1
ZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHk6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9pc01vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc01vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcyA9IGZhbHNlOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVk
SGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworfQorCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KGludCBwaWQpCit7CisgICAgaWYgKG1fcHJvdmlkZWRBcHBsaWNhdGlvblBJRCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wcm92aWRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQocGlkKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6cmVj
ZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hv
dWxkUmVzdW1lKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpSZWNlaXZlZEludGVycnVwdGlvbih0eXBl
LCBzaG91bGRSZXN1bWUpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
IHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayksIHsgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgbV9ncHVDb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayksIHsg
fSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9u
V2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRpb25XaWxs
QmVjb21lSW5hY3RpdmUoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG1fZ3B1Q29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJsZVRhcmdldHMpCit7CisgICAgbV9n
cHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OkV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhc0F2YWls
YWJsZVRhcmdldHMpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRv
bW90aXZlSGVhZFVuaXQgcGxheWluZykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SXNQbGF5aW5nVG9B
dXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UocGxheWluZyksIHsgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hv
dWxkUGF1c2Ugc2hvdWxkUGF1c2UpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZUF1ZGlvUm91
dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldD4mJiB0YXJnZXQpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91dGVEaWRD
aGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSwgeyB9
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4NTM5N2RhMzIwZjIxMWFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFTZXNzaW9uSGVscGVySU9TLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eQorICAgIDogcHVibGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudAor
ICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRCgpOworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSgpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
OworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpOworCisgICAg
Ly8gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgdm9pZCByZWNlaXZlZEludGVycnVwdGlv
bihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpIGZpbmFsOworICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7CisgICAg
dm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZp
bmFsOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKSBmaW5hbDsKKyAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzKSBm
aW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIGJvb2wgbV9wcm92aWRlZEFwcGxpY2F0aW9uUElE
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgeyBmYWxz
ZSB9OworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbjsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI2YzQ4NTE3YmFiZWE4YTg0NGJmNWRhZDQ3NWNl
N2ZmMzk5OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCittZXNzYWdlcyAtPiBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTdGFydE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCisgICAgU3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
cygpCisgICAgUHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IDEwNTZiOWVkZTU0YmFhYWUyYjI5YTA1NjdhODVmNmExOTQ4
OGJmZGQuLjFjOTI0NWUwYjlmNGJiYzJiODBkN2UzY2MwNGVmZDIwM2Q4ZTA0Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtNDAsNiArNDAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC01NjAsNiArNTYxLDcgQEAgV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVk
aWFTdHJhdGVneS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCBlZDlmNDRiYjlmMjJlM2MyNGYxZDJkOTgwNTgzMjFhODEwZjc5ZDMzLi5mOTMyM2Zi
OTM5NjA5OGE5OGRmOTZmNmJkNjJkMDE2MmQ2ZGY4Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC02NjIsNiArNjYyLDggQEAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzgwNTk2YjUzN2VkOGZkMjYyY2U1M2Q1OTFiYmYxYjNkNTczMTA1Ny4u
OGMxOTA4YzRhZGVlMWM4YTc2ODE5N2E3YzMxZWM5MDg3MzE3M2RiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgwLDYgKzUwODAs
MTIgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2OSAvKiBG
dWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1
bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9mdWxsc2Ny
ZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVsbHNjcmVl
bi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0EyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQjI0MTJCMTc1
MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5NTkzQzI0MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5NDUyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ2
MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAvKiBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3QzIzRkIxRUY5MDAyMURFRTMgLyog
UmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVD
RE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NDEzLDYgKzU0MTksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1MTggLyogY29jb2EgKi8sCisJCQkJQ0RBOTU5Mzky
NDEyQjE3NTAwOTEwRUVGIC8qIGlvcyAqLywKIAkJCQkwNzFCQzU3OTIzQzkzQkI5MDA2ODBEN0Mg
LyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTA3MUJDNTc3MjNDOTNCQjcw
MDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3OTIzMTMxMjM5
QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLApAQCAtNTQ2
Nyw2ICs1NDc0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
MUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICovLAorCQkJCUNEQTk1OTQ0MjQxMkM0
REEwMDkxMEVFRiAvKiBpb3MgKi8sCiAJCQkJOUIxMjI5Q0MyM0ZGMjVGMjAwOENBNzUxIC8qIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk5QjEyMjlDQjIzRkYyNUYy
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCAqLywKIAkJCQk5QjEy
MjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4gKi8sCkBAIC0xMDE1Nyw2ICsxMDE2NSwyNiBAQAogCQkJbmFtZSA9IEZ1bGxTY3Jl
ZW47CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5NTkzOTI0MTJCMTc1
MDA5MTBFRUYgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDREE5NTkzQTI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcCAqLywKKwkJCQlDREE5NTkzQjI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmggKi8sCisJCQkJQ0RBOTU5M0MyNDEyQjY0NTAwOTEwRUVGIC8qIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0RBOTU5NDQyNDEyQzREQTAw
OTEwRUVGIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RBOTU5NDYyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5LmNwcCAqLywKKwkJCQlDREE5NTk0NTI0MTJDNEY1MDA5MTBFRUYgLyogUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkuaCAqLywKKwkJCQlDREE5NTk0NzI0MTJDOTE5MDA5MTBFRUYg
LyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEQzI4
MzFBMjAxQkQ3NTYwMEU2RTc0NSAvKiBmdWxsc2NyZWVuICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlZjRkNzVmMjk4MDgwMzRmMWE0OWNiYzlhNWMyOWQ1NTE5MTg1OWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQor
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXli
YWNrVGFyZ2V0TW9jay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sK
KyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCksIHsgfSk7Cit9CisKK0lQQzo6Q29ubmVjdGlv
biYgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpjb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4g
bV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMoKQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwg
eyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXND
b3VudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eTo6U3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpLCB7IH0p
OworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRChwaWQpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6
cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUg
c2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKTsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5k
ZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQoreworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UocGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCit7
CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlKTsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5
VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYg
dGFyZ2V0Q29udGV4dCkKK3sKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gdGFyZ2V0
T2JqZWN0OworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkKKyAgICAgICAgdGFyZ2V0T2JqZWN0ID0g
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5h
dk91dHB1dENvbnRleHQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBv
cnRzQWlyUGxheVZpZGVvLCB0YXJnZXRPYmplY3QuY29weVJlZigpLnJlbGVhc2VOb25OdWxsKCkp
OworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRhZDVjMGRkMTBiY2E4NjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIGZpbmFsCisgICAgOiBw
dWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyCisgICAgLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcihXZWJQ
cm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZh
dWx0OworCisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7CisKKyAgICB1c2luZyBI
YXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpI
YXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAgdXNpbmcg
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CisgICAgdXNpbmcgU2hvdWxkUGF1
c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOworICAg
IHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2lu
ZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlN1c3BlbmRlZFVuZGVyTG9jazsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXIKKyAgICB2b2lkIHN0
YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKGludCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgcmVj
ZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKTsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwor
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgdm9pZCBh
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBpc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7
CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVv
LCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKKworICAgIFdlYlByb2Nl
c3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzYzU3Y2RmOTYzNTlj
OGYzNzhiNTkxMDQ2N2E4MjcxYzgxZGQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQor
CittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgTm90UmVmQ291bnRlZCB7Cisg
ICAgUmVjZWl2ZWRJbnRlcnJ1cHRpb24oZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKKyAgICBBcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQorICAg
IEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykK
KyAgICBBcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCisgICAgQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoKQorICAgIEV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SGFzQXZhaWxhYmxl
VGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQorICAgIElzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0RGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0KQorICAgIEFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoZW51bTpib29sIFdlYktpdDo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTaG91bGRQYXVzZSBzaG91bGRQYXVzZSkKKyAgICBBY3Rp
dmVWaWRlb1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6U3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdldCkKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjhlZDcwYzc1YmQ5YjI5MDRh
NmYxM2FjOGI3ODUxZTA5OTE3NzczYy4uZjMxYmVhOGNiOTI1ZjRjMzllMDJmM2Q0OTVmNTE4Njgy
ZjgwOGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTc5
LDYgKzE3OSwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lv
bklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQgIl0gV2Vi
UHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19WQV9BUkdT
X18pCiAKQEAgLTIwMTEsNiArMjAxNSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVBy
b2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAgICBlbHNlCiAgICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihBdWRpb1Nlc3Npb246OmNyZWF0ZSgp
KTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAodXNlR1BVUHJv
Y2Vzc0Zvck1lZGlhKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBl
cihtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcj4oKnRoaXMpKTsKKyAgICBl
bHNlCisgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKTsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392860</attachid>
            <date>2020-03-07 08:49:44 -0800</date>
            <delta_ts>2020-03-08 10:13:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208727-20200307084943.patch</filename>
            <type>text/plain</type>
            <size>107412</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI3YzcwMmFhZTc2MzY4
M2EyODkzNjlkOTFkMjZmNTQwNDQ0NzFiOS4uNmMxNjU5MTZlZmZiNzdmOGRmMGU1MjIzZmI0YmM2
MTI5YmMwYzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29k
ZSBvdXQgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyBhbmQgaW50byBhIG5ldworICAgICAgICBj
bGFzcyBNZWRpYVNlc3Npb25IZWxwZXIsIHdoaWNoIGlzIGN1cnJlbnRseSBpT1Mgb25seS4gVGhl
IGFic3RyYWN0IGJhc2UgY2xhc3MKKyAgICAgICAgd2lsbCBiZSBvdmVycmlkZW4gYnkgV2ViS2l0
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tLgorICAgICAg
ICAoc2hhcmVkSGVscGVySW5zdGFuY2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpyZXNldFNoYXJlZEhl
bHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcik6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENsaWVudCk6CisgICAgICAgIChNZWRpYVNl
c3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6On5NZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJ
bnRlcnJ1cHRpb24pOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZDpdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKToK
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0pOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NU
YXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y2FyUGxheVNlcnZl
ckRpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
Ol0pOiBEZWxldGVkLgorCiAyMDIwLTAzLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFVQXSBDb252ZXJ0IENETUZhY3RvcnkgYXdheSBmcm9tIHBsYXRm
b3JtU3RyYXRlZ2llcygpIGFuZCB1c2UgV2ViUHJvY2VzcyBzZXR0aW5ncyBpbnN0ZWFkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGQ4MWY4ZTAxODQwM2YzNTkwYjNmNDNmZGNlODQ4MTcwNDgxZThkMzMuLjNiYjdjNmMw
ZDllM2RhYmQ1YTQxZmFkOTRiNGRjMmE0MjgxNjRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMjAtMDMtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVVBdIE1vdmUgQVZTeXN0ZW1Db250cm9sbGVyIGNvZGUgaW50byB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODcy
NworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZGQgYSBu
ZXcgY2xhc3MgcGFpciBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIvUHJveHkuCisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFTZXNzaW9uSGVscGVy
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1
cmVNZWRpYVNlc3Npb25IZWxwZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6flJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHk6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnN0b3BNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eTo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpyZWNlaXZlZEludGVycnVwdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eTo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJv
dmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMu
aW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYSk6CisKIDIwMjAt
MDMtMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBd
IENvbnZlcnQgQ0RNRmFjdG9yeSBhd2F5IGZyb20gcGxhdGZvcm1TdHJhdGVnaWVzKCkgYW5kIHVz
ZSBXZWJQcm9jZXNzIHNldHRpbmdzIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IGNkNmIxM2E5N2Q3MDViOWZmZDEzNjFiYTRlNzg1MDY0ZDk0YTU1NTEuLmFlNzkzZjQyZGVkYzFi
NTk4ZTFjMjBiNDkxYTEwNTExYWJkMWM0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
MTcxLDYgKzE3MSw3IEBAIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5j
cHAKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBAbm8tdW5pZnkK
IHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIEBuby11bmlmeQogcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8tdW5pZnkKIAogcGxhdGZvcm0vYXVk
aW8vbWFjL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZDJkZGU2NWY0MDVkZjRm
YWQ3NDAwMTAyMDk2NGUyOWY4YzM4YzBhLi4wYWE1ZDA2M2RlNTcyYmQ3YjkyZWJkNjkyOTI3YjY5
ZDkxNGQwNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MTUyLDYgKzQxNTIsOCBAQAogCQlDREE1OTU5ODIxNDZERjc4MDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxp
dGllc0NvY29hLmggKi87IH07CiAJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nl
c3Npb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9Owog
CQlDREE3OTgyQTE3MEEzRDAwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMTE3MEEyMkRDMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhl
bHBlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi87
IH07CisJCUNEQTk1OTNGMjQxMkJBRTAwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODc1QTc0
MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREE5OEUwQjE2MDNDRDYwMDBG
RUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwICov
OyB9OwogCQlDREFCNkQyOTE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDI3MTdD
N0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQyRTE3
QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQjZEMkMxN0M4MTRFRTAwQzYwQjM0IC8q
IEpTTWVkaWFDb250cm9sc0hvc3QuaCAqLzsgfTsKQEAgLTEzODk0LDYgKzEzODk2LDggQEAKIAkJ
Q0Q4NzFDNjgxRkI1MkI2OTAwRjBCOTY1IC8qIElTT0JveC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJU09Cb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDg3MUM2OTFGQjUyQjY5MDBGMEI5NjUgLyogSVNPVlRUQ3VlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElTT1ZUVEN1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEODcxQzZBMUZCNTJCNkEwMEYwQjk2NSAvKiBJU09PcmlnaW5hbEZv
cm1hdEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJU09Pcmln
aW5hbEZvcm1hdEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEODc1QTc0
MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFTZXNzaW9uSGVscGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOEE3QkI5MTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDhBN0JCQTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QUNBODYxRDIz
N0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MjEzLDYgKzI2MjE3LDggQEAKIAkJCQlD
RDU1OTY4RjE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCAqLywKIAkJ
CQlDRDU1OTY5MDE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmggKi8sCiAJ
CQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKKwkJ
CQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8s
CisJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5t
bSAqLywKIAkJCQkwNzYzOEE5NzE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oICovLAogCQkJCTA3NjM4QTk4MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tICovLAogCQkJKTsKQEAgLTMxNTQ0LDYgKzMxNTUwLDcgQEAKIAkJCQlBMTdE
Mjc1RTFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM5MDI3RjQyMUIxRDBBRDIwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM5Rjg3Q0ZFMUIyOEY0MEUwMDk3OUI4MyAvKiBNZWRpYVNlc3Npb25F
dmVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTk1OTNGMjQxMkJBRTAwMDkxMEVFRiAvKiBN
ZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM4MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzk2RjVFQzUxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvblByb3ZpZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTBGNjU1NjFCMjI1M0JF
MDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzcx
NCw2ICszMzcyMSw3IEBACiAJCQkJMTUwNTI0RjUxQjcxMkZGOTAwNjk2QUE5IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFCMTI0
RDhGMUQzODBCQjYwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREJFQUVBQzE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFW
Rk9iakMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzk2RjVFQzcxQjU4
NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM5MEY2NTU1MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAv
KiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjM3MmVkMGFlYWJkOTI5NDU2ZWFlMWU0NDcwNTc1OGNiMGY5MmYyYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1Rh
cmdldDsKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwg
fk1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3Mg
SW50ZXJydXB0aW9uVHlwZSA6IGJvb2wgeyBCZWdpbiwgRW5kIH07CisgICAgZW51bSBjbGFzcyBT
aG91bGRSZXN1bWUgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgdm9pZCByZWNlaXZl
ZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpID0gMDsKKworICAg
IGVudW0gY2xhc3MgU3VzcGVuZGVkVW5kZXJMb2NrIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVy
TG9jaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZChTdXNwZW5kZWRVbmRlckxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCkgPSAwOworCisgICAgZW51bSBjbGFzcyBIYXNBdmFpbGFibGVUYXJnZXRz
IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgPSAwOworCisgICAgZW51
bSBjbGFzcyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpID0gMDsKKworICAgIGVudW0gY2xhc3MgU2hvdWxk
UGF1c2UgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFN1cHBvcnRz
QWlyUGxheVZpZGVvIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZl
VmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+JiYpID0gMDsKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2Vzc2lv
bkhlbHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIE1lZGlhU2Vzc2lvbkhlbHBlciYgc2hhcmVkSGVscGVyKCk7CisgICAgc3RhdGljIHZvaWQg
c2V0U2hhcmVkSGVscGVyKFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+JiYpOworICAgIHN0
YXRpYyB2b2lkIHJlc2V0U2hhcmVkSGVscGVyKCk7CisKKyAgICBNZWRpYVNlc3Npb25IZWxwZXIo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBhZGRDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Jik7CisgICAg
dm9pZCByZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Jik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CisKKyAgICBib29s
IGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXNDb3VudDsgfQorICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZTsgfQorICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0KKyAg
ICBib29sIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KCkgY29uc3QgeyByZXR1cm4gbV9p
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2Vha0hh
c2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50PiBtX2NsaWVudHM7CisgICAgdWludDMyX3Qg
bV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAgfTsKKyAgICBib29sIG1faXNFeHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FjdGl2ZVZp
ZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGxh
eWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjY4OWI1Mzg3NGQwNDk4MzY2ZGYwYzg0MzBj
YjlkZDZiNmEwY2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtMCwwICsxLDYwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFTZXNzaW9uSGVscGVy
SU9TLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCIKKyNpbXBvcnQgIldlYkNvcmVU
aHJlYWRSdW4uaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvaW9zL0NlbGVzdGlhbFNQ
SS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVW5p
cXVlUmVmLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
I2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK1dFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2Vi
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiI7
CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNh
dGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiI7CisKKyNpZiBIQVZFKENFTEVTVElBTCkKK1NPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SS19PUFRJT05BTChDZWxlc3RpYWwpCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9O
QUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRp
b25TdGF0ZUZyb20sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2Vs
ZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVt
Q29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIsIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNv
bnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJf
QWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9BY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNlLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlLCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVz
Y3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbywgTlNTdHJpbmcgKikKKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOworCitAaW50ZXJmYWNlIFdlYk1lZGlhU2Vzc2lvbkhlbHBlciA6IE5TT2JqZWN0IHsKKyAg
ICBNZWRpYVNlc3Npb25IZWxwZXJpT1MqIF9jYWxsYmFjazsKKworI2lmICFQTEFURk9STShXQVRD
SE9TKQorICAgIFJldGFpblB0cjxBVlJvdXRlRGV0ZWN0b3I+IF9yb3V0ZURldGVjdG9yOworI2Vu
ZGlmCisgICAgYm9vbCBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7CisgICAgYm9vbCBfc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmc7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2FsbGJh
Y2s6KE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyopY2FsbGJhY2s7CisKKy0gKHZvaWQpY2xlYXJDYWxs
YmFjazsKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAoQk9PTCloYXNX
aXJlbGVzc1RhcmdldHNBdmFpbGFibGU7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKy0gKHZv
aWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKy0gKHZvaWQpc3RvcE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzOworI2VuZGlmCisKK0BlbmQKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVy
aU9TIGZpbmFsIDogcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlciB7CitwdWJsaWM6CisgICAgTWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CisgICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOworCisg
ICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZv
aWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1
cHRpb25UeXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CisgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwor
ICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICB2b2lkIGFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgdm9pZCBj
YXJQbGF5U2VydmVyRGllZCgpOworICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9w
dGlvbmFsPGJvb2w+JiYpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRp
b25hbDxib29sPiYmKTsKKyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoT3B0aW9u
YWw8Ym9vbD4mJik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB1c2luZyBIYXNBdmFpbGFibGVU
YXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOwor
ICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6Oklu
dGVycnVwdGlvblR5cGU7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7Cisg
ICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBh
dXNlOworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCk7CisK
KyAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKKyAg
ICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBz
dG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8V2Vi
TWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsKKyNpZiBIQVZFKENFTEVTVElBTCkK
KyAgICBib29sIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEIHsgZmFsc2UgfTsKKyNlbmRp
ZgorfTsKKworc3RhdGljIFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+JiBzaGFyZWRIZWxw
ZXJJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxNZWRp
YVNlc3Npb25IZWxwZXI+PiBoZWxwZXIgPSBtYWtlVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUz4oKTsKKyAgICByZXR1cm4gaGVscGVyOworfQorCitNZWRpYVNlc3Npb25IZWxwZXImIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkSGVs
cGVySW5zdGFuY2UoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVk
SGVscGVyKCkKK3sKKyAgICBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpID0gbWFrZVVuaXF1ZVJlZjxN
ZWRpYVNlc3Npb25IZWxwZXJpT1M+KCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpz
ZXRTaGFyZWRIZWxwZXIoVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4mJiBoZWxwZXIpCit7
CisgICAgc2hhcmVkSGVscGVySW5zdGFuY2UoKSA9IFdURk1vdmUoaGVscGVyKTsKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENsaWVudChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAg
ICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpy
ZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNs
aWVudCk7Cit9CisKK01lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9T
KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX29iamNPYnNlcnZl
ciA9IGFkb3B0TlMoW1tXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJh
Y2s6dGhpc10pOworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHVwZGF0ZUNhclBsYXlJ
c0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworI2VuZGlmCit9CisKK01lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisgICAgW21fb2JqY09ic2VydmVyIGNsZWFyQ2FsbGJhY2tdOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnBy
b3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKK3sKKyNpZiBIQVZFKENFTEVT
VElBTCkKKyAgICBpZiAobV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9IHRydWU7CisKKyAgICBp
ZiAoIWNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0
ZUZyb20oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxl
cl0gc2V0QXR0cmlidXRlOkAocGlkKSBmb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1BJRFRv
SW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tKCkgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHNldCB1cCBQSUQgcHJveHlpbmc6
ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7CisjZW5kaWYKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCkKK3sKKyAgICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAg
ICAgICByZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9v
YmpjT2JzZXJ2ZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVz
c1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgW21fb2JqY09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCisjaWYgSEFWRShDRUxFU1RJQUwpCit2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQoKQoreworICAgIHVwZGF0ZUNh
clBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxh
eUlzQ29ubmVjdGVkKQoreworICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKKyAgICAgICAg
c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVl
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7CisgICAgICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBi
b29sVmFsdWVdKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wgaXNQbGF5aW5nKQoreworICAgIGlmIChpc1BsYXlp
bmcgPT0gbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IGlzUGxheWluZzsKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmlzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHNob3VsZFBhdXNlKQoreworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZS52YWx1ZU9yKGZhbHNlKSA/IFNob3VsZFBhdXNl
OjpZZXMgOiBTaG91bGRQYXVzZTo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWly
UGxheVZpZGVvKQoreworICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVv
ID0gc3VwcG9ydHNBaXJQbGF5VmlkZW8udmFsdWVPcihmYWxzZSk7CisKKyAgICBhdXRvIHBsYXli
YWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRd
KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UobV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5
VmlkZW8gPyBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86
Ok5vLCBwbGF5YmFja1RhcmdldC5jb3B5UmVmKCkpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OkludGVycnVwdGlvblR5cGUgdHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpT
aG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxk
UmVzdW1lKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZCh1bmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRl
ZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQodW5kZXJM
b2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2
ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWls
YWJsZVRhcmdldHM6Ok5vKTsKK30KKworQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhl
bHBlcgorCistIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNh
bGxiYWNrCit7CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdp
dGhDYWxsYmFja10iKTsKKworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlm
aWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50
ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBv
YmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisK
KyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpn
ZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBu
YW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQ6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
OikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheVNlcnZlckRp
ZWQ6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlm
aWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVy
X0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbigpKQorICAgICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlJc0Nvbm5lY3Rl
ZERpZENoYW5nZTopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3Rl
ZERpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZT
eXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkK
KyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworI2VuZGlmCisK
KyAgICAvLyBOb3cgcGxheWluZyB3b24ndCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxp
dmVyeSBvZiByZW1vdGUgY29udHJvbCBldmVudHMuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNh
dGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKKyAgICAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworICAgIH0pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGRlYWxsb2NdIik7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoIXB0aHJlYWRf
bWFpbl9ucCgpKSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3RvcildICgpIG11dGFi
bGUgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBkaXBhdGNoZWQg
dG8gVUkgdGhyZWFkLiIpOworICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IE5POworICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5jbGVhcigpOworICAgICAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87CisjZW5kaWYK
KworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJh
Y2sKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxi
YWNrXSIpOworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAoQk9PTCloYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGUKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdIik7CisjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
CisgICAgcmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgpLm11bHRpcGxlUm91dGVzRGV0ZWN0ZWQ7
CisjZWxzZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKFdBVENI
T1MpCistICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoX21v
bml0b3JpbmdBaXJQbGF5Um91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBfbW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMgPSB0cnVlOworCisgICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQbGF5
Um91dGVzUGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9yb3V0ZURldGVjdG9y
KSB7CisgICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IFlFUzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9zdGFydE1vbml0b3JpbmdBaXJQ
bGF5Um91dGVzUGVuZGluZyA9IHRydWU7CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgY2FsbE9u
V2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNlbGYt
Pl9yb3V0ZURldGVjdG9yKTsKKworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNr
KSB7CisgICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91
dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVkU2Vs
Zi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOworICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgpIHNl
bGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5hbWU6
QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlv
biBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOworCisgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgICAgIH0KKworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworLSAodm9pZClzdG9wTW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgX21vbml0b3JpbmdBaXJQ
bGF5Um91dGVzID0gZmFsc2U7CisgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rp
b25FbmFibGVkID0gTk87Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdBVENIT1MpCisKKy0gKHZv
aWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVz
aW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVw
dGlvblR5cGU7CisgICAgdXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTaG91bGRSZXN1bWU7CisKKyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRp
b24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVL
ZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBJbnRlcnJ1cHRpb25UeXBlIGludGVycnVw
dGlvblR5cGUgPSAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCA/
IEludGVycnVwdGlvblR5cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6OkJlZ2luKTsKKyAgICBT
aG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpObzsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBlID0gJWki
LCAoaW50KXR5cGUpOworCisgICAgaWYgKGludGVycnVwdGlvblR5cGUgPT0gSW50ZXJydXB0aW9u
VHlwZTo6RW5kICYmIFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0g
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCisgICAgICAgIHNo
b3VsZFJlc3VtZSA9IFNob3VsZFJlc3VtZTo6WWVzOworCisgICAgY2FsbE9uV2ViVGhyZWFkT3JE
aXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAg
IGNhbGxiYWNrLT5yZWNlaXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRS
ZXN1bWUpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmRdIik7CisKKyAgICBhdXRvIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9u
IHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1
ZV0gPyBTdXNwZW5kZWRVbmRlckxvY2s6OlllcyA6IFN1c3BlbmRlZFVuZGVyTG9jazo6Tm87Cisg
ICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQor
ICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwor
ICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVd
Iik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChh
dXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIH0pOworfQorCist
ICh2b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisgICAg
aWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5n
IFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVk
VW5kZXJMb2NrOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kXSIpOworCisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlm
aWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBi
b29sVmFsdWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNwZW5kZWRVbmRlckxvY2s6
Ok5vOworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxs
YmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKENFTEVTVElB
TCkKKy0gKHZvaWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0iKTsKKyAg
ICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2VydmVyRGllZCgpOworICAg
IH0pOworfQorCistICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIGlmIChu
b3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0
ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgeworICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5
SXNDb25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZT
eXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigp
XTsKKyAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAgICAgICAgICAgY2FyUGxh
eUlzQ29ubmVjdGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07CisgICAgfQor
CisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNh
clBsYXlJc0Nvbm5lY3RlZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT51cGRh
dGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKKyAgICB9
KTsKK30KKworLSAodm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxib29sPiBz
aG91bGRQYXVzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91
bGRQYXVzZSgpKSB7CisgICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlmaWNh
dGlvbi51c2VySW5mbyB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsKKyAg
ICAgICAgaWYgKG5zU2hvdWxkUGF1c2UpCisgICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5zU2hv
dWxkUGF1c2UuYm9vbFZhbHVlOworICAgIH0KKworICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRz
QWlyUGxheVZpZGVvOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJv
dXRlQXR0cmlidXRlKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0
aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAgICAgICBOU0RpY3Rpb25h
cnkqIHBpY2tlZFJvdXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFW
U3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9Q
aWNrZWRSb3V0ZUF0dHJpYnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tpbmRP
ZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAgIE5TTnVtYmVyKiBuc1N1
cHBvcnRzQWlyUGxheVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVt
Q29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8o
KV07CisgICAgICAgICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKKyAgICAgICAgICAg
ICAgICBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9vbFZh
bHVlOworICAgICAgICB9CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91bGRQ
YXVzZSA9IFdURk1vdmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdURk1v
dmUoc3VwcG9ydHNBaXJQbGF5VmlkZW8pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byog
Y2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrLT5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc3Vw
cG9ydHNBaXJQbGF5VmlkZW8pKTsKKyAgICAgICAgfQorICAgIH0pOworCit9CisjZW5kaWYgLy8g
SEFWRShDRUxFU1RJQUwpCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXgg
NWRmMjBhN2FhMTRjMWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4uNGRjOGZmM2MxMzJhYzU1
OThiMjM5Y2M0ZDIyM2U2MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uSGVscGVySU9TLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxOCArNDIsMTMgQEAgZXh0ZXJu
IE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9u
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1Mg
OiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1MKKyAgICA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKKyAgICAsIHB1
YmxpYyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJs
ZSgpIG92ZXJyaWRlOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZvaWQgY2FyUGxheVNlcnZl
ckRpZWQoKTsKLSAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29s
PiYmKTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4m
Jik7Ci0gICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYp
OwotI2VuZGlmCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQgKzYyLDIyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3Nhcnko
KSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNl
c3Npb24mLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAorICAgIC8vIE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50
ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQg
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9p
ZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7
CisgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsK
KyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8s
IFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MiOyB9
CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09i
c2VydmVyOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlv
blBJRCB7IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3N2FkODYyNGNiNDViZGYz
OTgzZWM4ZC4uN2M1MTViNTg1ZDRhNmJkNmFlMDlhNzQwY2U2NjQzYzkzMDE3NDEwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0KQEAgLTM1LDY3ICszNSwxMCBAQAogI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQgIldl
YkNvcmVUaHJlYWRSdW4uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5o
PgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KLSNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24g
PSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5v
dGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmlj
YXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi1TT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQotU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFw
cGxpY2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJp
YnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWws
IEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBB
VlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVy
LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZT
eXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmlu
ZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250
cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xs
ZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQ
YXVzZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWws
IEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9S
b3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICop
Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViTWVk
aWFTZXNzaW9uSGVscGVyIDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1Mq
IF9jYWxsYmFjazsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hP
UykKLSAgICBSZXRhaW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKLSNlbmRp
ZgotICAgIGJvb2wgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgIGJvb2wgX3N0YXJ0TW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClpbml0V2l0aENhbGxiYWNr
OihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAodm9pZCljbGVhckNhbGxi
YWNrOwotLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tIChCT09MKWhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykKLS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKLS0g
KHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlmCi0KLUBlbmQKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgpCkBAIC0xMDYsMjIg
KzQ5LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI+IFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
OjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAgICA6IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9vYmpjT2JzZXJ2
ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxi
YWNrOnRoaXNdKTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmVzZXRSZXN0
cmljdGlvbnMoKTsKLQotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nv
bm5lY3RlZChXVEY6Om51bGxvcHQpOwotI2VuZGlmCiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICBbbV9vYmpjT2JzZXJ2ZXIgY2xlYXJDYWxsYmFja107Ci0gICAgbV9vYmpj
T2JzZXJ2ZXIgPSBuaWw7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIGlmICht
X2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6
OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKIH0KIAogdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCkBAIC0xNDMsOSAr
NzYsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkK
IAogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFi
bGUoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBbbV9v
YmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVs
cGVyKCkuaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCkBA
IC0xNTUsMTYgKzg2LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJl
V2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJuIHNlc3Npb24ucmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0pOwogCi0gICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25p
dG9yaW5nKTsKKyAgICBpZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1faXNNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMpCisgICAgICAgIHJldHVybjsKIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSByZXF1aXJlc01vbml0
b3Jpbmc7CisKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01vbml0b3Jp
bmcgPSAiLCByZXF1aXJlc01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJlcXVpcmVzTW9uaXRvcmlu
ZykKLSAgICAgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
OworICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIg
c3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdG9wTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAtMTc0LDIxICsxMDYsMTMg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElESWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJ
RCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0g
dHJ1ZTsKLSAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisgICAgTWVkaWFT
ZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQogewot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Q
SURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNz
KCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoKSkgZm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRB
cHBsaWNhdGlvblN0YXRlRnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2VuZGlmCisgICAgTWVkaWFT
ZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5Q2FsbGluZ1VwZGF0ZU5v
d1BsYXlpbmcpCkBAIC0yMDEsNDUgKzEyNSwyNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npbwog
I2VuZGlmCiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRz
IGhhdmVUYXJnZXRzKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
Ym9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFp
bGFibGVdOwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2ZVRhcmdldHMpOwogCiAg
ICAgZm9yRWFjaFNlc3Npb24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAg
ICBzZXNzaW9uLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJn
ZXRzKTsKKyAgICAgICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShoYXZlVGFyZ2V0cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMpOwogICAgIH0pOwot
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYgSEFWRShDRUxFU1RJQUwp
Ci12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2ZXJEaWVkKCkKK3ZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRD
aGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIHVwZGF0ZUNhclBs
YXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0KHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBk
YXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVk
KQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQp
IHsKLSAgICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29u
bmVjdGVkLnZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgc2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBi
b29sVmFsdWVdKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCi17Ci0gICAgaWYg
KCFzaG91bGRQYXVzZSB8fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAgICBpZiAoc2hvdWxkUGF1
c2UgIT0gU2hvdWxkUGF1c2U6OlllcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yRWFjaFNl
c3Npb24oW10oYXV0byYgc2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTUyLDYzIEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxi
b29sPiYmIHNob3VsZFBhCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWly
UGxheVZpZGVvKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRl
RGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAgICBhdXRvIG5vd1BsYXlp
bmdTZXNzaW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIGlmICghbm93UGxh
eWluZ1Nlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQgPSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKLSAgICBh
dXRvIHBsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BB
TDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1
dENvbnRleHRdKTsKLSAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOworICAgIG5vd1BsYXlpbmdTZXNz
aW9uLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0c0FpclBsYXlWaWRlbyA9
PSBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0
UGxheWJhY2tUYXJnZXQoV1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwogfQotI2VuZGlmCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhl
bHBlcgotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKilj
YWxsYmFjawotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRX
aXRoQ2FsbGJhY2tdIik7Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIE5T
Tm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uIG9iamVjdDpbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2Vd
XTsKLQotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQ
QUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkg
b2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlB
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgaWYgKGNhbkxvYWRBVlN5
c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKLSAgICAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2Vy
dmVyRGllZDopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVk
Tm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29u
bmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29u
bmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlv
bigpKQotICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9B
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0jZW5k
aWYKLQotICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhl
IGRlbGl2ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRB
cHBsaWNhdGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKLSAgICAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGRlYWxsb2NdIik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JN
KFdBVENIT1MpCi0gICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdURk1v
dmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
InNhZmVseVRlYXJEb3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKLSAgICAgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5n
ZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0
b3IuY2xlYXIoKTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0
ZWN0aW9uRW5hYmxlZCA9IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAodm9pZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBfY2FsbGJhY2sgPSBuaWw7
Ci19Ci0KLS0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCi17Ci0gICAgTE9HKE1l
ZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
XSIpOwotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICBy
ZXR1cm4gX3JvdXRlRGV0ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNEZXRlY3RlZDsKLSNlbHNl
Ci0gICAgcmV0dXJuIE5POwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYg
IVBMQVRGT1JNKFdBVENIT1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMK
LXsKLSAgICBpZiAoX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0gICAgaWYgKF9zdGFydE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KF9yb3V0ZURldGVjdG9yKSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0
ZWN0aW9uRW5hYmxlZCA9IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9zdGFy
dE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0KLSAgICBMT0coTWVkaWEs
ICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIp
OwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQo
IXByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAgICBpZiAocHJvdGVjdGVk
U2VsZi0+X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAg
cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVk
ID0gcHJvdGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0
ZWRTZWxmLmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZTopIG5hbWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENo
YW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0
KCldOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoIV9tb25pdG9yaW5n
QWlyUGxheVJvdXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAg
X21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3JvdXRlRGV0ZWN0b3IuZ2V0
KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYgLy8gSEFWRShNRURJQV9Q
TEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2Fs
bGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0
Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2Vy
VmFsdWVdOwotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBm
bGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0gICAgTE9HKE1lZGlhLCAi
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQp
dHlwZSk7Ci0KLSAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVF
bmRlZCAmJiBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwotCi0gICAgY2FsbE9uV2Vi
VGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCB0eXBlLCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogY2FsbGJh
Y2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlQmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFjay0+YmVnaW5JbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwotCi0g
ICAgfSk7Ci19CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpy
ZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBp
ZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25z
KCkpCisgICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxv
Y2sgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVk
VW5kZXJMb2NrIl0gYm9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVu
ZGVkVW5kZXJMb2NrXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBw
cm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKLX0K
KyAgICBhdXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9GbGFnczsKIAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKLQotICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUlu
dGVycnVwdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7Ci0KLSAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlmICh0eXBlID09IEludGVy
cnVwdGlvblR5cGU6OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGVuZElu
dGVycnVwdGlvbihmbGFncyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
IGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNl
bGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNv
bWVJbmFjdGl2ZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3Bl
bmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIFVOVVNF
RF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9y
aW5nQWlyUGxheVJvdXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7Ci0KLSAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotLSAodm9p
ZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAg
IGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlv
bnMoKSkKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJM
b2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRl
ZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3Bl
bmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0g
cHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVyRGllZDooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlm
ICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpd
Iik7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFk
T3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRT
ZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQo
KTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2ls
bEJlY29tZUluYWN0aXZlKCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIGlmICghX2NhbGxiYWNr
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBjYXJQbGF5SXNDb25uZWN0
ZWQ7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0Nh
clBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7Ci0gICAgICAgIE5TTnVt
YmVyICpuc0NhclBsYXlJc0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSB2YWx1
ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0
aW9uUGFyYW1ldGVyKCldOwotICAgICAgICBpZiAobnNDYXJQbGF5SXNDb25uZWN0ZWQpCi0gICAg
ICAgICAgICBjYXJQbGF5SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXNDb25uZWN0ZWQgYm9vbFZh
bHVlXTsKLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhclBsYXlJc0Nvbm5lY3Rl
ZCA9IFdURk1vdmUoY2FyUGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAg
Y2FsbGJhY2stPnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3ZlKGNhclBsYXlJc0Nvbm5l
Y3RlZCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYgKCFfY2FsbGJhY2spCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIE9w
dGlvbmFsPGJvb2w+IHNob3VsZFBhdXNlOwotICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9h
ZEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9u
UGFyYW1ldGVyX1Nob3VsZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1iZXIqIG5zU2hvdWxkUGF1
c2UgPSBbbm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJv
bGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3Vs
ZFBhdXNlKCldOwotICAgICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAgICAgICAgICAgIHNob3Vs
ZFBhdXNlID0gbnNTaG91bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gc3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfUGlja2VkUm91dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVy
X1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpKSB7Ci0gICAg
ICAgIE5TRGljdGlvbmFyeSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNs
YXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0
ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAgICAgICBpZiAoW3BpY2tl
ZFJvdXRlIGlzS2luZE9mQ2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkgewotICAgICAgICAgICAg
TlNOdW1iZXIqIG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2VkUm91dGUgdmFsdWVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0
c0FpclBsYXlWaWRlbygpXTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBvcnRzQWlyUGxheVZpZGVv
KQotICAgICAgICAgICAgICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gbnNTdXBwb3J0c0FpclBs
YXlWaWRlby5ib29sVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIHNob3VsZFBhdXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSksIHN1cHBvcnRzQWlyUGxh
eVZpZGVvID0gV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAg
ICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzaG91
bGRQYXVzZSkpOwotICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2UoV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbykpOwotICAgICAgICB9Ci0gICAgfSk7Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKLUBl
bmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDc0OWIyZGIwOWI5Njc0NmY0YTBm
MWUzNGMyMTc0MmVkZjUzZTQ2Yi4uZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2
YjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtMjcsNiArMjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTIyLDYgKzEyMyw3
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENSZW1vdGVDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDk5NTAzNTEyYmE1NThiMmI0MTAwOGY1YjE2NjUwNDYwYTk1NDE0NTYuLjBi
ODU3MzY0ODFlMDc1NWY4NmQ5MjVlMzA2MmU1ZGMzZTIzNjgzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTgzLDYgKzE4MywxMiBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVJlY29yZGVyc01lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RS
ZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAxYzNkMWEyMGVlYTNiNzM4MDAxMDJlMWQzMTk4Mzc5MDNhYTZj
ZDBhLi5jYjcxNTJmYTMxNDY5NTI1MTAxOGZhZWEwNWFmMTA2MzZlMGI0NzdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNiw2ICsyNiw3IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
S2l0MikvR1BVUHJvY2Vzcy9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21h
YyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL0dQ
VVByb2Nlc3MvbWVkaWEvaW9zIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjIFwK
ICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMgXApAQCAtNTQsNiArNTUsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvR1BVIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKKyAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IgXApAQCAtMTY0LDYgKzE2Niw4IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXIgXAogICAgIFJl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ciBcCisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKyAgICBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSBcCiAgICAgUmVtb3RlT2JqZWN0UmVnaXN0cnkgXAogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgXAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNzFkMjA3MzFlZTViNzMyMjljNTFlYjM0ODI3MGVhYmU2OGM1Y2M3My4uMmNi
MmE5NWJjNmUzN2YzY2VmM2E5M2JiYzZjNzU2MTAxMDE1ZWRiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
ODMsNiArODMsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yODksNiArMjkzLDIwIEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1ZGlvU2Vz
c2lvbkNvbXBsZXRpb24mCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
bWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIGlmICghbV9tZWRpYVNlc3Npb25IZWxw
ZXJQcm94eSkKKyAgICAgICAgbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fbWVk
aWFTZXNzaW9uSGVscGVyUHJveHk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKK3sKKyAgICBtZWRpYVNlc3Npb25IZWxwZXJQ
cm94eSgpOworfQorI2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggODAxNTZkMWJlY2VhNmJiZTIzOGI2YTAxOGI1MGY5ODI1ZGI1OWI0
NC4uMzY4YjBiZjY2YmI4NWE5ZTRjYWZhMmNiNWE4MmU2NzJjY2MwNTc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC01MSw2ICs1MSw3IEBAIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKK2NsYXNzIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVt
b3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTg3LDcgKzg4LDkgQEAgcHVibGljOgog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBj
ZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgotCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgbWVkaWFTZXNzaW9uSGVscGVyUHJveHko
KTsKKyNlbmRpZgogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFV
RElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyJiBhdWRpb1Nl
c3Npb25NYW5hZ2VyKCk7CkBAIC0xMjQsNiArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bnN1cmVBdWRpb1Nlc3Npb24oRW5zdXJlQXVkaW9TZXNzaW9uQ29tcGxldGlvbiYmKTsKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGVuc3VyZU1lZGlhU2Vzc2lv
bkhlbHBlcigpOworI2VuZGlmCisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZp
bmFsOwpAQCAtMTY3LDYgKzE3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHk+IG1fYXVkaW9TZXNzaW9uUHJveHk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eT4gbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVhYjQxNzJlZDMx
NDdmMjZhOTAzN2RiYzk4ODVhOTdmMWU4MDljYzYuLmQ4N2Q3NjEzNGFlZWMxYThhYzA3NWU1Njk5
YTI5MWFmMzkxMjc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICsz
MCw5IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRj
aE1lc3NhZ2UgewogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJ
bmZvKTsKICNlbmRpZgogICAgIEVuc3VyZUF1ZGlvU2Vzc2lvbigpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9u
b3VzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbnN1cmVNZWRpYVNlc3Npb25IZWxw
ZXIoKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNjBiNDRlZTNkMWJi
NjUzZGNjYjE4MzkxZjVkZTM4ZTNhM2Q5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQor
eworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuYWRkQ2xpZW50KCp0aGlz
KTsKK30KKworUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6On5SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSgpCit7CisgICAgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwor
ICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
ID0gdHJ1ZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9p
c01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc01v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IGZhbHNlOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6
c2hhcmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKGludCBwaWQpCit7CisgICAgaWYgKG1fcHJvdmlkZWRBcHBsaWNhdGlvblBJRCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wcm92aWRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKyAg
ICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQocGlkKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1
bWUgc2hvdWxkUmVzdW1lKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpSZWNlaXZlZEludGVycnVwdGlv
bih0eXBlLCBzaG91bGRSZXN1bWUpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayksIHsgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgbV9n
cHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9j
ayksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxp
Y2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRp
b25XaWxsQmVjb21lSW5hY3RpdmUoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG1fZ3B1
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCB7IH0pOworfQorCit2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJsZVRhcmdldHMpCit7Cisg
ICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OkV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhh
c0F2YWlsYWJsZVRhcmdldHMpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UocGxheWluZyksIHsgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZUF1
ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRz
QWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgp
KSwgeyB9KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4NTM5N2RhMzIwZjIxMWFi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eQorICAgIDogcHVibGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudAorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eSgpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpOworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpOwor
CisgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgdm9pZCByZWNlaXZlZEludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpIGZpbmFsOworICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7
CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxv
Y2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKSBmaW5h
bDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisgICAgdm9p
ZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJn
ZXRzKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hh
bmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIGJvb2wgbV9wcm92aWRlZEFwcGxpY2F0
aW9uUElEIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMg
eyBmYWxzZSB9OworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlv
bjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI2YzQ4NTE3YmFiZWE4YTg0NGJmNWRh
ZDQ3NWNlN2ZmMzk5OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCittZXNzYWdl
cyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBT
dGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCisgICAgU3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpCisgICAgUHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDEwNTZiOWVkZTU0YmFhYWUyYjI5YTA1NjdhODVm
NmExOTQ4OGJmZGQuLjFjOTI0NWUwYjlmNGJiYzJiODBkN2UzY2MwNGVmZDIwM2Q4ZTA0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtNDAsNiArNDAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC01NjAsNiArNTYxLDcgQEAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBlZDlmNDRiYjlmMjJlM2MyNGYxZDJkOTgwNTgzMjFhODEwZjc5ZDMzLi5m
OTMyM2ZiOTM5NjA5OGE5OGRmOTZmNmJkNjJkMDE2MmQ2ZGY4Y2M4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC02NjIsNiArNjYyLDggQEAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzgwNTk2YjUzN2VkOGZkMjYyY2U1M2Q1OTFiYmYxYjNkNTcz
MTA1Ny4uOGMxOTA4YzRhZGVlMWM4YTc2ODE5N2E3YzMxZWM5MDg3MzE3M2RiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgwLDYg
KzUwODAsMTIgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2
OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVs
bHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0EyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQjI0
MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5NTkzQzI0MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5NDUyNDEyQzRGNTAwOTEwRUVGIC8q
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk1OTQ2MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAv
KiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3QzIzRkIxRUY5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NDEzLDYgKzU0MTksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1MTggLyogY29jb2EgKi8sCisJCQkJQ0RB
OTU5MzkyNDEyQjE3NTAwOTEwRUVGIC8qIGlvcyAqLywKIAkJCQkwNzFCQzU3OTIzQzkzQkI5MDA2
ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTA3MUJDNTc3MjND
OTNCQjcwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3OTIz
MTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLApA
QCAtNTQ2Nyw2ICs1NDc0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICovLAorCQkJCUNEQTk1OTQ0
MjQxMkM0REEwMDkxMEVFRiAvKiBpb3MgKi8sCiAJCQkJOUIxMjI5Q0MyM0ZGMjVGMjAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk5QjEyMjlDQjIz
RkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCAqLywKIAkJ
CQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDE1Nyw2ICsxMDE2NSwyNiBAQAogCQkJbmFtZSA9IEZ1
bGxTY3JlZW47CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5NTkzOTI0
MTJCMTc1MDA5MTBFRUYgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDREE5NTkzQTI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcCAqLywKKwkJCQlDREE5NTkzQjI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLmggKi8sCisJCQkJQ0RBOTU5M0MyNDEyQjY0NTAwOTEwRUVGIC8q
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRo
ID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0RBOTU5NDQyNDEy
QzREQTAwOTEwRUVGIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQ0RBOTU5NDYyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcCAqLywKKwkJCQlDREE5NTk0NTI0MTJDNEY1MDA5MTBFRUYgLyogUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCAqLywKKwkJCQlDREE5NTk0NzI0MTJDOTE5MDA5
MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUNEQzI4MzFBMjAxQkQ3NTYwMEU2RTc0NSAvKiBmdWxsc2NyZWVuICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZlZjRkNzVmMjk4MDgwMzRmMWE0OWNiYzlhNWMyOWQ1NTE5MTg1
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6RW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCksIHsgfSk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiYgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpjb25uZWN0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50
KyspCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNDb3VudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
LCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRChwaWQpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRS
ZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1l
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQorewor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayk7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChT
dXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJl
Y29tZUluYWN0aXZlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQor
eworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0KQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
cGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1
c2UpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlKTsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNB
aXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiYgdGFyZ2V0Q29udGV4dCkKK3sKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4g
dGFyZ2V0T2JqZWN0OworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkKKyAgICAgICAgdGFyZ2V0T2Jq
ZWN0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29u
dGV4dC5hdk91dHB1dENvbnRleHQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJnZXRPYmplY3QuY29weVJlZigpLnJlbGVhc2VOb25O
dWxsKCkpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRhZDVjMGRkMTBiY2E4NjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIGZpbmFsCisg
ICAgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyCisgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cihXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyKCkg
PSBkZWZhdWx0OworCisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7CisKKyAgICB1
c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBX
ZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAg
dXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CisgICAgdXNpbmcgU2hv
dWxkUGF1c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNl
OworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAg
ICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXIKKyAgICB2
b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBwcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZv
aWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKTsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxv
Y2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAg
dm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIHZvaWQgZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9p
ZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSk7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKKworICAgIFdl
YlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzYzU3Y2Rm
OTYzNTljOGYzNzhiNTkxMDQ2N2E4MjcxYzgxZGQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgTm90UmVmQ291bnRl
ZCB7CisgICAgUmVjZWl2ZWRJbnRlcnJ1cHRpb24oZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIGVudW06Ym9vbCBXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKKyAg
ICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2Nr
KQorICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVy
TG9jaykKKyAgICBBcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCisgICAgQXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKQorICAgIEV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SGFzQXZh
aWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQorICAgIElzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0RGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IGlzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0KQorICAgIEFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoZW51bTpib29sIFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTaG91bGRQYXVzZSBzaG91bGRQYXVzZSkKKyAg
ICBBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6U3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8s
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdldCkKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTM2YzYwMzA5NGVm
MjRhMDM5N2FlYTYzMzhiMzNiNzFmYjJlNjc1NC4uZGNjMWZhN2MxN2NlNjMxNGVjMzRmMGUzZDUx
YjEzMWMyMzlmYzkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTc5LDYgKzE3OSwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1f
c2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQg
Il0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19W
QV9BUkdTX18pCiAKQEAgLTIwMjIsNiArMjAyNiwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFVz
ZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAgICBlbHNl
CiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihBdWRpb1Nlc3Npb246OmNy
ZWF0ZSgpKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAodXNl
R1BVUHJvY2Vzc0Zvck1lZGlhKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJl
ZEhlbHBlcihtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcj4oKnRoaXMpKTsK
KyAgICBlbHNlCisgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIo
KTsKKyNlbmRpZgogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392958</attachid>
            <date>2020-03-08 10:13:41 -0700</date>
            <delta_ts>2020-03-08 11:24:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208727-20200308101340.patch</filename>
            <type>text/plain</type>
            <size>107557</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlY2FhOTVhM2E0OTI0
MTcxMzhhZmEwOGZkOTJhODNmNTNkMmRlMS4uYzE4NjM3NDU0NjQ3YzZkZjk2YTM5ZGJlMmM4MDE2
MjdlNTU3Njg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29k
ZSBvdXQgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyBhbmQgaW50byBhIG5ldworICAgICAgICBj
bGFzcyBNZWRpYVNlc3Npb25IZWxwZXIsIHdoaWNoIGlzIGN1cnJlbnRseSBpT1Mgb25seS4gVGhl
IGFic3RyYWN0IGJhc2UgY2xhc3MKKyAgICAgICAgd2lsbCBiZSBvdmVycmlkZW4gYnkgV2ViS2l0
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tLgorICAgICAg
ICAoc2hhcmVkSGVscGVySW5zdGFuY2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpz
aGFyZWRIZWxwZXIpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpyZXNldFNoYXJlZEhl
bHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJlZEhlbHBlcik6Cisg
ICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENsaWVudCk6CisgICAgICAgIChNZWRpYVNl
c3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJp
T1M6On5NZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVE
aWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1Jv
dXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJ
bnRlcnJ1cHRpb24pOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0p
OgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10pOgorICAgICAgICAo
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10pOgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSk6CisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSk6
CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXNdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZDpdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKToK
KyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0pOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJlV2lyZUxlc3NU
YXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y2FyUGxheVNlcnZl
ckRpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0YXJ0TW9uaXRvcmluZ0Fp
clBsYXlSb3V0ZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
Yk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlh
U2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
Ol0pOiBEZWxldGVkLgorCiAyMDIwLTAzLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBhIGZsYWcgdG8gZGlzYWJsZSBpbi1hcHAgYnJvd3Nl
ciBxdWlya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMmY5MGZlNDQ0MDEyNzA4Njc4NDdkODEyYWE1NGU0NTExMGFj
N2EyZi4uZTE4NWU4MDc5NjY2N2IyOTIxNTFhMjJkN2ZiMzM0NGU4YTZjYzEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVUF0gTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29kZSBpbnRv
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBhIG5ldyBjbGFzcyBwYWlyIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci9Qcm94
eS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRp
YVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnJlY2Vp
dmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
OjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojph
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXREaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhKToKKwogMjAyMC0wMy0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDcmVhdGUgYSBmbGFnIHRvIGRpc2FibGUgaW4tYXBwIGJyb3dzZXIgcXVpcmtz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA5ZGY1ZDgwMTlkODJhYjA0ZDk1YzcyNGFhY2Iy
OWM0MzliZDM3MWE4Li5jODBiMjFhOTRmYzAwYjBhNjE5YjQ0ZWYzNTQ3MGU2M2Q4NmU3MmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3Miw2ICsxNzIsNyBAQCBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxl
UmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25J
T1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODIyYTRkZWMyOGU5OGVkZDE1YmNkODdmODIzNGJkMjk2MzAzODliNC4uNDcz
NGEwNmIyNDk3ZDQxOWMwOTkyMzc4YTQ3YTMyMDEyZjczZWEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1Miw2ICs0MTUy
LDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNTk1OTYy
MTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oICovOyB9OwogCQlDREE3OTgy
NzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEQTk1OTM1MjQxMjND
QjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovOyB9OworCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBF
RUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNz
aW9uSGVscGVySU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5
MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAwQzYw
QjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9s
c0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMkUxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250
cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07
CkBAIC0xMzg5OSw2ICsxMzkwMSw4IEBACiAJCUNEODcxQzY4MUZCNTJCNjkwMEYwQjk2NSAvKiBJ
U09Cb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPQm94LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4NzFDNjkxRkI1MkI2OTAwRjBCOTY1
IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
U09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDg3MUM2QTFGQjUy
QjZBMDBGMEI5NjUgLyogSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSVNPT3JpZ2luYWxGb3JtYXRCb3guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNz
aW9uSGVscGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNz
aW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhBN0JCOTE5
NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QTdCQkExOTc3MzVGRTAwQ0JE
NjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjIyOCw2ICsyNjIzMiw4IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1
ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8q
IEF1ZGlvRmlsZVJlYWRlcklPUy5oICovLAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAv
KiBBdWRpb1Nlc3Npb25JT1MubW0gKi8sCisJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8q
IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovLAorCQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1
OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi8sCiAJCQkJMDc2MzhBOTcxODg0NDg3MjAw
RTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCAqLywKIAkJCQkwNzYzOEE5ODE4ODQ0
ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLywKIAkJCSk7CkBAIC0z
MTU2MCw2ICszMTU2Niw3IEBACiAJCQkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlh
U2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBC
RkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUY4N0NGRTFCMjhG
NDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzk2RjVFQzgxQjU4NzIyNjAwOTFFQTlEIC8q
IE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
OTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlk
ZXJNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3MzEsNiArMzM3MzgsNyBAQAogCQkJCTE1MDUy
NEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQjEyNEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVk
aWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAw
QkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOTBGNjU1NTFC
MjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNzJlZDBhZWFi
ZDkyOTQ1NmVhZTFlNDQ3MDU3NThjYjBmOTJmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTAs
MCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKworI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CisKK2NsYXNzIE1lZGlhU2Vzc2lv
bkhlbHBlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25IZWxwZXJDbGllbnQo
KSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNsYXNzIEludGVycnVwdGlvblR5cGUgOiBib29sIHsg
QmVnaW4sIEVuZCB9OworICAgIGVudW0gY2xhc3MgU2hvdWxkUmVzdW1lIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9u
VHlwZSwgU2hvdWxkUmVzdW1lKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFN1c3BlbmRlZFVuZGVy
TG9jayA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpID0gMDsKKworICAg
IGVudW0gY2xhc3MgSGFzQXZhaWxhYmxlVGFyZ2V0cyA6IGJvb2wgeyBObywgWWVzIH07CisgICAg
dmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2
YWlsYWJsZVRhcmdldHMpID0gMDsKKworICAgIGVudW0gY2xhc3MgUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
KSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZFBhdXNlIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSkg
PSAwOworCisgICAgZW51bSBjbGFzcyBTdXBwb3J0c0FpclBsYXlWaWRlbyA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9y
dHNBaXJQbGF5VmlkZW8sIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSA9IDA7Cit9OworCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVNlc3Npb25IZWxwZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBNZWRpYVNlc3Npb25IZWxwZXImIHNo
YXJlZEhlbHBlcigpOworICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhlbHBlcihVbmlxdWVSZWY8
TWVkaWFTZXNzaW9uSGVscGVyPiYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFNoYXJlZEhlbHBl
cigpOworCisgICAgTWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwg
fk1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgYWRkQ2xpZW50KE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudCYpOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxp
Y2F0aW9uUElEKGludCkgPSAwOworCisgICAgYm9vbCBpc01vbml0b3JpbmdXaXJlbGVzc1JvdXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQ7IH0KKyAg
ICBib29sIGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGU7IH0KKyAgICBib29sIGFjdGl2ZVZpZGVv
Um91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlVmlkZW9S
b3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvOyB9CisgICAgYm9vbCBpc1BsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQ7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYWtIYXNoU2V0PE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudD4gbV9jbGllbnRzOworICAgIHVpbnQzMl90IG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
Q291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5Vmlk
ZW8geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCB7
IGZhbHNlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzY2ODliNTM4NzRkMDQ5ODM2NmRmMGM4NDMwY2I5ZGQ2YjZhMGNiMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxw
ZXJJT1MubW0KQEAgLTAsMCArMSw2MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIk1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIgorCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5YmFja1Rh
cmdldENvY29hLmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCisjaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlJvdXRl
RGV0ZWN0b3IuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL2lvcy9DZWxlc3RpYWxTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgorCisjaW1wb3J0IDxwYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgorCitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlTm90aWZpY2F0aW9uIjsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcq
IFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNT
dHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBA
IldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24iOworCisjaWYg
SEFWRShDRUxFU1RJQUwpCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2Vs
ZXN0aWFsKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250
cm9sbGVyKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1D
b250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVy
X0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25u
ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVj
dGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25E
aWVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VO
b3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2Vs
ZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlm
aWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0
dHJpYnV0ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3Rp
YWwsIEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNB
aXJQbGF5VmlkZW8sIE5TU3RyaW5nICopCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzsKKworQGludGVyZmFjZSBXZWJNZWRp
YVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyaU9TKiBf
Y2FsbGJhY2s7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBSZXRhaW5QdHI8QVZSb3V0
ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKKyNlbmRpZgorICAgIGJvb2wgX21vbml0b3JpbmdB
aXJQbGF5Um91dGVzOworICAgIGJvb2wgX3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5k
aW5nOworfQorCistIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1Mq
KWNhbGxiYWNrOworCistICh2b2lkKWNsZWFyQ2FsbGJhY2s7CistICh2b2lkKWludGVycnVwdGlv
bjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistICh2b2lkKWFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistICh2b2lk
KWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b247CistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKKy0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlOwor
CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpCistICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlS
b3V0ZXM7CistICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKyNlbmRpZgorCitA
ZW5kCisKK2NsYXNzIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNl
c3Npb25IZWxwZXIgeworcHVibGljOgorICAgIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOworICAg
IH5NZWRpYVNlc3Npb25IZWxwZXJpT1MoKTsKKworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SW50ZXJydXB0aW9uVHlwZSwgTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTaG91bGRSZXN1bWUpOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJl
Y29tZUluYWN0aXZlKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwor
I2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHZvaWQgY2FyUGxheVNlcnZlckRpZWQoKTsKKyAgICB2
b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsKKyAgICB2b2lk
IGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJik7CisgICAgdm9pZCBh
Y3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgdXNpbmcgSGFzQXZhaWxhYmxlVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudDo6SGFzQXZhaWxhYmxlVGFyZ2V0czsKKyAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBl
ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOworICAgIHVzaW5n
IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OworICAgIHVzaW5nIFNob3VsZFBhdXNlID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKKyAgICB1c2luZyBTaG91bGRSZXN1
bWUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZTsKKyAgICB1c2luZyBT
dXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VwcG9ydHNB
aXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CisKKyAgICB2b2lkIHNldElzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOworCisgICAgdm9pZCBwcm92aWRlUHJlc2VudGlu
Z0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7CisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
cygpIGZpbmFsOworCisgICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpj
T2JzZXJ2ZXI7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRB
cHBsaWNhdGlvblBJRCB7IGZhbHNlIH07CisjZW5kaWYKK307CisKK3N0YXRpYyBVbmlxdWVSZWY8
TWVkaWFTZXNzaW9uSGVscGVyPiYgc2hhcmVkSGVscGVySW5zdGFuY2UoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyPj4gaGVscGVyID0g
bWFrZVVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXJpT1M+KCk7CisgICAgcmV0dXJuIGhlbHBl
cjsKK30KKworTWVkaWFTZXNzaW9uSGVscGVyJiBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhl
bHBlcigpCit7CisgICAgcmV0dXJuIHNoYXJlZEhlbHBlckluc3RhbmNlKCk7Cit9CisKK3ZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyOjpyZXNldFNoYXJlZEhlbHBlcigpCit7CisgICAgc2hhcmVkSGVs
cGVySW5zdGFuY2UoKSA9IG1ha2VVbmlxdWVSZWY8TWVkaWFTZXNzaW9uSGVscGVyaU9TPigpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2V0U2hhcmVkSGVscGVyKFVuaXF1ZVJlZjxN
ZWRpYVNlc3Npb25IZWxwZXI+JiYgaGVscGVyKQoreworICAgIHNoYXJlZEhlbHBlckluc3RhbmNl
KCkgPSBXVEZNb3ZlKGhlbHBlcik7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjphZGRD
bGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFt
X2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVtb3ZlQ2xpZW50KE1lZGlhU2Vzc2lvbkhl
bHBlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xp
ZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworfQorCitNZWRpYVNlc3Npb25I
ZWxwZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCisgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNz
aW9uSGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKKyAgICBtX2lzRXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisKKyNpZiBIQVZF
KENFTEVTVElBTCkKKyAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxsb3B0KTsK
KyNlbmRpZgorfQorCitNZWRpYVNlc3Npb25IZWxwZXJpT1M6On5NZWRpYVNlc3Npb25IZWxwZXJp
T1MoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX29iamNPYnNl
cnZlciBjbGVhckNhbGxiYWNrXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisK
K3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKGludCBwaWQpCit7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgaWYgKG1faGF2ZVByZXNl
bnRlZEFwcGxpY2F0aW9uUElEKQorICAgICAgICByZXR1cm47CisgICAgbV9oYXZlUHJlc2VudGVk
QXBwbGljYXRpb25QSUQgPSB0cnVlOworCisgICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1Db250cm9s
bGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIFtbZ2V0QVZTeXN0ZW1Db250cm9sbGVy
Q2xhc3MoKSBzaGFyZWRBVlN5c3RlbUNvbnRyb2xsZXJdIHNldEF0dHJpYnV0ZTpAKHBpZCkgZm9y
S2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJv
bSgpIGVycm9yOiZlcnJvcl07CisgICAgaWYgKGVycm9yKQorICAgICAgICBXVEZMb2dBbHdheXMo
IkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uLlVURjhTdHJpbmcpOworI2VuZGlmCit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKG1fbW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzQ291bnQrKykKKyAgICAgICAgcmV0dXJuOworCisgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXNdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQor
eworICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgt
LW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30K
KworI2lmIEhBVkUoQ0VMRVNUSUFMKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmNhclBs
YXlTZXJ2ZXJEaWVkKCkKK3sKKyAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxs
b3B0KTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nv
bm5lY3RlZChPcHRpb25hbDxib29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKK3sKKyAgICBpZiAo
Y2FyUGxheUlzQ29ubmVjdGVkKSB7CisgICAgICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0KGNhclBsYXlJc0Nvbm5lY3RlZC52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0
ZWRBdHRyaWJ1dGUoKSkgeworICAgICAgICBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXRJc1BsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdChbW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFW
U3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9D
YXJQbGF5SXNDb25uZWN0ZWRBdHRyaWJ1dGUoKV0gYm9vbFZhbHVlXSk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29s
IGlzUGxheWluZykKK3sKKyAgICBpZiAoaXNQbGF5aW5nID09IG1faXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID8gUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6Ok5vKTsKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9u
YWw8Ym9vbD4mJiBzaG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xp
ZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1
c2UudmFsdWVPcihmYWxzZSkgPyBTaG91bGRQYXVzZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsK
K30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2UoT3B0aW9uYWw8Ym9vbD4mJiBzdXBwb3J0c0FpclBsYXlWaWRlbykKK3sKKyAgICBtX2FjdGl2
ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA9IHN1cHBvcnRzQWlyUGxheVZpZGVvLnZh
bHVlT3IoZmFsc2UpOworCisgICAgYXV0byBwbGF5YmFja1RhcmdldCA9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6Y3JlYXRlKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgc2hhcmVk
QXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0XSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKG1f
YWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID8gU3VwcG9ydHNBaXJQbGF5Vmlk
ZW86OlllcyA6IFN1cHBvcnRzQWlyUGxheVZpZGVvOjpObywgcGxheWJhY2tUYXJnZXQuY29weVJl
ZigpKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJ
bnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlIHR5
cGUsIE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkK
K3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LnJl
Y2VpdmVkSW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJlc3VtZSk7Cit9CisKK3ZvaWQgTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9y
IChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5k
ZWRVbmRlckxvY2sgdW5kZXJMb2NrKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQodW5kZXJM
b2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEJl
Y29tZUluYWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7Cit9CisKK3ZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2sgdW5kZXJMb2NrKQorewor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHVuZGVyTG9jayk7Cit9CisKK3ZvaWQgTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpCit7
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9pc0V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWls
YWJsZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZShtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPyBIYXNB
dmFpbGFibGVUYXJnZXRzOjpZZXMgOiBIYXNBdmFpbGFibGVUYXJnZXRzOjpObyk7Cit9CisKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKKworLSAoaWQpaW5pdFdpdGhDYWxs
YmFjazooTWVkaWFTZXNzaW9uSGVscGVyaU9TKiljYWxsYmFjaworeworICAgIExPRyhNZWRpYSwg
Ii1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2tdIik7CisKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9jYWxs
YmFjayA9IGNhbGxiYWNrOworCisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGludGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OltQQUw6OmdldEFWQXVkaW9TZXNz
aW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV1dOworCisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KSBu
YW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZp
Y2F0aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KSBuYW1lOldlYlVJ
QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwor
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
OikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVj
dDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFtZTpQQUw6Omdl
dF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uKCkgb2Jq
ZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyNpZiBIQVZFKENFTEVT
VElBTCkKKyAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9TZXJ2ZXJDb25uZWN0aW9u
RGllZE5vdGlmaWNhdGlvbigpKQorICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlTZXJ2ZXJEaWVkOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRy
b2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAg
ICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFu
Z2VOb3RpZmljYXRpb24oKSkKKyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihjYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lz
dGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24oKSBv
YmplY3Q6bmlsXTsKKyAgICBpZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZTopIG5h
bWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmlj
YXRpb24oKSBvYmplY3Q6bmlsXTsKKyNlbmRpZgorCisgICAgLy8gTm93IHBsYXlpbmcgd29uJ3Qg
d29yayB1bmxlc3Mgd2UgdHVybiBvbiB0aGUgZGVsaXZlcnkgb2YgcmVtb3RlIGNvbnRyb2wgZXZl
bnRzLgorICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBbW1BBTDo6Z2V0VUlB
cHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIGJlZ2luUmVjZWl2aW5nUmVtb3Rl
Q29udHJvbEV2ZW50c107CisgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICB9
KTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBMT0co
TWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOworCisjaWYgIVBMQVRG
T1JNKFdBVENIT1MpCisgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgeworICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdU
Rk1vdmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgInNhZmVseVRlYXJEb3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKKyAgICAgICAg
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICAgICAgcm91dGVEZXRlY3Rv
ci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKKyAgICAgICAgICAgIHJvdXRlRGV0
ZWN0b3IuY2xlYXIoKTsKKyAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRl
RGV0ZWN0aW9uRW5hYmxlZCA9IE5POworI2VuZGlmCisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZCljbGVhckNhbGxiYWNrCit7CisgICAgTE9HKE1lZGlhLCAiLVtX
ZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKKyAgICBfY2FsbGJhY2sgPSBu
aWw7Cit9CisKKy0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCit7CisgICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxh
YmxlXSIpOworI2lmICFQTEFURk9STShXQVRDSE9TKQorICAgIHJldHVybiBfcm91dGVEZXRlY3Rv
ci5nZXQoKS5tdWx0aXBsZVJvdXRlc0RldGVjdGVkOworI2Vsc2UKKyAgICByZXR1cm4gTk87Cisj
ZW5kaWYKK30KKworI2lmICFQTEFURk9STShXQVRDSE9TKQorLSAodm9pZClzdGFydE1vbml0b3Jp
bmdBaXJQbGF5Um91dGVzCit7CisgICAgaWYgKF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gdHJ1ZTsKKwor
ICAgIGlmIChfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChfcm91dGVEZXRlY3RvcikgeworICAgICAgICBfcm91dGVEZXRlY3Rv
ci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBZRVM7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSB0cnVlOwor
CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgc3RhcnRNb25pdG9yaW5n
QWlyUGxheVJvdXRlc10iKTsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09u
TWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgQVNTRVJUKCFwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rvcik7CisKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgeworICAgICAgICAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRl
Y3RvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlJvdXRlRGV0ZWN0b3JJbnN0YW5jZSgpIGluaXRd
KTsKKyAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRl
RGV0ZWN0aW9uRW5hYmxlZCA9IHByb3RlY3RlZFNlbGYtPl9tb25pdG9yaW5nQWlyUGxheVJvdXRl
czsKKyAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRk
T2JzZXJ2ZXI6cHJvdGVjdGVkU2VsZi5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3Iod2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KSBuYW1lOkFWUm91dGVEZXRlY3Rvck11bHRpcGxlUm91
dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnByb3RlY3RlZFNlbGYtPl9y
b3V0ZURldGVjdG9yLmdldCgpXTsKKworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X2NhbGxi
YWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgICAgICAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nID0gZmFsc2U7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCit7CisgICAg
aWYgKCFfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIExP
RyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJv
dXRlc10iKTsKKworICAgIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcyA9IGZhbHNlOworICAgIF9y
b3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IE5POworfQorI2VuZGlm
IC8vICFQTEFURk9STShXQVRDSE9TKQorCistICh2b2lkKWludGVycnVwdGlvbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOworICAgIHVzaW5nIFNob3Vs
ZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUmVzdW1lOworCisgICAg
TlNVSW50ZWdlciB0eXBlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07
CisgICAgSW50ZXJydXB0aW9uVHlwZSBpbnRlcnJ1cHRpb25UeXBlID0gKHR5cGUgPT0gQVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgPyBJbnRlcnJ1cHRpb25UeXBlOjpFbmQgOiBJ
bnRlcnJ1cHRpb25UeXBlOjpCZWdpbik7CisgICAgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSA9
IFNob3VsZFJlc3VtZTo6Tm87CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBpbnRlcnJ1cHRpb25dIC0gdHlwZSA9ICVpIiwgKGludCl0eXBlKTsKKworICAgIGlmIChp
bnRlcnJ1cHRpb25UeXBlID09IEludGVycnVwdGlvblR5cGU6OkVuZCAmJiBbW1tub3RpZmljYXRp
b24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlv
bktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9u
T3B0aW9uU2hvdWxkUmVzdW1lKQorICAgICAgICBzaG91bGRSZXN1bWUgPSBTaG91bGRSZXN1bWU6
OlllczsKKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaW50ZXJydXB0aW9uVHlwZSwgc2hvdWxk
UmVzdW1lXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0
ZWRTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjay0+cmVjZWl2ZWRJbnRlcnJ1
cHRpb24oaW50ZXJydXB0aW9uVHlwZSwgc2hvdWxkUmVzdW1lKTsKKyAgICB9KTsKK30KKworLSAo
dm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCit7CisgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CisKKyAgICBpZiAoIV9jYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXSIpOworCisgICAgYXV0byBpc1N1c3Bl
bmRlZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAi
aXNTdXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFsdWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZ
ZXMgOiBTdXNwZW5kZWRVbmRlckxvY2s6Ok5vOworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0
Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNT
dXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOworICAgIH0p
OworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlXSIpOworCisg
ICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY2Fs
bGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjay0+
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClhcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7
CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlXSIpOworCisgICAgY2FsbE9uV2ViVGhyZWFk
T3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRT
ZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUoKTsKKyAgICB9KTsKK30KKworLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWls
YWJsZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKKworICAgIGlmICghX2NhbGxiYWNrIHx8ICFfbW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIi1b
V2ViTWVkaWFTZXNzaW9uSGVscGVyIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlXSIp
OworCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0
byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxs
YmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKKyAgICB9KTsK
K30KKworLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworICAgIGlmICghX2Nh
bGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZF0iKTsKKworICAgIGF1dG8g
aXNTdXNwZW5kZWRVbmRlckxvY2sgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZv
cktleTpAImlzU3VzcGVuZGVkVW5kZXJMb2NrIl0gYm9vbFZhbHVlXSA/IFN1c3BlbmRlZFVuZGVy
TG9jazo6WWVzIDogU3VzcGVuZGVkVW5kZXJMb2NrOjpObzsKKyAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZiksIGlzU3VzcGVuZGVkVW5kZXJMb2NrXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byog
Y2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFj
ay0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOwor
ICAgIH0pOworfQorCisjaWYgSEFWRShDRUxFU1RJQUwpCistICh2b2lkKWNhclBsYXlTZXJ2ZXJE
aWVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNr
KQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBjYXJQbGF5U2VydmVyRGllZDpdIik7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlv
bik7CisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0
byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICBjYWxs
YmFjay0+Y2FyUGxheVNlcnZlckRpZWQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZCljYXJQbGF5
SXNDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7Cisg
ICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIE9wdGlvbmFsPGJvb2w+
IGNhclBsYXlJc0Nvbm5lY3RlZDsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5
c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVyKCkp
IHsKKyAgICAgICAgTlNOdW1iZXIgKm5zQ2FyUGxheUlzQ29ubmVjdGVkID0gW1tub3RpZmljYXRp
b24gdXNlckluZm9dIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXND
b25uZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKV07CisgICAgICAgIGlmIChuc0NhclBsYXlJ
c0Nvbm5lY3RlZCkKKyAgICAgICAgICAgIGNhclBsYXlJc0Nvbm5lY3RlZCA9IFtuc0NhclBsYXlJ
c0Nvbm5lY3RlZCBib29sVmFsdWVdOworICAgIH0KKworICAgIGNhbGxPbldlYlRocmVhZE9yRGlz
cGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwg
Y2FyUGxheUlzQ29ubmVjdGVkID0gV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpXSgpIG11dGFi
bGUgeworICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJh
Y2spCisgICAgICAgICAgICBjYWxsYmFjay0+dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURk1v
dmUoY2FyUGxheUlzQ29ubmVjdGVkKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBp
ZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgVU5VU0VEX1BBUkFNKG5vdGlm
aWNhdGlvbik7CisgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkUGF1c2U7CisgICAgaWYgKG5vdGlm
aWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRD
aGFuZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXJfU2hvdWxkUGF1c2UoKSkgeworICAgICAgICBOU051
bWJlciogbnNTaG91bGRQYXVzZSA9IFtub3RpZmljYXRpb24udXNlckluZm8gdmFsdWVGb3JLZXk6
Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRp
b25QYXJhbWV0ZXJfU2hvdWxkUGF1c2UoKV07CisgICAgICAgIGlmIChuc1Nob3VsZFBhdXNlKQor
ICAgICAgICAgICAgc2hvdWxkUGF1c2UgPSBuc1Nob3VsZFBhdXNlLmJvb2xWYWx1ZTsKKyAgICB9
CisKKyAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICBpZiAoY2Fu
TG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSgpICYmIGNhbkxvYWRB
VlN5c3RlbUNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlvbktleV9Sb3V0ZVN1cHBvcnRzQWlyUGxh
eVZpZGVvKCkpIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5KiBwaWNrZWRSb3V0ZSA9IFtbZ2V0QVZT
eXN0ZW1Db250cm9sbGVyQ2xhc3MoKSBzaGFyZWRBVlN5c3RlbUNvbnRyb2xsZXJdIGF0dHJpYnV0
ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfUGlja2VkUm91dGVBdHRyaWJ1dGUoKV07Cisg
ICAgICAgIGlmIChbcGlja2VkUm91dGUgaXNLaW5kT2ZDbGFzczpOU0RpY3Rpb25hcnkuY2xhc3Nd
KSB7CisgICAgICAgICAgICBOU051bWJlciogbnNTdXBwb3J0c0FpclBsYXlWaWRlbyA9IFtwaWNr
ZWRSb3V0ZSB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlv
bktleV9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCldOworICAgICAgICAgICAgaWYgKG5zU3Vw
cG9ydHNBaXJQbGF5VmlkZW8pCisgICAgICAgICAgICAgICAgc3VwcG9ydHNBaXJQbGF5VmlkZW8g
PSBuc1N1cHBvcnRzQWlyUGxheVZpZGVvLmJvb2xWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVk
U2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2hvdWxkUGF1c2UgPSBXVEZNb3ZlKHNob3VsZFBhdXNl
KSwgc3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBXVEZNb3ZlKHN1cHBvcnRzQWlyUGxheVZpZGVvKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+
X2NhbGxiYWNrKSB7CisgICAgICAgICAgICBjYWxsYmFjay0+YWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShXVEZNb3ZlKHNob3VsZFBhdXNlKSk7CisgICAgICAgICAgICBjYWxsYmFjay0+YWN0aXZl
VmlkZW9Sb3V0ZURpZENoYW5nZShXVEZNb3ZlKHN1cHBvcnRzQWlyUGxheVZpZGVvKSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworfQorI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFMKQorQGVuZAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCmluZGV4IDVkZjIwYTdhYTE0YzFjNGNhOTQ5MzdiNDli
MzBlNDAxZTk4ZTkzNTEuLjRkYzhmZjNjMTMyYWM1NTk4YjIzOWNjNGQyMjNlNjFhM2QwMDQzMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIgogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIApAQCAtNDEsMTggKzQyLDEzIEBAIGV4dGVybiBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIDogcHVibGljIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYSB7CitjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TCisgICAgOiBwdWJsaWMgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hCisgICAgLCBwdWJsaWMgTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAK
LSAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7CiAgICAg
Ym9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKLSNpZiBIQVZFKENF
TEVTVElBTCkKLSAgICB2b2lkIGNhclBsYXlTZXJ2ZXJEaWVkKCk7Ci0gICAgdm9pZCB1cGRhdGVD
YXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7Ci0gICAgdm9pZCBhY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOwotICAgIHZvaWQgYWN0aXZlVmlkZW9S
b3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmKTsKLSNlbmRpZgogICAgIHN0YXRpYyBXRUJD
T1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKIAogcHJp
dmF0ZToKQEAgLTY2LDE0ICs2MiwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvdmlkZVByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KCkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9u
V2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiwgRGVsYXlDYWxsaW5nVXBkYXRl
Tm93UGxheWluZykgZmluYWw7CiAKKyAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKKyAg
ICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3Vt
ZSkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVu
ZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKSBmaW5hbDsKKyAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShTaG91bGRQYXVzZSkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRl
RGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4m
JikgZmluYWw7CisgICAgdm9pZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpIGZpbmFsOwogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJNZWRpYVNlc3Npb25NYW5hZ2VyaU9TIjsgfQogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8
V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsKLSNpZiBIQVZFKENFTEVTVElB
TCkKKyAgICBib29sIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQgeyBmYWxzZSB9OwotI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IGNm
MjVmYjQ4NjAxNzY4MjVhNzdhZDg2MjRjYjQ1YmRmMzk4M2VjOGQuLjgwZTViNzAwNDdlZmE5MWJm
N2I3MjYxNzcyNjI2NWY1ODEzY2MzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0zNSw5
MyArMzUsMjkgQEAKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9y
dCAiU3lzdGVtTWVtb3J5LmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0jaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlJvdXRlRGV0ZWN0b3IuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvaW9zL0NlbGVz
dGlhbFNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KLSNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2lt
cG9ydCA8d3RmL1JBTVNpemUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KLQotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JUIE5T
U3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uID0gQCJX
ZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIjsK
LQotI2lmIEhBVkUoQ0VMRVNUSUFMKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElP
TkFMKENlbGVzdGlhbCkKLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChDZWxlc3RpYWwsIEFWU3lz
dGVtQ29udHJvbGxlcikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFW
U3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSwgTlNTdHJp
bmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29u
dHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWRBdHRyaWJ1dGUsIE5TU3RyaW5nICopCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxh
eUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJ
c0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlciwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9TZXJ2ZXJDb25u
ZWN0aW9uRGllZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlk
Q2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2VOb3RpZmljYXRpb25QYXJhbWV0ZXJfU2hvdWxkUGF1c2UsIE5TU3RyaW5nICopCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUGlja2Vk
Um91dGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwo
Q2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlvbktleV9Sb3V0ZVN1
cHBvcnRzQWlyUGxheVZpZGVvLCBOU1N0cmluZyAqKQotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1AaW50ZXJmYWNlIFdlYk1lZGlhU2Vzc2lvbkhlbHBlciA6IE5TT2JqZWN0
IHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiBfY2FsbGJhY2s7Ci0KLSNpZiBIQVZFKE1F
RElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgUmV0YWluUHRyPEFWUm91dGVE
ZXRlY3Rvcj4gX3JvdXRlRGV0ZWN0b3I7Ci0jZW5kaWYKLSAgICBib29sIF9tb25pdG9yaW5nQWly
UGxheVJvdXRlczsKLSAgICBib29sIF9zdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGlu
ZzsKLX0KLQotLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyop
Y2FsbGJhY2s7Ci0KLS0gKHZvaWQpY2xlYXJDYWxsYmFjazsKLS0gKHZvaWQpaW50ZXJydXB0aW9u
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0gKHZvaWQp
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKLS0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotLSAoQk9PTCloYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGU7Ci0K
LSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0tICh2b2lkKXN0
YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7Ci0tICh2b2lkKXN0b3BNb25pdG9yaW5nQWlyUGxh
eVJvdXRlczsKLSNlbmRpZgotCi1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcj4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUz4obmV3IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MpOworICAgIGF1dG8g
bWFuYWdlciA9IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyaU9TPihuZXcgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUyk7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxw
ZXIoKS5hZGRDbGllbnQoKm1hbmFnZXIpOworICAgIHJldHVybiBXVEZNb3ZlKG1hbmFnZXIpOwog
fQogCiBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkKICAg
ICA6IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgcmVzZXRSZXN0cmljdGlvbnMoKTsKLQotI2lmIEhBVkUoQ0VMRVNU
SUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOwotI2VuZGlm
CiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6On5NZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCkK
IHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9vYmpjT2JzZXJ2ZXIg
Y2xlYXJDYWxsYmFja107Ci0gICAgbV9vYmpjT2JzZXJ2ZXIgPSBuaWw7Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQor
ICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMoKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigp
LnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
cmVzZXRSZXN0cmljdGlvbnMoKQpAQCAtMTQzLDkgKzc5LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCiAKIGJvb2wgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCkKIHsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFy
Z2V0c0F2YWlsYWJsZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIHJldHVy
biBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLmlzRXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUoKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1
cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKQpAQCAtMTU1LDE2ICs4OSwxNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygp
CiAgICAgICAgIHJldHVybiBzZXNzaW9uLnJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0
b3JpbmcoKTsKICAgICB9KTsKIAotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlcXVp
cmVzTW9uaXRvcmluZyA9ICIsIHJlcXVpcmVzTW9uaXRvcmluZyk7CisgICAgaWYgKHJlcXVpcmVz
TW9uaXRvcmluZyA9PSBtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKQorICAgICAgICByZXR1
cm47CiAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2lzTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzID0gcmVxdWlyZXNNb25pdG9yaW5nOworCisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25pdG9yaW5n
KTsKIAogICAgIGlmIChyZXF1aXJlc01vbml0b3JpbmcpCi0gICAgICAgIFttX29iamNPYnNlcnZl
ciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKKyAgICAgICAgTWVkaWFTZXNzaW9uSGVs
cGVyOjpzaGFyZWRIZWxwZXIoKS5zdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwogICAg
IGVsc2UKLSAgICAgICAgW21fb2JqY09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRl
c107Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAgIE1lZGlhU2Vzc2lv
bkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwog
I2VuZGlmCiB9CiAKQEAgLTE3NCwyMSArMTA5LDEzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KCkKICAgICBp
ZiAobV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9IHRydWU7Ci0gICAgcHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVy
KCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCkKIHsKLSNpZiBIQVZFKENFTEVTVElBTCkKLSAgICBp
ZiAoIWNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0
ZUZyb20oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0g
ICAgW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxl
cl0gc2V0QXR0cmlidXRlOkAocHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCkpIGZvcktleTpnZXRB
VlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0ZUZyb20oKSBlcnJv
cjomZXJyb3JdOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gc2V0IHVwIFBJRCBwcm94eWluZzogJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbi5V
VEY4U3RyaW5nKTsKLSNlbmRpZgorICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVy
KCkucHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKSk7CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQ
bGF5YmFjayhQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgRGVsYXlDYWxsaW5nVXBkYXRl
Tm93UGxheWluZyBkZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKQpAQCAtMjAxLDQ1ICsxMjgs
MjUgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNr
KFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW8KICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkK
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXZlVGFyZ2V0cykKIHsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIGJvb2wgaGF2ZVRhcmdldHMgPSBbbV9vYmpj
T2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGhhdmVUYXJnZXRzKTsKIAogICAgIGZvckVhY2hTZXNzaW9uKFtoYXZlVGFy
Z2V0c10gKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShoYXZlVGFyZ2V0cyk7CisgICAgICAgIHNlc3Npb24uZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGF2ZVRhcmdldHMgPT0gSGFzQXZh
aWxhYmxlVGFyZ2V0czo6WWVzKTsKICAgICB9KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIH0KIAotI2lmIEhBVkUoQ0VMRVNUSUFMKQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpjYXJQbGF5U2VydmVyRGllZCgpCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Omlz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCBwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCiB7Ci0gICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKLSAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxsb3B0
KTsKKyAgICBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChwbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQgPT0gUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMpOwogfQogCi12
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRp
b25hbDxib29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSBzaG91bGRQYXVzZSkK
IHsKLSAgICBpZiAoY2FyUGxheUlzQ29ubmVjdGVkKSB7Ci0gICAgICAgIHNldElzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0KGNhclBsYXlJc0Nvbm5lY3RlZC52YWx1ZSgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBhdXNl
KTsKIAotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0
ZWRBdHRyaWJ1dGUoKSkgewotICAgICAgICBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzZXRJc1BsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdChbW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFW
U3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9D
YXJQbGF5SXNDb25uZWN0ZWRBdHRyaWJ1dGUoKV0gYm9vbFZhbHVlXSk7Ci19Ci0KLXZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxi
b29sPiYmIHNob3VsZFBhdXNlKQotewotICAgIGlmICghc2hvdWxkUGF1c2UgfHwgIXNob3VsZFBh
dXNlLnZhbHVlKCkpCisgICAgaWYgKHNob3VsZFBhdXNlICE9IFNob3VsZFBhdXNlOjpZZXMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGZvckVhY2hTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsK
QEAgLTI0OCwzMTMgKzE1NSw2MyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4mJiBzaG91bGRQYQogICAgIH0pOwog
fQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2UoT3B0aW9uYWw8Ym9vbD4mJiBzdXBwb3J0c0FpclBsYXlWaWRlbykKK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlW
aWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxh
eWJhY2tUYXJnZXQpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBzdXBwb3J0c0Fp
clBsYXlWaWRlbyk7CiAgICAgYXV0byBub3dQbGF5aW5nU2Vzc2lvbiA9IG5vd1BsYXlpbmdFbGln
aWJsZVNlc3Npb24oKTsKICAgICBpZiAoIW5vd1BsYXlpbmdTZXNzaW9uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ID0gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8udmFsdWVPcihmYWxzZSk7Ci0gICAgYXV0byBwbGF5YmFja1RhcmdldCA9IE1lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNz
KCkgc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0XSk7Ci0gICAgbm93UGxheWlu
Z1Nlc3Npb24tPnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KTsKKyAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoc3VwcG9ydHNBaXJQbGF5VmlkZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86Olll
cyk7CiAgICAgbm93UGxheWluZ1Nlc3Npb24tPnNldFBsYXliYWNrVGFyZ2V0KFdURk1vdmUocGxh
eWJhY2tUYXJnZXQpKTsKIH0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLUBp
bXBsZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKLQotLSAoaWQpaW5pdFdpdGhDYWxs
YmFjazooTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyopY2FsbGJhY2sKLXsKLSAgICBMT0coTWVkaWEs
ICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrXSIpOwotCi0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
X2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0KLSAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVy
ID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwotICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1
ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRp
b1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07Ci0KLSAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6
V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJ
QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0g
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZl
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOlBB
TDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24o
KSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotI2lmIEhBVkUo
Q0VMRVNUSUFMKQotICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5l
Y3Rpb25EaWVkTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheVNlcnZlckRpZWQ6KSBuYW1lOmdldEFWU3lzdGVt
Q29udHJvbGxlcl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxd
OwotICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERp
ZENoYW5nZU5vdGlmaWNhdGlvbigpKQotICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6Z2V0
QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlv
bigpIG9iamVjdDpuaWxdOwotICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0FjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkKLSAgICAgICAgW2NlbnRlciBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
OikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5v
dGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotI2VuZGlmCi0KLSAgICAvLyBOb3cgcGxheWluZyB3
b24ndCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxpdmVyeSBvZiByZW1vdGUgY29udHJv
bCBldmVudHMuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XiB7Ci0gICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBbW1BBTDo6
Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIGJlZ2luUmVjZWl2aW5n
UmVtb3RlQ29udHJvbEV2ZW50c107Ci0gICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICB9KTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSIpOwotCi0jaWYg
SEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotICAgIGlmICghcHRocmVh
ZF9tYWluX25wKCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3JvdXRlRGV0ZWN0b3IgPSBXVEZNb3ZlKF9yb3V0ZURldGVjdG9yKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJzYWZlbHlUZWFyRG93biAtIGRpcGF0Y2hl
ZCB0byBVSSB0aHJlYWQuIik7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVk
ID0gTk87Ci0gICAgICAgICAgICByb3V0ZURldGVjdG9yLmNsZWFyKCk7Ci0gICAgICAgICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIH0pOwotICAgIH0gZWxzZQotICAgICAg
ICBfcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSNlbmRp
ZgotCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjpzZWxmXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpY2xlYXJDYWxs
YmFjawotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNsZWFyQ2Fs
bGJhY2tdIik7Ci0gICAgX2NhbGxiYWNrID0gbmlsOwotfQotCi0tIChCT09MKWhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZQotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0iKTsKLSNpZiBIQVZFKE1FRElBX1BMQVlF
UikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgcmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgp
Lm11bHRpcGxlUm91dGVzRGV0ZWN0ZWQ7Ci0jZWxzZQotICAgIHJldHVybiBOTzsKLSNlbmRpZgot
fQotCi0jaWYgSEFWRShNRURJQV9QTEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotLSAodm9p
ZClzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzCi17Ci0gICAgaWYgKF9tb25pdG9yaW5nQWly
UGxheVJvdXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX21vbml0b3JpbmdBaXJQbGF5Um91
dGVzID0gdHJ1ZTsKLQotICAgIGlmIChfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRp
bmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfcm91dGVEZXRlY3RvcikgewotICAgICAg
ICBfcm91dGVEZXRlY3Rvci5nZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBZRVM7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1Bl
bmRpbmcgPSB0cnVlOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
c3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc10iKTsKLQotICAgIGNhbGxPbldlYlRocmVhZE9y
RGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKCFwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRl
Y3Rvcik7Ci0KLSAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAgICAg
ICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgICAgICBwcm90ZWN0ZWRT
ZWxmLT5fcm91dGVEZXRlY3RvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlJvdXRlRGV0ZWN0b3JJ
bnN0YW5jZSgpIGluaXRdKTsKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVj
dG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9IHByb3RlY3RlZFNlbGYtPl9tb25pdG9y
aW5nQWlyUGxheVJvdXRlczsKLSAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6cHJvdGVjdGVkU2VsZi5nZXQoKSBzZWxlY3RvcjpAc2Vs
ZWN0b3Iod2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KSBuYW1lOkFWUm91dGVEZXRl
Y3Rvck11bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0OnBy
b3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yLmdldCgpXTsKLQotICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X2NhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZSgpOwotICAgICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICB9Ci0K
LSAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3N0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5k
aW5nID0gZmFsc2U7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5
Um91dGVzCi17Ci0gICAgaWYgKCFfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25p
dG9yaW5nQWlyUGxheVJvdXRlc10iKTsKLQotICAgIF9tb25pdG9yaW5nQWlyUGxheVJvdXRlcyA9
IGZhbHNlOwotICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IE5POwotfQotI2VuZGlmIC8vIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hP
UykKLQotLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
Ci17Ci0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1VJbnRlZ2VyIHR5cGUgPSBb
W1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvblR5cGVLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6RW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9GbGFnczsKLQotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGlu
dGVycnVwdGlvbl0gLSB0eXBlID0gJWkiLCAoaW50KXR5cGUpOwotCi0gICAgaWYgKHR5cGUgPT0g
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlRW5kZWQgJiYgW1tbbm90aWZpY2F0aW9uIHVz
ZXJJbmZvXSBvYmplY3RGb3JLZXk6QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXld
IHVuc2lnbmVkSW50ZWdlclZhbHVlXSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlv
blNob3VsZFJlc3VtZSkKLSAgICAgICAgZmxhZ3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5
UmVzdW1lUGxheWluZzsKLQotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFp
blRocmVhZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgdHlwZSwgZmxhZ3NdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxi
YWNrOwotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGlmICh0eXBlID09IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUJlZ2FuKQotICAg
ICAgICAgICAgY2FsbGJhY2stPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTeXN0ZW1JbnRlcnJ1cHRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsYmFj
ay0+ZW5kSW50ZXJydXB0aW9uKGZsYWdzKTsKLQotICAgIH0pOwotfQogCi0tICh2b2lkKWFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
K3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJy
dXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNr
LT53aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lz
dGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICIt
W1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdIik7
Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJ
bmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07Ci0g
ICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQot
ICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgfSk7Ci19CisgICAgYXV0byBmbGFncyA9IHNob3VsZFJl
c3VtZSA9PSBTaG91bGRSZXN1bWU6OlllcyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1
bWVQbGF5aW5nIDogUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vRmxhZ3M7CiAKLS0gKHZvaWQpYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17
Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBpZiAoIV9jYWxsYmFjayB8
fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlXSIpOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFi
bGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJh
Y2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsK
LSAgICB9KTsKKyAgICBpZiAodHlwZSA9PSBJbnRlcnJ1cHRpb25UeXBlOjpCZWdpbikKKyAgICAg
ICAgYmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVw
dGlvbik7CisgICAgZWxzZQorICAgICAgICBlbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwogfQogCi0t
ICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIHsK
LSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQotICAgIGlmICghX2NhbGxiYWNrIHx8
IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKKyAgICBpZiAod2ls
bElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlXSIpOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBp
ZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAg
ICBjYWxsYmFjay0+YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLSAgICB9KTsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChpc1N1c3BlbmRlZFVuZGVyTG9jayA9PSBTdXNwZW5kZWRVbmRlckxvY2s6Olllcyk7CiB9CiAK
LS0gKHZvaWQpd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCkKIHsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQot
ICAgIGlmICghX2NhbGxiYWNrIHx8ICFfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMpCisgICAgaWYg
KHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHdpcmVsZXNzUm91dGVzQXZhaWxh
YmxlRGlkQ2hhbmdlXSIpOwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewot
ICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0g
ICAgICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2UoKTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIHsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJh
Y2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCisgICAgaWYgKHdpbGxJZ25vcmVT
eXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwg
Ii1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSIp
OwotCi0gICAgQk9PTCBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlmaWNhdGlvbiB1c2Vy
SW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBib29sVmFsdWVdOwot
ICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJvdGVjdGVk
U2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykK
LSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgfSk7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1c3BlbmRlZFVuZGVyTG9jayA9PSBT
dXNwZW5kZWRVbmRlckxvY2s6Olllcyk7CiB9CiAKLSNpZiBIQVZFKENFTEVTVElBTCkKLS0gKHZv
aWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkK
IHsKLSAgICBpZiAoIV9jYWxsYmFjaykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVw
dGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNl
c3Npb25IZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSIpOwotICAgIFVOVVNFRF9QQVJBTShub3Rp
ZmljYXRpb24pOwotICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVh
ZChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAg
ICAgY2FsbGJhY2stPmNhclBsYXlTZXJ2ZXJEaWVkKCk7Ci0gICAgfSk7CisgICAgTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwogfQogCi0t
ICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
T3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOwotICAgIGlmIChub3RpZmljYXRpb24g
JiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRp
b25QYXJhbWV0ZXIoKSkgewotICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5SXNDb25uZWN0ZWQg
PSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9s
bGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpXTsKLSAgICAgICAg
aWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQotICAgICAgICAgICAgY2FyUGxheUlzQ29ubmVjdGVk
ID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07Ci0gICAgfQotCi0gICAgY2FsbE9u
V2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNhclBsYXlJc0Nvbm5l
Y3RlZCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3Rl
ZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT51cGRhdGVDYXJQbGF5SXND
b25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbgotewotICAgIGlmICghX2NhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBPcHRpb25hbDxib29sPiBzaG91bGRQYXVzZTsK
LSAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpKSB7
Ci0gICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlmaWNhdGlvbi51c2VySW5m
byB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsKLSAgICAgICAgaWYgKG5z
U2hvdWxkUGF1c2UpCi0gICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5zU2hvdWxkUGF1c2UuYm9v
bFZhbHVlOwotICAgIH0KLQotICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWlyUGxheVZpZGVv
OwotICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRl
KCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRl
U3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgewotICAgICAgICBOU0RpY3Rpb25hcnkqIHBpY2tlZFJv
dXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJv
bGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0
dHJpYnV0ZSgpXTsKLSAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tpbmRPZkNsYXNzOk5TRGlj
dGlvbmFyeS5jbGFzc10pIHsKLSAgICAgICAgICAgIE5TTnVtYmVyKiBuc1N1cHBvcnRzQWlyUGxh
eVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9S
b3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKV07Ci0gICAgICAg
ICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKLSAgICAgICAgICAgICAgICBzdXBwb3J0
c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9vbFZhbHVlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91bGRQYXVzZSA9IFdURk1v
dmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdURk1vdmUoc3VwcG9ydHNB
aXJQbGF5VmlkZW8pXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBw
cm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsKLSAgICAgICAgICAgIGNh
bGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc3VwcG9ydHNBaXJQbGF5
VmlkZW8pKTsKLSAgICAgICAgfQotICAgIH0pOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19
Ci0jZW5kaWYgLy8gSEFWRShDRUxFU1RJQUwpCi1AZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CmluZGV4IGQ3NDliMmRiMDliOTY3NDZmNGEwZjFlMzRjMjE3NDJlZGY1M2U0NmIuLmVlMDQw
YjEyYWMyMDdmYzIzNGYzNTM1ODYxMzJmMjJhYjk1NmIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDcgQEAgJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIubWVzc2FnZXMuaW4KQEAgLTEyMiw2ICsxMjMsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
UmVtb3RlQ29kZWNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA5OTUwMzUxMmJhNTU4
YjJiNDEwMDhmNWIxNjY1MDQ2MGE5NTQxNDU2Li4wYjg1NzM2NDgxZTA3NTVmODZkOTI1ZTMwNjJl
NWRjM2UyMzY4MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTE4Myw2ICsxODMsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZWNvcmRlcnNNZXNzYWdlc1JlcGxpZXMK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVj
dFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3Ry
eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMWMzZDFh
MjBlZWEzYjczODAwMTAyZTFkMzE5ODM3OTAzYWE2Y2QwYS4uY2I3MTUyZmEzMTQ2OTUyNTEwMThm
YWVhMDVhZjEwNjM2ZTBiNDc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYs
NiArMjYsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvZ3JhcGhpY3Mg
XAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tYWMgXAogICAgICQoV2ViS2l0MikvR1BVUHJv
Y2Vzcy9tZWRpYSBcCisgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL2lvcyBcCiAgICAg
JChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0YyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJv
Y2VzcyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzIFwKQEAgLTU0LDYg
KzU1LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVSBcCiAgICAg
JChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9p
b3MgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjIFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
SW5zcGVjdG9yIFwKQEAgLTE2NCw2ICsxNjYsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBSZW1vdGVNZWRpYVJlY29yZGVyIFwKICAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBc
CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorICAgIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlciBcCisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAogICAgIFJlbW90
ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDczYzk3MDg0YmFkYjcy
ZWEwODAzYWUyMmJiZWRhNDIwMTYzN2UxYTQuLmRmNTY3ODFlNmU1ZTdmMzY2YzY4Mzc4OThkYzAx
OWRkOGZlZDQzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTgzLDYgKzgzLDEwIEBACiAjaW5jbHVkZSAi
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMjg5LDYgKzI5MywyMCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVu
c3VyZUF1ZGlvU2Vzc2lvbihFbnN1cmVBdWRpb1Nlc3Npb25Db21wbGV0aW9uJgogfQogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KCkK
K3sKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHkpCisgICAgICAgIG1fbWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5PigqdGhpcyk7CisgICAgcmV0dXJuICptX21lZGlhU2Vzc2lvbkhlbHBlclByb3h5OworfQor
Cit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBl
cigpCit7CisgICAgbWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKTsKK30KKyNlbmRpZgorCiBib29s
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDgwMTU2ZDFi
ZWNlYTZiYmUyMzhiNmEwMThiNTBmOTgyNWRiNTliNDQuLjM2OGIwYmY2NmJiODVhOWU0Y2FmYTJj
YjVhODJlNjcyY2NjMDU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBSZW1v
dGVDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsK
IGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI7CitjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKIGNsYXNz
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CiBjbGFzcyBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5Owogc3RydWN0IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRp
b247CkBAIC04Nyw3ICs4OCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFjdG9yeVByb3h5KCk7CiAjZW5kaWYK
LQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkmIG1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KCk7CisjZW5kaWYKICAgICBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKTsKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogICAgIFJlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlciYgYXVkaW9TZXNzaW9uTWFuYWdlcigpOwpAQCAtMTI0LDYg
KzEyNywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1
ZGlvU2Vzc2lvbkNvbXBsZXRpb24mJik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgdm9pZCBlbnN1cmVNZWRpYVNlc3Npb25IZWxwZXIoKTsKKyNlbmRpZgorCiAgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBmaW5hbDsKQEAgLTE2Nyw2ICsxNzQsOSBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFVRElPX1NFU1NJT04pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5PiBtX2F1ZGlvU2Vzc2lv
blByb3h5OwogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+IG1fbWVkaWFTZXNzaW9uSGVscGVy
UHJveHk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1YWI0MTcyZWQzMTQ3ZjI2YTkwMzdkYmM5ODg1YTk3ZjFlODA5
Y2M2Li5kODdkNzYxMzRhZWVjMWE4YWMwNzVlNTY5OWEyOTFhZjM5MTI3N2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsOSBAQCBtZXNzYWdlcyAtPiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIFNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbyk7CiAjZW5kaWYKICAgICBFbnN1cmVB
dWRpb1Nlc3Npb24oKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKSBTeW5jaHJvbm91cworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgRW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKKyNlbmRpZgogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTYwYjQ0ZWUzZDFiYjY1M2RjY2IxODM5MWY1ZGUzOGUzYTNkOTQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVz
c2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24pCisgICAgOiBt
X2dwdUNvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvbikKK3sKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6
OnNoYXJlZEhlbHBlcigpLmFkZENsaWVudCgqdGhpcyk7Cit9CisKK1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIHN0
b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNo
YXJlZEhlbHBlcigpLnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAg
ICBpZiAobV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IHRydWU7CisgICAgTWVkaWFTZXNzaW9u
SGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwor
fQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpzdG9wTW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkKK3sKKyAgICBpZiAoIW1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSBm
YWxzZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0b3BNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMoKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eTo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworICAgIGlm
IChtX3Byb3ZpZGVkQXBwbGljYXRpb25QSUQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJv
dmlkZWRBcHBsaWNhdGlvblBJRCA9IHRydWU7CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFy
ZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnJlY2VpdmVkSW50ZXJydXB0aW9uKElu
dGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKK3sKKyAgICBt
X2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlcjo6UmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1lKSwgeyB9
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2sp
Cit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChzdXNw
ZW5kZWRVbmRlckxvY2spLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sg
c3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spLCB7IH0pOworfQorCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgp
Cit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OkFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCksIHsg
fSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFy
Z2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpFeHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShoYXNBdmFpbGFibGVUYXJnZXRzKSwgeyB9KTsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6aXNQbGF5aW5nVG9BdXRv
bW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlp
bmcpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OklzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlk
Q2hhbmdlKHBsYXlpbmcpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNl
KQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpBY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBh
dXNlKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6YWN0
aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBs
YXlWaWRlbywgUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0KQorewor
ICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxh
eVZpZGVvLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSksIHsgfSk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
aW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFiNTBmMGIw
OTZlODhlYmZmZjc4NjRhODUzOTdkYTMyMGYyMTFhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkKKyAgICA6IHB1Ymxp
YyBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQKKyAgICAsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoK
KyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAv
LyBNZXNzYWdlcworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKKyAg
ICB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKTsKKyAgICB2b2lkIHByb3ZpZGVQ
cmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KTsKKworICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBl
ckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwg
U2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7CisgICAgdm9pZCBpc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQpIGZpbmFsOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRz
QWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgZmluYWw7
CisKKyAgICBib29sIG1fcHJvdmlkZWRBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzIHsgZmFsc2UgfTsKKyAgICBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWYyNmM0ODUxN2JhYmVhOGE4NDRiZjVkYWQ0NzVjZTdmZjM5OTkxMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKQorICAgIFN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQorICAgIFByb3ZpZGVQcmVz
ZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAxMDU2YjllZGU1NGJhYWFlMmIyOWEwNTY3YTg1ZjZhMTk0ODhiZmRkLi4xYzkyNDVlMGI5ZjRi
YmMyYjgwZDdlM2NjMDRlZmQyMDNkOGUwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQwLDYgKzQwLDcg
QEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
VHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5LmNwcAogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcApAQCAtNTYwLDYgKzU2MSw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCitXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWQ5ZjQ0YmI5ZjIy
ZTNjMjRmMWQyZDk4MDU4MzIxYTgxMGY3OWQzMy4uZjkzMjNmYjkzOTYwOThhOThkZjk2ZjZiZDYy
ZDAxNjJkNmRmOGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjYyLDYgKzY2Miw4IEBA
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNw
cAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRkNDFj
ZTg5ZWZmMjZmNTA0NWY1OGRlZmUzNDZjZTUzOTlkNmNjYzUuLjBlMzI2ODQ0ZDhkMDVkZDcwNWQw
NzBmZTQyYjI0MWZmMjdkMDVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA3MCw2ICs1MDcwLDEyIEBACiAJCUNEQTI5QTI3MUNC
RUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlDREE5M0RBRTIyRjhCQ0YzMDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1
cmlzdGljUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWNQYXJhbWV0ZXJzLmg7IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hT
ZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
QTkzREFGMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3Rp
Y1BhcmFtZXRlcnMuY3BwOyBwYXRoID0gaW9zL2Z1bGxzY3JlZW4vRnVsbHNjcmVlblRvdWNoU2Vj
aGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk1OTNBMjQxMkIxNzUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0IyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0MyNDEyQjY0NTAwOTEw
RUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk1OTQ1MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTk0NjI0MTJDNEY1MDA5MTBFRUYgLyog
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5NTk0NzI0MTJDOTE5MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUMyMDc4MjNGQjFFMjEw
MDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUMyMDc5
MjNGQjFFMjEwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RBQzIwN0MyM0ZCMUVGOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQwNiw2ICs1NDEyLDcgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMURBRjVBNEQyM0VDOUY3
OTAwQjdCNTE4IC8qIGNvY29hICovLAorCQkJCUNEQTk1OTM5MjQxMkIxNzUwMDkxMEVFRiAvKiBp
b3MgKi8sCiAJCQkJMDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcCAqLywKIAkJCQkwNzFCQzU3NzIzQzkzQkI3MDA2ODBEN0MgLyogQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKQEAgLTU0NjAsNiArNTQ2Nyw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFEMEVDRUE5MjNGQzg0QkIwMEQx
NzJGNiAvKiBjb2NvYSAqLywKKwkJCQlDREE5NTk0NDI0MTJDNERBMDA5MTBFRUYgLyogaW9zICov
LAogCQkJCTlCMTIyOUNDMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5jcHAgKi8sCiAJCQkJOUIxMjI5Q0IyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggKi8sCiAJCQkJOUIxMjI5Q0YyM0ZGMjgxNDAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtMTAx
NTQsNiArMTAxNjIsMjYgQEAKIAkJCW5hbWUgPSBGdWxsU2NyZWVuOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RBOTU5MzkyNDEyQjE3NTAwOTEwRUVGIC8qIGlvcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOTU5M0EyNDEy
QjE3NTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgKi8sCisJCQkJQ0RB
OTU5M0IyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oICovLAor
CQkJCUNEQTk1OTNDMjQxMkI2NDUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIu
bWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUNEQTk1OTQ0MjQxMkM0REEwMDkxMEVFRiAvKiBpb3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk1OTQ2MjQxMkM0
RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAgKi8sCisJCQkJ
Q0RBOTU5NDUyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
LmggKi8sCisJCQkJQ0RBOTU5NDcyNDEyQzkxOTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDREMyODMxQTIwMUJENzU2MDBFNkU3NDUg
LyogZnVsbHNjcmVlbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWY0ZDc1
ZjI5ODA4MDM0ZjFhNDljYmM5YTVjMjlkNTUxOTE4NTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFj
a1RhcmdldENvY29hLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcihXZWJQcm9jZXNzJiBw
cm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7CisgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuc3VyZU1lZGlhU2Vzc2lv
bkhlbHBlcigpLCB7IH0pOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6Y29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAgICBpZiAo
bV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHk6OlN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCksIHsgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sK
KyAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoLS1t
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6
OlN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBp
ZCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyUHJveHk6OlByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQocGlkKSwgeyB9KTsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnJlY2VpdmVkSW50ZXJydXB0aW9u
KEludGVycnVwdGlvblR5cGUgdHlwZSwgU2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKK3sKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVk
SW50ZXJydXB0aW9uKHR5cGUsIHNob3VsZFJlc3VtZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChz
dXNwZW5kZWRVbmRlckxvY2spOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRl
ZFVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9j
ayk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQor
eworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJs
ZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmlzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRl
RGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQoreworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5n
ZShzaG91bGRQYXVzZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3Rp
dmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxh
eVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldE9iamVjdDsKKyAgICBpZiAodGFy
Z2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0
Q29udGV4dFR5cGUpCisgICAgICAgIHRhcmdldE9iamVjdCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJh
Y2tUYXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBj
bGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgdGFy
Z2V0T2JqZWN0LmNvcHlSZWYoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworfQorCisjZW5kaWYK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDBmMDk4ZDg0
ZTc3ODI4MGU1YzJmNDQ0YWQ1YzBkZDEwYmNhODY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25IZWxwZXJJT1Mu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2NsYXNzIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkhlbHBlcgorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1
YWwgflJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKworICAgIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbigpOworCisgICAgdXNpbmcgSGFzQXZhaWxhYmxlVGFyZ2V0cyA9
IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SGFzQXZhaWxhYmxlVGFyZ2V0czsK
KyAgICB1c2luZyBJbnRlcnJ1cHRpb25UeXBlID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpJbnRlcnJ1cHRpb25UeXBlOworICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0
b21vdGl2ZUhlYWRVbml0OworICAgIHVzaW5nIFNob3VsZFBhdXNlID0gV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKKyAgICB1c2luZyBTaG91bGRSZXN1bWUg
PSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZTsKKyAgICB1
c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U3VwcG9ydHNBaXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2Nr
ID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7
CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisg
ICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyCisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
IGZpbmFsOworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpIGZp
bmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB2b2lkIHJlY2VpdmVkSW50ZXJydXB0aW9uKElu
dGVycnVwdGlvblR5cGUsIFNob3VsZFJlc3VtZSk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgdm9pZCBhcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKTsKKyAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KEhhc0F2YWlsYWJsZVRhcmdldHMpOworICAgIHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKKyAgICB2b2lkIGFj
dGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpOworICAgIHZvaWQgYWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmJik7CisKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlM2M1N2NkZjk2MzU5YzhmMzc4YjU5MTA0NjdhODI3MWM4
MWRkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlY2VpdmVkSW50ZXJydXB0
aW9uKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SW50ZXJydXB0
aW9uVHlwZSB0eXBlLCBlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OlNob3VsZFJlc3VtZSBzaG91bGRSZXN1bWUpCisgICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVu
ZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKKyAgICBBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZChlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlN1
c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCisgICAgQXBwbGljYXRpb25XaWxs
QmVjb21lSW5hY3RpdmUoKQorICAgIEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKKyAgICBF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6Okhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxl
VGFyZ2V0cykKKyAgICBJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShlbnVt
OmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKKyAgICBBY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6U2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCisgICAgQWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5n
ZShlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OlN1cHBvcnRzQWly
UGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dCB0YXJnZXQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGNjMWEzMmQ5MGRjMzBiYTFmYzZjMTVlNzA0Njc0OGY0YTMzYzZi
OTUuLmRkMTJkMDE5ZGQxY2E0N2Y1N2UzNmE1NGIyNzdhMGYyOGQ4MDZjNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE3OSw2ICsxNzksMTAgQEAKICNpbmNs
dWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmgiCisjZW5kaWYKKwogI2Rl
ZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50
b1VJbnQ2NCgpIDogMCkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5u
ZWwsICIlcCAtIFtzZXNzaW9uSUQ9JSIgUFJJdTY0ICJdIFdlYlByb2Nlc3M6OiIgZm10LCB0aGlz
LCBSRUxFQVNFX0xPR19TRVNTSU9OX0lELCAjI19fVkFfQVJHU19fKQogCkBAIC0yMDE0LDYgKzIw
MTgsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCB1
c2VHUFVQcm9jZXNzRm9yTWVkaWEpCiAgICAgZWxzZQogICAgICAgICBBdWRpb1Nlc3Npb246OnNl
dFNoYXJlZFNlc3Npb24oQXVkaW9TZXNzaW9uOjpjcmVhdGUoKSk7CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzZXRTaGFyZWRIZWxwZXIobWFrZVVuaXF1ZVJlZjxSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI+KCp0aGlzKSk7CisgICAgZWxzZQorICAgICAgICBNZWRpYVNl
c3Npb25IZWxwZXI6OnJlc2V0U2hhcmVkSGVscGVyKCk7CisjZW5kaWYKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392961</attachid>
            <date>2020-03-08 10:57:16 -0700</date>
            <delta_ts>2020-03-08 12:06:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208727-20200308105715.patch</filename>
            <type>text/plain</type>
            <size>109122</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRmNzRmN2MwZGY4NjU0
NWJkNDk3MmU2NDBjNjFhNWRmOWE3YzYwNC4uZDZiMWI2N2IwNzBjZjFhODI2YTU4MWYyYjViZmM4
MTAzZDEwNDljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTAzLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lz
dGVtQ29udHJvbGxlciBjb2RlIGludG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29k
ZSBvdXQgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyBhbmQgaW50byBhIG5ldworICAgICAgICBj
bGFzcyBNZWRpYVNlc3Npb25IZWxwZXIsIHdoaWNoIGlzIGN1cnJlbnRseSBpT1Mgb25seS4gVGhl
IGFic3RyYWN0IGJhc2UgY2xhc3MKKyAgICAgICAgd2lsbCBiZSBvdmVycmlkZW4gYnkgV2ViS2l0
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBEb24n
dCBjYWxsIGEgdmlydHVhbCBtZXRob2QgKHJlc2V0UmVzdHJpY3Rpb25zKCkpIGZyb20gdGhlIGNv
bnN0cnVjdG9yIG9mIGEKKyAgICAgICAgdmlydHVhbCBiYXNlIGNsYXNzOyB0aGUgdmlydHVhbCBm
dW5jdGlvbiB0YWJsZSBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldCwgYW5kIHRoZSBzdWJjbGFzc2Vz
JworICAgICAgICBvdmVycmlkZGVuIG1ldGhvZHMgd29uJ3QgYmUgY2FsbGVkLiBNb3ZlIHRoZSBj
YWxsIHRvIHBvc3QtY3JlYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLm1tLgorICAgICAgICAoc2hhcmVkSGVscGVySW5zdGFuY2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIpOgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyOjpyZXNldFNoYXJlZEhlbHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXI6OnNldFNoYXJlZEhlbHBlcik6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENs
aWVudCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUyk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6On5NZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2Fy
UGxheVNlcnZlckRpZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVD
YXJQbGF5SXNDb25uZWN0ZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJ
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24pOgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUp
OgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhl
bHBlciBpbml0V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxs
YmFja10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlXSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzXSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNz
aW9uSGVscGVyIGludGVycnVwdGlvbjpdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVs
cGVyIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDpdKToKKyAgICAgICAgKC1bV2ViTWVk
aWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOl0pOgorICAgICAgICAo
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOl0pOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVE
aWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZDpdKToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGNhclBsYXlTZXJ2ZXJEaWVkOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIg
Y2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZTpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjp+TWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cmlPUzo6Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25Q
SURJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9T
Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmlzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZWNlaXZlZElu
dGVycnVwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjph
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2FsbGJhY2s6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxiYWNr
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Np
b25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciB3aXJlbGVzc1JvdXRl
c0F2YWlsYWJsZURpZENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViTWVkaWFTZXNz
aW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgY2FyUGxheVNlcnZlckRpZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5SXNDb25uZWN0ZWRE
aWRDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBh
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOl0pOiBEZWxldGVkLgorCiAyMDIwLTAzLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FudmFz
IGRyYXdpbmcgY29tbWFuZHMgaGF2ZSB0byBiZSBmbHVzaGVkIHRvIHRoZSBHUFVQcm9jZXNzIGlu
IGJhdGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNTNiZTI2ZTU1YWFlYzUwMDRhMWUxMDM3MDc4MjdlZjM5NjJj
ZmNmNi4uYTg4ZmQ2NWVkYjA5MDU1NjU1OTAwZmRkZDE5MWI2YzI4YjcyNTljZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAyMC0wMy0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVUF0gTW92ZSBBVlN5c3RlbUNvbnRyb2xsZXIgY29kZSBpbnRv
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIEFkZCBhIG5ldyBjbGFzcyBwYWlyIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci9Qcm94
eS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRp
YVNlc3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcik6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OnJlY2Vp
dmVkSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
OjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojph
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpyZWNlaXZlZEludGVycnVwdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXREaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhKToKKwogMjAyMC0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVUF0gTnVsbC1kZXJlZmVyZW5jZSBjcmFzaCBpbiBHUFVQcm9jZXNzUHJveHk6
Om9wZW5HUFVQcm9jZXNzQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA5
ZGY1ZDgwMTlkODJhYjA0ZDk1YzcyNGFhY2IyOWM0MzliZDM3MWE4Li5jODBiMjFhOTRmYzAwYjBh
NjE5YjQ0ZWYzNTQ3MGU2M2Q4NmU3MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE3
Miw2ICsxNzIsNyBAQCBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CiBw
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiAKIHBsYXRmb3JtL2F1ZGlv
L21hYy9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODIyYTRkZWMyOGU5OGVkZDE1
YmNkODdmODIzNGJkMjk2MzAzODliNC4uNDczNGEwNmIyNDk3ZDQxOWMwOTkyMzc4YTQ3YTMyMDEy
ZjczZWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDE1Miw2ICs0MTUyLDggQEAKIAkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0
MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBNTk1OTYyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRp
ZXNDb2NvYS5oICovOyB9OwogCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNz
aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJ
Q0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxw
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovOyB9
OworCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDg3NUE3NDI0
MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVB
M0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsg
fTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdE
RTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMkUxN0M4
MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDJDMTdDODE0RUUwMEM2MEIzNCAvKiBK
U01lZGlhQ29udHJvbHNIb3N0LmggKi87IH07CkBAIC0xMzg5OSw2ICsxMzkwMSw4IEBACiAJCUNE
ODcxQzY4MUZCNTJCNjkwMEYwQjk2NSAvKiBJU09Cb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSVNPQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q4NzFDNjkxRkI1MkI2OTAwRjBCOTY1IC8qIElTT1ZUVEN1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJU09WVFRDdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDg3MUM2QTFGQjUyQjZBMDBGMEI5NjUgLyogSVNPT3JpZ2luYWxGb3Jt
YXRCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVNPT3JpZ2lu
YWxGb3JtYXRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDg3NUE3NDI0
MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDg3NUE3NTI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDhBN0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q4QTdCQkExOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQTg2MUQyMzdB
QTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjIyOCw2ICsyNjIzMiw4IEBACiAJCQkJQ0Q1
NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgKi8sCiAJCQkJ
Q0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oICovLAogCQkJ
CUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gKi8sCisJCQkJ
Q0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovLAor
CQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0g
Ki8sCiAJCQkJMDc2MzhBOTcxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MuaCAqLywKIAkJCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbSAqLywKIAkJCSk7CkBAIC0zMTU2MCw2ICszMTU2Niw3IEBACiAJCQkJQTE3RDI3
NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDOTAyN0Y0MjFCMUQwQUQyMDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDOUY4N0NGRTFCMjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZl
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREE5NTkzRjI0MTJCQUUwMDA5MTBFRUYgLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQ0NjBBMjI0MTI5OTQ1
MDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Qzk2RjVFQzgxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTZGNUVDNTFCNTg3MjI2MDA5MUVBOUQgLyogTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3
MzEsNiArMzM3MzgsNyBAQAogCQkJCTE1MDUyNEY1MUI3MTJGRjkwMDY5NkFBOSAvKiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQjEy
NEQ4RjFEMzgwQkI2MDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBB
VkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8q
IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM5NkY1RUM3MUI1
ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIg
LyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAKaW5kZXggNWY0MDQ1N2M3NWY3MWJhYjJjNzNlNjEyOWMxMGFmZWZlMGM1NTc2
NS4uMTM3NTc1MDU1N2NmMzA3ODBhMTlkYzlmMTFlMDc1OWI0MThhY2Q2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCkBAIC00NCw4ICs0NCwxMCBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcj4mIHNoYXJlZFBsYXRmb3JtTWVkaWFTZXNzaW9u
TQogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKQogewogICAgIGF1dG8mIG1hbmFnZXIgPSBzaGFyZWRQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIoKTsKLSAgICBpZiAoIW1hbmFnZXIpCisgICAgaWYgKCFtYW5h
Z2VyKSB7CiAgICAgICAgIG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNy
ZWF0ZSgpOworICAgICAgICBtYW5hZ2VyLT5yZXNldFJlc3RyaWN0aW9ucygpOworICAgIH0KICAg
ICByZXR1cm4gKm1hbmFnZXI7CiB9CiAKQEAgLTcyLDcgKzc0LDYgQEAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogICAgIDogbV9sb2dn
ZXIoQWdncmVnYXRlTG9nZ2VyOjpjcmVhdGUodGhpcykpCiAjZW5kaWYKIHsKLSAgICByZXNldFJl
c3RyaWN0aW9ucygpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGluZGV4RnJvbU1lZGlh
VHlwZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjM3MmVkMGFlYWJkOTI5NDU2ZWFlMWU0NDcwNTc1OGNiMGY5MmYyYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQbGF5YmFja1Rh
cmdldDsKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwg
fk1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIGVudW0gY2xhc3Mg
SW50ZXJydXB0aW9uVHlwZSA6IGJvb2wgeyBCZWdpbiwgRW5kIH07CisgICAgZW51bSBjbGFzcyBT
aG91bGRSZXN1bWUgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgdm9pZCByZWNlaXZl
ZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpID0gMDsKKworICAg
IGVudW0gY2xhc3MgU3VzcGVuZGVkVW5kZXJMb2NrIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVy
TG9jaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZChTdXNwZW5kZWRVbmRlckxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCkgPSAwOworCisgICAgZW51bSBjbGFzcyBIYXNBdmFpbGFibGVUYXJnZXRz
IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgPSAwOworCisgICAgZW51
bSBjbGFzcyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpID0gMDsKKworICAgIGVudW0gY2xhc3MgU2hvdWxk
UGF1c2UgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSA9IDA7CisKKyAgICBlbnVtIGNsYXNzIFN1cHBvcnRz
QWlyUGxheVZpZGVvIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZl
VmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJh
Y2tUYXJnZXQ+JiYpID0gMDsKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU2Vzc2lv
bkhlbHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIE1lZGlhU2Vzc2lvbkhlbHBlciYgc2hhcmVkSGVscGVyKCk7CisgICAgc3RhdGljIHZvaWQg
c2V0U2hhcmVkSGVscGVyKFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+JiYpOworICAgIHN0
YXRpYyB2b2lkIHJlc2V0U2hhcmVkSGVscGVyKCk7CisKKyAgICBNZWRpYVNlc3Npb25IZWxwZXIo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+TWVkaWFTZXNzaW9uSGVscGVyKCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBhZGRDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Jik7CisgICAg
dm9pZCByZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50Jik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CisKKyAgICBib29s
IGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXNDb3VudDsgfQorICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZTsgfQorICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0KKyAg
ICBib29sIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KCkgY29uc3QgeyByZXR1cm4gbV9p
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2Vha0hh
c2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50PiBtX2NsaWVudHM7CisgICAgdWludDMyX3Qg
bV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAgfTsKKyAgICBib29sIG1faXNFeHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FjdGl2ZVZp
ZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGxh
eWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjY4OWI1Mzg3NGQwNDk4MzY2ZGYwYzg0MzBj
YjlkZDZiNmEwY2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtMCwwICsxLDYwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFTZXNzaW9uSGVscGVy
SU9TLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaCIKKyNpbXBvcnQgIldlYkNvcmVU
aHJlYWRSdW4uaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvaW9zL0NlbGVzdGlhbFNQ
SS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVW5p
cXVlUmVmLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
I2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK1dFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2Vi
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBP
UlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiI7
CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNh
dGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiI7CisKKyNpZiBIQVZFKENFTEVTVElBTCkKK1NPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SS19PUFRJT05BTChDZWxlc3RpYWwpCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9O
QUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRp
b25TdGF0ZUZyb20sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2Vs
ZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkQXR0cmlidXRlLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVt
Q29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIsIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNv
bnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xsZXJf
QWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9BY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3VsZFBhdXNlLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0
ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlLCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVz
Y3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbywgTlNTdHJpbmcgKikKKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVy
aU9TOworCitAaW50ZXJmYWNlIFdlYk1lZGlhU2Vzc2lvbkhlbHBlciA6IE5TT2JqZWN0IHsKKyAg
ICBNZWRpYVNlc3Npb25IZWxwZXJpT1MqIF9jYWxsYmFjazsKKworI2lmICFQTEFURk9STShXQVRD
SE9TKQorICAgIFJldGFpblB0cjxBVlJvdXRlRGV0ZWN0b3I+IF9yb3V0ZURldGVjdG9yOworI2Vu
ZGlmCisgICAgYm9vbCBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXM7CisgICAgYm9vbCBfc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmc7Cit9CisKKy0gKGlkKWluaXRXaXRoQ2FsbGJh
Y2s6KE1lZGlhU2Vzc2lvbkhlbHBlcmlPUyopY2FsbGJhY2s7CisKKy0gKHZvaWQpY2xlYXJDYWxs
YmFjazsKKy0gKHZvaWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAoQk9PTCloYXNX
aXJlbGVzc1RhcmdldHNBdmFpbGFibGU7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKy0gKHZv
aWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKKy0gKHZvaWQpc3RvcE1vbml0b3JpbmdB
aXJQbGF5Um91dGVzOworI2VuZGlmCisKK0BlbmQKKworY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVy
aU9TIGZpbmFsIDogcHVibGljIE1lZGlhU2Vzc2lvbkhlbHBlciB7CitwdWJsaWM6CisgICAgTWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CisgICAgfk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpOworCisg
ICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOworICAgIHZv
aWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpJbnRlcnJ1
cHRpb25UeXBlLCBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFJlc3VtZSk7CisgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwor
ICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICB2b2lkIGFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisjaWYgSEFWRShDRUxFU1RJQUwpCisgICAgdm9pZCBj
YXJQbGF5U2VydmVyRGllZCgpOworICAgIHZvaWQgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9w
dGlvbmFsPGJvb2w+JiYpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRp
b25hbDxib29sPiYmKTsKKyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoT3B0aW9u
YWw8Ym9vbD4mJik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB1c2luZyBIYXNBdmFpbGFibGVU
YXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOwor
ICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6Oklu
dGVycnVwdGlvblR5cGU7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7Cisg
ICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBh
dXNlOworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCk7CisK
KyAgICB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKKyAg
ICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBz
dG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisKKyAgICBSZXRhaW5QdHI8V2Vi
TWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZlcjsKKyNpZiBIQVZFKENFTEVTVElBTCkK
KyAgICBib29sIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEIHsgZmFsc2UgfTsKKyNlbmRp
ZgorfTsKKworc3RhdGljIFVuaXF1ZVJlZjxNZWRpYVNlc3Npb25IZWxwZXI+JiBzaGFyZWRIZWxw
ZXJJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxNZWRp
YVNlc3Npb25IZWxwZXI+PiBoZWxwZXIgPSBtYWtlVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUz4oKTsKKyAgICByZXR1cm4gaGVscGVyOworfQorCitNZWRpYVNlc3Npb25IZWxwZXImIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkSGVs
cGVySW5zdGFuY2UoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnJlc2V0U2hhcmVk
SGVscGVyKCkKK3sKKyAgICBzaGFyZWRIZWxwZXJJbnN0YW5jZSgpID0gbWFrZVVuaXF1ZVJlZjxN
ZWRpYVNlc3Npb25IZWxwZXJpT1M+KCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpz
ZXRTaGFyZWRIZWxwZXIoVW5pcXVlUmVmPE1lZGlhU2Vzc2lvbkhlbHBlcj4mJiBoZWxwZXIpCit7
CisgICAgc2hhcmVkSGVscGVySW5zdGFuY2UoKSA9IFdURk1vdmUoaGVscGVyKTsKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFkZENsaWVudChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAg
ICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpy
ZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNs
aWVudCk7Cit9CisKK01lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9T
KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX29iamNPYnNlcnZl
ciA9IGFkb3B0TlMoW1tXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJh
Y2s6dGhpc10pOworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIHVwZGF0ZUNhclBsYXlJ
c0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworI2VuZGlmCit9CisKK01lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6fk1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisgICAgW21fb2JqY09ic2VydmVyIGNsZWFyQ2FsbGJhY2tdOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnBy
b3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKK3sKKyNpZiBIQVZFKENFTEVT
VElBTCkKKyAgICBpZiAobV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9IHRydWU7CisKKyAgICBp
ZiAoIWNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfUElEVG9Jbmhlcml0QXBwbGljYXRpb25TdGF0
ZUZyb20oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFWU3lzdGVtQ29udHJvbGxl
cl0gc2V0QXR0cmlidXRlOkAocGlkKSBmb3JLZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1BJRFRv
SW5oZXJpdEFwcGxpY2F0aW9uU3RhdGVGcm9tKCkgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHNldCB1cCBQSUQgcHJveHlpbmc6
ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7CisjZW5kaWYKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCkKK3sKKyAgICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAg
ICAgICByZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9v
YmpjT2JzZXJ2ZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVz
c1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3Vu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgW21fb2JqY09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCisjaWYgSEFWRShDRUxFU1RJQUwpCit2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzo6Y2FyUGxheVNlcnZlckRpZWQoKQoreworICAgIHVwZGF0ZUNh
clBsYXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxh
eUlzQ29ubmVjdGVkKQoreworICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQpIHsKKyAgICAgICAg
c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29ubmVjdGVkLnZhbHVl
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7CisgICAgICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBi
b29sVmFsdWVdKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNldElzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wgaXNQbGF5aW5nKQoreworICAgIGlmIChpc1BsYXlp
bmcgPT0gbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IGlzUGxheWluZzsKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmlzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXQgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHNob3VsZFBhdXNlKQoreworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZS52YWx1ZU9yKGZhbHNlKSA/IFNob3VsZFBhdXNl
OjpZZXMgOiBTaG91bGRQYXVzZTo6Tm8pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWly
UGxheVZpZGVvKQoreworICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVv
ID0gc3VwcG9ydHNBaXJQbGF5VmlkZW8udmFsdWVPcihmYWxzZSk7CisKKyAgICBhdXRvIHBsYXli
YWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BBTDo6Z2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRd
KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UobV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5
VmlkZW8gPyBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86
Ok5vLCBwbGF5YmFja1RhcmdldC5jb3B5UmVmKCkpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpyZWNlaXZlZEludGVycnVwdGlvbihNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OkludGVycnVwdGlvblR5cGUgdHlwZSwgTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpT
aG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxk
UmVzdW1lKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZCh1bmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcmlPUzo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRl
ZFVuZGVyTG9jayB1bmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQodW5kZXJM
b2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2
ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWls
YWJsZVRhcmdldHM6Ok5vKTsKK30KKworQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhl
bHBlcgorCistIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25IZWxwZXJpT1MqKWNh
bGxiYWNrCit7CisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdp
dGhDYWxsYmFja10iKTsKKworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBOU05vdGlm
aWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoaW50
ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBv
YmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXV07CisK
KyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6UEFMOjpn
ZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbigpIG9iamVj
dDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBu
YW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uKCkgb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBuYW1lOldlYlVJQXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQ6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
OikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOworI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheVNlcnZlckRp
ZWQ6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9TZXJ2ZXJDb25uZWN0aW9uRGllZE5vdGlm
aWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVy
X0NhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbigpKQorICAgICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGNhclBsYXlJc0Nvbm5lY3Rl
ZERpZENoYW5nZTopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3Rl
ZERpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworICAgIGlmIChjYW5Mb2FkQVZT
eXN0ZW1Db250cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKSkK
KyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOworI2VuZGlmCisK
KyAgICAvLyBOb3cgcGxheWluZyB3b24ndCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxp
dmVyeSBvZiByZW1vdGUgY29udHJvbCBldmVudHMuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNh
dGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKKyAgICAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworICAgIH0pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGRlYWxsb2NdIik7CisKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBpZiAoIXB0aHJlYWRf
bWFpbl9ucCgpKSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3RvcildICgpIG11dGFi
bGUgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBkaXBhdGNoZWQg
dG8gVUkgdGhyZWFkLiIpOworICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IE5POworICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5jbGVhcigpOworICAgICAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87CisjZW5kaWYK
KworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNsZWFyQ2FsbGJh
Y2sKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjbGVhckNhbGxi
YWNrXSIpOworICAgIF9jYWxsYmFjayA9IG5pbDsKK30KKworLSAoQk9PTCloYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGUKK3sKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdIik7CisjaWYgIVBMQVRGT1JNKFdBVENIT1Mp
CisgICAgcmV0dXJuIF9yb3V0ZURldGVjdG9yLmdldCgpLm11bHRpcGxlUm91dGVzRGV0ZWN0ZWQ7
CisjZWxzZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKFdBVENI
T1MpCistICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoX21v
bml0b3JpbmdBaXJQbGF5Um91dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBfbW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXMgPSB0cnVlOworCisgICAgaWYgKF9zdGFydE1vbml0b3JpbmdBaXJQbGF5
Um91dGVzUGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9yb3V0ZURldGVjdG9y
KSB7CisgICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9uRW5hYmxlZCA9
IFlFUzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9zdGFydE1vbml0b3JpbmdBaXJQ
bGF5Um91dGVzUGVuZGluZyA9IHRydWU7CisKKyAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vz
c2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgY2FsbE9u
V2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIXByb3RlY3RlZFNlbGYt
Pl9yb3V0ZURldGVjdG9yKTsKKworICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNr
KSB7CisgICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91
dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+
X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJvdGVjdGVkU2Vs
Zi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOworICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxmLmdldCgpIHNl
bGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5hbWU6
QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlv
biBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOworCisgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgICAgIH0KKworICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRNb25pdG9yaW5nQWlyUGxh
eVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKKyAgICB9KTsKK30KKworLSAodm9pZClzdG9wTW9uaXRv
cmluZ0FpclBsYXlSb3V0ZXMKK3sKKyAgICBpZiAoIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxw
ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOworCisgICAgX21vbml0b3JpbmdBaXJQ
bGF5Um91dGVzID0gZmFsc2U7CisgICAgX3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rp
b25FbmFibGVkID0gTk87Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdBVENIT1MpCisKKy0gKHZv
aWQpaW50ZXJydXB0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVz
aW5nIEludGVycnVwdGlvblR5cGUgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVw
dGlvblR5cGU7CisgICAgdXNpbmcgU2hvdWxkUmVzdW1lID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTaG91bGRSZXN1bWU7CisKKyAgICBOU1VJbnRlZ2VyIHR5cGUgPSBbW1tub3RpZmljYXRp
b24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVL
ZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBJbnRlcnJ1cHRpb25UeXBlIGludGVycnVw
dGlvblR5cGUgPSAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVFbmRlZCA/
IEludGVycnVwdGlvblR5cGU6OkVuZCA6IEludGVycnVwdGlvblR5cGU6OkJlZ2luKTsKKyAgICBT
aG91bGRSZXN1bWUgc2hvdWxkUmVzdW1lID0gU2hvdWxkUmVzdW1lOjpObzsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGludGVycnVwdGlvbl0gLSB0eXBlID0gJWki
LCAoaW50KXR5cGUpOworCisgICAgaWYgKGludGVycnVwdGlvblR5cGUgPT0gSW50ZXJydXB0aW9u
VHlwZTo6RW5kICYmIFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPT0g
QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25TaG91bGRSZXN1bWUpCisgICAgICAgIHNo
b3VsZFJlc3VtZSA9IFNob3VsZFJlc3VtZTo6WWVzOworCisgICAgY2FsbE9uV2ViVGhyZWFkT3JE
aXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRSZXN1bWVdKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAg
IGNhbGxiYWNrLT5yZWNlaXZlZEludGVycnVwdGlvbihpbnRlcnJ1cHRpb25UeXBlLCBzaG91bGRS
ZXN1bWUpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmRdIik7CisKKyAgICBhdXRvIGlzU3VzcGVuZGVkVW5kZXJMb2NrID0gW1tbbm90aWZpY2F0aW9u
IHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRlZFVuZGVyTG9jayJdIGJvb2xWYWx1
ZV0gPyBTdXNwZW5kZWRVbmRlckxvY2s6OlllcyA6IFN1c3BlbmRlZFVuZGVyTG9jazo6Tm87Cisg
ICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3BlbmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQor
ICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmVdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFj
aykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwor
ICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKKworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVk
aWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVd
Iik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChh
dXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIH0pOworfQorCist
ICh2b2lkKXdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisgICAg
aWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9yaW5nQWlyUGxheVJvdXRlcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgd2lyZWxlc3NS
b3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7CisKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpOworICAgIH0pOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIHVzaW5n
IFN1c3BlbmRlZFVuZGVyTG9jayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVk
VW5kZXJMb2NrOworCisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kXSIpOworCisgICAgYXV0byBpc1N1c3BlbmRlZFVuZGVyTG9jayA9IFtbW25vdGlm
aWNhdGlvbiB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiaXNTdXNwZW5kZWRVbmRlckxvY2siXSBi
b29sVmFsdWVdID8gU3VzcGVuZGVkVW5kZXJMb2NrOjpZZXMgOiBTdXNwZW5kZWRVbmRlckxvY2s6
Ok5vOworICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgaXNTdXNwZW5kZWRVbmRlckxvY2tdKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxs
YmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZChpc1N1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKENFTEVTVElB
TCkKKy0gKHZvaWQpY2FyUGxheVNlcnZlckRpZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgaWYgKCFfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhN
ZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGNhclBsYXlTZXJ2ZXJEaWVkOl0iKTsKKyAg
ICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildKCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9j
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYXJQbGF5U2VydmVyRGllZCgpOworICAg
IH0pOworfQorCistICh2b2lkKWNhclBsYXlJc0Nvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBpZiAoIV9jYWxsYmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgT3B0aW9uYWw8Ym9vbD4gY2FyUGxheUlzQ29ubmVjdGVkOworICAgIGlmIChu
b3RpZmljYXRpb24gJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0
ZWROb3RpZmljYXRpb25QYXJhbWV0ZXIoKSkgeworICAgICAgICBOU051bWJlciAqbnNDYXJQbGF5
SXNDb25uZWN0ZWQgPSBbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gdmFsdWVGb3JLZXk6Z2V0QVZT
eXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigp
XTsKKyAgICAgICAgaWYgKG5zQ2FyUGxheUlzQ29ubmVjdGVkKQorICAgICAgICAgICAgY2FyUGxh
eUlzQ29ubmVjdGVkID0gW25zQ2FyUGxheUlzQ29ubmVjdGVkIGJvb2xWYWx1ZV07CisgICAgfQor
CisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXJQbGF5SXNDb25uZWN0ZWQgPSBXVEZNb3ZlKGNh
clBsYXlJc0Nvbm5lY3RlZCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT51cGRh
dGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGTW92ZShjYXJQbGF5SXNDb25uZWN0ZWQpKTsKKyAgICB9
KTsKK30KKworLSAodm9pZClhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgoreworICAgIGlmICghX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxib29sPiBz
aG91bGRQYXVzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uICYmIGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91
bGRQYXVzZSgpKSB7CisgICAgICAgIE5TTnVtYmVyKiBuc1Nob3VsZFBhdXNlID0gW25vdGlmaWNh
dGlvbi51c2VySW5mbyB2YWx1ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVk
aW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQYXVzZSgpXTsKKyAg
ICAgICAgaWYgKG5zU2hvdWxkUGF1c2UpCisgICAgICAgICAgICBzaG91bGRQYXVzZSA9IG5zU2hv
dWxkUGF1c2UuYm9vbFZhbHVlOworICAgIH0KKworICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRz
QWlyUGxheVZpZGVvOworICAgIGlmIChjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1BpY2tlZFJv
dXRlQXR0cmlidXRlKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0
aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSkgeworICAgICAgICBOU0RpY3Rpb25h
cnkqIHBpY2tlZFJvdXRlID0gW1tnZXRBVlN5c3RlbUNvbnRyb2xsZXJDbGFzcygpIHNoYXJlZEFW
U3lzdGVtQ29udHJvbGxlcl0gYXR0cmlidXRlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9Q
aWNrZWRSb3V0ZUF0dHJpYnV0ZSgpXTsKKyAgICAgICAgaWYgKFtwaWNrZWRSb3V0ZSBpc0tpbmRP
ZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pIHsKKyAgICAgICAgICAgIE5TTnVtYmVyKiBuc1N1
cHBvcnRzQWlyUGxheVZpZGVvID0gW3BpY2tlZFJvdXRlIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVt
Q29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8o
KV07CisgICAgICAgICAgICBpZiAobnNTdXBwb3J0c0FpclBsYXlWaWRlbykKKyAgICAgICAgICAg
ICAgICBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8uYm9vbFZh
bHVlOworICAgICAgICB9CisgICAgfQorCisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzaG91bGRQ
YXVzZSA9IFdURk1vdmUoc2hvdWxkUGF1c2UpLCBzdXBwb3J0c0FpclBsYXlWaWRlbyA9IFdURk1v
dmUoc3VwcG9ydHNBaXJQbGF5VmlkZW8pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byog
Y2FsbGJhY2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrLT5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc2hvdWxkUGF1c2UpKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrLT5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFdURk1vdmUoc3Vw
cG9ydHNBaXJQbGF5VmlkZW8pKTsKKyAgICAgICAgfQorICAgIH0pOworCit9CisjZW5kaWYgLy8g
SEFWRShDRUxFU1RJQUwpCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXgg
NWRmMjBhN2FhMTRjMWM0Y2E5NDkzN2I0OWIzMGU0MDFlOThlOTM1MS4uNGRjOGZmM2MxMzJhYzU1
OThiMjM5Y2M0ZDIyM2U2MWEzZDAwNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uSGVscGVySU9TLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxOCArNDIsMTMgQEAgZXh0ZXJu
IE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9u
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1Mg
OiBwdWJsaWMgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hIHsKK2NsYXNzIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1MKKyAgICA6IHB1YmxpYyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKKyAgICAsIHB1
YmxpYyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoKTsKICAgICBib29sIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJs
ZSgpIG92ZXJyaWRlOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHZvaWQgY2FyUGxheVNlcnZl
ckRpZWQoKTsKLSAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29s
PiYmKTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoT3B0aW9uYWw8Ym9vbD4m
Jik7Ci0gICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYp
OwotI2VuZGlmCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpOwogCiBwcml2YXRlOgpAQCAtNjYsMTQgKzYyLDIyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3Nhcnko
KSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNl
c3Npb24mLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nKSBmaW5hbDsKIAorICAgIC8vIE1l
ZGlhU2Vzc2lvbkhlbHBlckNsaWVudAorICAgIHZvaWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50
ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spIGZpbmFsOworICAgIHZvaWQg
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKSBmaW5hbDsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkgZmluYWw7CisgICAgdm9p
ZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cykgZmluYWw7
CisgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsK
KyAgICB2b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8s
IFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MiOyB9
CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Npb25IZWxwZXI+IG1fb2JqY09i
c2VydmVyOwotI2lmIEhBVkUoQ0VMRVNUSUFMKQorICAgIGJvb2wgbV9pc01vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlv
blBJRCB7IGZhbHNlIH07Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0KaW5kZXggY2YyNWZiNDg2MDE3NjgyNWE3N2FkODYyNGNiNDViZGYz
OTgzZWM4ZC4uODBlNWI3MDA0N2VmYTkxYmY3YjcyNjE3NzI2MjY1ZjU4MTNjYzM0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0KQEAgLTM1LDkzICszNSwyOSBAQAogI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTeXN0ZW1NZW1vcnkuaCIKICNpbXBvcnQgIldl
YkNvcmVUaHJlYWRSdW4uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5o
PgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9pb3MvQ2VsZXN0aWFsU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUkFNU2l6ZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KLSNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9S
VCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24g
PSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5v
dGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmlj
YXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24iOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi1TT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoQ2VsZXN0aWFsKQotU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQotU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFw
cGxpY2F0aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJp
YnV0ZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWws
IEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBB
VlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0aW9uUGFyYW1ldGVy
LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZT
eXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVkTm90aWZpY2F0aW9uLCBOU1N0cmlu
ZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250
cm9sbGVyX0FjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQ2VsZXN0aWFsLCBBVlN5c3RlbUNvbnRyb2xs
ZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlvblBhcmFtZXRlcl9TaG91bGRQ
YXVzZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWws
IEFWU3lzdGVtQ29udHJvbGxlcl9QaWNrZWRSb3V0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKLVNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChDZWxlc3RpYWwsIEFWU3lzdGVtQ29udHJvbGxlcl9S
b3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8sIE5TU3RyaW5nICop
Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV2ViTWVk
aWFTZXNzaW9uSGVscGVyIDogTlNPYmplY3QgewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1Mq
IF9jYWxsYmFjazsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hP
UykKLSAgICBSZXRhaW5QdHI8QVZSb3V0ZURldGVjdG9yPiBfcm91dGVEZXRlY3RvcjsKLSNlbmRp
ZgotICAgIGJvb2wgX21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgIGJvb2wgX3N0YXJ0TW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXNQZW5kaW5nOwotfQotCi0tIChpZClpbml0V2l0aENhbGxiYWNr
OihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjazsKLQotLSAodm9pZCljbGVhckNhbGxi
YWNrOwotLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOwotLSAodm9pZClhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247Ci0tIChCT09MKWhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZTsKLQotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykKLS0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlczsKLS0g
KHZvaWQpc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotI2VuZGlmCi0KLUBlbmQKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb25NYW5hZ2VyaU9TPihuZXcgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUyk7CisgICAgYXV0byBtYW5hZ2VyID0gc3RkOjp1bmlxdWVfcHRyPE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M+KG5ldyBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLmFkZENsaWVudCgqbWFuYWdlcik7CisgICAg
cmV0dXJuIFdURk1vdmUobWFuYWdlcik7CiB9CiAKIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQogICAgIDogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hKCkK
IHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX29iamNPYnNlcnZlciA9
IGFkb3B0TlMoW1tXZWJNZWRpYVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6
dGhpc10pOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXNldFJlc3RyaWN0
aW9ucygpOwotCi0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVj
dGVkKFdURjo6bnVsbG9wdCk7Ci0jZW5kaWYKIH0KIAogTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
fk1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIFttX29iamNPYnNlcnZlciBjbGVhckNhbGxiYWNrXTsKLSAgICBtX29iamNPYnNl
cnZlciA9IG5pbDsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKG1faXNN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpCisgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hh
cmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIE1lZGlhU2Vz
c2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9p
ZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNldFJlc3RyaWN0aW9ucygpCkBAIC0xNDMsOSAr
NzksNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpY3Rpb25zKCkK
IAogYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFi
bGUoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBbbV9v
YmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXTsKLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVs
cGVyKCkuaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSgpOwogfQogCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpCkBA
IC0xNTUsMTYgKzg5LDE3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6Y29uZmlndXJl
V2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgcmV0dXJuIHNlc3Npb24ucmVxdWly
ZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpOwogICAgIH0pOwogCi0gICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAicmVxdWlyZXNNb25pdG9yaW5nID0gIiwgcmVxdWlyZXNNb25p
dG9yaW5nKTsKKyAgICBpZiAocmVxdWlyZXNNb25pdG9yaW5nID09IG1faXNNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMpCisgICAgICAgIHJldHVybjsKIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMgPSByZXF1aXJlc01vbml0
b3Jpbmc7CisKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXF1aXJlc01vbml0b3Jp
bmcgPSAiLCByZXF1aXJlc01vbml0b3JpbmcpOwogCiAgICAgaWYgKHJlcXVpcmVzTW9uaXRvcmlu
ZykKLSAgICAgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
OworICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgZWxzZQotICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIg
c3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICAgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5zdG9wTW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAjZW5kaWYKIH0KIApAQCAtMTc0LDIxICsxMDksMTMg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElESWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2hhdmVQcmVzZW50ZWRBcHBsaWNhdGlvblBJ
RCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEID0g
dHJ1ZTsKLSAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisgICAgTWVkaWFT
ZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKICNlbmRpZgogfQogCiB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQogewot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9Q
SURUb0luaGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNsYXNz
KCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBzZXRBdHRyaWJ1dGU6QChwcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoKSkgZm9yS2V5OmdldEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRB
cHBsaWNhdGlvblN0YXRlRnJvbSgpIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBzZXQgdXAgUElEIHByb3h5aW5nOiAlcyIsIGVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwotI2VuZGlmCisgICAgTWVkaWFT
ZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5wcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEKHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25N
YW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uLCBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIGRlbGF5Q2FsbGluZ1VwZGF0ZU5v
d1BsYXlpbmcpCkBAIC0yMDEsNDUgKzEyOCwyNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJp
T1M6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npbwog
I2VuZGlmCiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpl
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRz
IGhhdmVUYXJnZXRzKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
Ym9vbCBoYXZlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFp
bGFibGVdOwogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaGF2ZVRhcmdldHMpOwogCiAg
ICAgZm9yRWFjaFNlc3Npb24oW2hhdmVUYXJnZXRzXSAoYXV0byYgc2Vzc2lvbikgewotICAgICAg
ICBzZXNzaW9uLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhdmVUYXJn
ZXRzKTsKKyAgICAgICAgc2Vzc2lvbi5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShoYXZlVGFyZ2V0cyA9PSBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMpOwogICAgIH0pOwot
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi0jaWYgSEFWRShDRUxFU1RJQUwp
Ci12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNhclBsYXlTZXJ2ZXJEaWVkKCkKK3ZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRD
aGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIHVwZGF0ZUNhclBs
YXlJc0Nvbm5lY3RlZChXVEY6Om51bGxvcHQpOworICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0KHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9PSBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBk
YXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9wdGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVk
KQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQogewotICAgIGlmIChjYXJQbGF5SXNDb25uZWN0ZWQp
IHsKLSAgICAgICAgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoY2FyUGxheUlzQ29u
bmVjdGVkLnZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgc2hvdWxkUGF1c2UpOwogCi0gICAgaWYgKCFjYW5Mb2FkQVZTeXN0ZW1D
b250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIHNldElz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KFtbW2dldEFWU3lzdGVt
Q29udHJvbGxlckNsYXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX0NhclBsYXlJc0Nvbm5lY3RlZEF0dHJpYnV0ZSgpXSBi
b29sVmFsdWVdKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYgc2hvdWxkUGF1c2UpCi17Ci0gICAgaWYg
KCFzaG91bGRQYXVzZSB8fCAhc2hvdWxkUGF1c2UudmFsdWUoKSkKKyAgICBpZiAoc2hvdWxkUGF1
c2UgIT0gU2hvdWxkUGF1c2U6OlllcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yRWFjaFNl
c3Npb24oW10oYXV0byYgc2Vzc2lvbikgewpAQCAtMjQ4LDMxMyArMTU1LDYzIEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxi
b29sPiYmIHNob3VsZFBhCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmIHN1cHBvcnRzQWly
UGxheVZpZGVvKQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphY3RpdmVWaWRlb1JvdXRl
RGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4mJiBwbGF5YmFja1RhcmdldCkKIHsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIHN1cHBvcnRzQWlyUGxheVZpZGVvKTsKICAgICBhdXRvIG5vd1BsYXlp
bmdTZXNzaW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpOwogICAgIGlmICghbm93UGxh
eWluZ1Nlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQgPSBzdXBwb3J0c0FpclBsYXlWaWRlby52YWx1ZU9yKGZhbHNlKTsKLSAgICBh
dXRvIHBsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoW1BB
TDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1
dENvbnRleHRdKTsKLSAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOworICAgIG5vd1BsYXlpbmdTZXNz
aW9uLT5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzdXBwb3J0c0FpclBsYXlWaWRlbyA9
PSBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzKTsKICAgICBub3dQbGF5aW5nU2Vzc2lvbi0+c2V0
UGxheWJhY2tUYXJnZXQoV1RGTW92ZShwbGF5YmFja1RhcmdldCkpOwogfQotI2VuZGlmCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYk1lZGlhU2Vzc2lvbkhl
bHBlcgotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKilj
YWxsYmFjawotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRX
aXRoQ2FsbGJhY2tdIik7Ci0KLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIE5T
Tm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uIG9iamVjdDpbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2Vd
XTsKLQotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQ
QUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkg
b2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24oKSBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlB
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZDopIG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQ6KSBuYW1lOldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07Ci0jaWYgSEFWRShDRUxFU1RJQUwpCi0gICAgaWYgKGNhbkxvYWRBVlN5
c3RlbUNvbnRyb2xsZXJfU2VydmVyQ29ubmVjdGlvbkRpZWROb3RpZmljYXRpb24oKSkKLSAgICAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihjYXJQbGF5U2Vy
dmVyRGllZDopIG5hbWU6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1NlcnZlckNvbm5lY3Rpb25EaWVk
Tm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkpCi0gICAgICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoY2FyUGxheUlzQ29u
bmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29u
bmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0gICAgaWYgKGNhbkxv
YWRBVlN5c3RlbUNvbnRyb2xsZXJfQWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZU5vdGlmaWNhdGlv
bigpKQotICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6KSBuYW1lOmdldEFWU3lzdGVtQ29udHJvbGxlcl9B
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07Ci0jZW5k
aWYKLQotICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5sZXNzIHdlIHR1cm4gb24gdGhl
IGRlbGl2ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKLSAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRB
cHBsaWNhdGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKLSAgICAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGRlYWxsb2NdIik7Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JN
KFdBVENIT1MpCi0gICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9IFdURk1v
dmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
InNhZmVseVRlYXJEb3duIC0gZGlwYXRjaGVkIHRvIFVJIHRocmVhZC4iKTsKLSAgICAgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAgICAgcm91dGVEZXRlY3Rvci5n
ZXQoKS5yb3V0ZURldGVjdGlvbkVuYWJsZWQgPSBOTzsKLSAgICAgICAgICAgIHJvdXRlRGV0ZWN0
b3IuY2xlYXIoKTsKLSAgICAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAg
ICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0
ZWN0aW9uRW5hYmxlZCA9IE5POwotI2VuZGlmCi0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAodm9pZCljbGVhckNhbGxiYWNrCi17Ci0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgY2xlYXJDYWxsYmFja10iKTsKLSAgICBfY2FsbGJhY2sgPSBuaWw7
Ci19Ci0KLS0gKEJPT0wpaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlCi17Ci0gICAgTE9HKE1l
ZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
XSIpOwotI2lmIEhBVkUoTUVESUFfUExBWUVSKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICBy
ZXR1cm4gX3JvdXRlRGV0ZWN0b3IuZ2V0KCkubXVsdGlwbGVSb3V0ZXNEZXRlY3RlZDsKLSNlbHNl
Ci0gICAgcmV0dXJuIE5POwotI2VuZGlmCi19Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYg
IVBMQVRGT1JNKFdBVENIT1MpCi0tICh2b2lkKXN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMK
LXsKLSAgICBpZiAoX21vbml0b3JpbmdBaXJQbGF5Um91dGVzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBfbW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMgPSB0cnVlOwotCi0gICAgaWYgKF9zdGFydE1v
bml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KF9yb3V0ZURldGVjdG9yKSB7Ci0gICAgICAgIF9yb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0
ZWN0aW9uRW5hYmxlZCA9IFlFUzsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9zdGFy
dE1vbml0b3JpbmdBaXJQbGF5Um91dGVzUGVuZGluZyA9IHRydWU7Ci0KLSAgICBMT0coTWVkaWEs
ICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIp
OwotCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSgpIG11dGFibGUgewotICAgICAgICBBU1NFUlQo
IXByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yKTsKLQotICAgICAgICBpZiAocHJvdGVjdGVk
U2VsZi0+X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVjdG9yID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAgICAg
cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVk
ID0gcHJvdGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0
ZWRTZWxmLmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZTopIG5hbWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENo
YW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0
KCldOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2stPmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgICAgICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgICAgIH0KLQotICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fc3RhcnRN
b25pdG9yaW5nQWlyUGxheVJvdXRlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotLSAo
dm9pZClzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXMKLXsKLSAgICBpZiAoIV9tb25pdG9yaW5n
QWlyUGxheVJvdXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXSIpOwotCi0gICAg
X21vbml0b3JpbmdBaXJQbGF5Um91dGVzID0gZmFsc2U7Ci0gICAgX3JvdXRlRGV0ZWN0b3IuZ2V0
KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87Ci19Ci0jZW5kaWYgLy8gSEFWRShNRURJQV9Q
TEFZRVIpICYmICFQTEFURk9STShXQVRDSE9TKQotCi0tICh2b2lkKWludGVycnVwdGlvbjooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBpZiAoIV9jYWxsYmFjayB8fCBfY2Fs
bGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIE5TVUludGVnZXIgdHlwZSA9IFtbW25vdGlmaWNhdGlvbiB1c2VySW5mb10gb2JqZWN0
Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gdW5zaWduZWRJbnRlZ2Vy
VmFsdWVdOwotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBm
bGFncyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwotCi0gICAgTE9HKE1lZGlhLCAi
LVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW50ZXJydXB0aW9uXSAtIHR5cGUgPSAlaSIsIChpbnQp
dHlwZSk7Ci0KLSAgICBpZiAodHlwZSA9PSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVF
bmRlZCAmJiBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpBVkF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvbk9wdGlvbktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdID09IEFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uU2hvdWxkUmVzdW1lKQotICAgICAgICBmbGFncyA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nOwotCi0gICAgY2FsbE9uV2Vi
VGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpLCB0eXBlLCBmbGFnc10oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogY2FsbGJh
Y2sgPSBwcm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlQmVnYW4pCi0gICAgICAgICAgICBjYWxsYmFjay0+YmVnaW5JbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVwdGlvbik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLT5lbmRJbnRlcnJ1cHRpb24oZmxhZ3MpOwotCi0g
ICAgfSk7Ci19CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpy
ZWNlaXZlZEludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIFNob3VsZFJlc3VtZSBz
aG91bGRSZXN1bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICBp
ZiAoIV9jYWxsYmFjayB8fCBfY2FsbGJhY2stPndpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25z
KCkpCisgICAgaWYgKHdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExPRyhNZWRpYSwgIi1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZF0iKTsKLQotICAgIEJPT0wgaXNTdXNwZW5kZWRVbmRlckxv
Y2sgPSBbW1tub3RpZmljYXRpb24gdXNlckluZm9dIG9iamVjdEZvcktleTpAImlzU3VzcGVuZGVk
VW5kZXJMb2NrIl0gYm9vbFZhbHVlXTsKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5
bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGlzU3VzcGVu
ZGVkVW5kZXJMb2NrXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBw
cm90ZWN0ZWRTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+YXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKLX0K
KyAgICBhdXRvIGZsYWdzID0gc2hvdWxkUmVzdW1lID09IFNob3VsZFJlc3VtZTo6WWVzID8gUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcgOiBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6Tm9GbGFnczsKIAotLSAodm9pZClhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKLQotICAgIGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUlu
dGVycnVwdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJN
ZWRpYVNlc3Npb25IZWxwZXIgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVdIik7Ci0KLSAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFj
ayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwotICAgIH0pOworICAgIGlmICh0eXBlID09IEludGVy
cnVwdGlvblR5cGU6OkJlZ2luKQorICAgICAgICBiZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3lzdGVtSW50ZXJydXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGVuZElu
dGVycnVwdGlvbihmbGFncyk7CiB9CiAKLS0gKHZvaWQpYXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
IGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgX2NhbGxiYWNrLT53aWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucygpKQorICAgIGlmICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBl
ciBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVdIik7Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2Vs
ZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNl
bGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5hcHBsaWNhdGlvbldpbGxCZWNv
bWVJbmFjdGl2ZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3Bl
bmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAotLSAodm9pZCl3aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNz
aW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIFVOVVNF
RF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgaWYgKCFfY2FsbGJhY2sgfHwgIV9tb25pdG9y
aW5nQWlyUGxheVJvdXRlcykKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2VdIik7Ci0KLSAgICBjYWxsT25X
ZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHBy
b3RlY3RlZFNlbGYtPl9jYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwotICAgIH0pOworICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotLSAodm9p
ZClhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogewotICAg
IGlmICghX2NhbGxiYWNrIHx8IF9jYWxsYmFjay0+d2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlv
bnMoKSkKKyAgICBpZiAod2lsbElnbm9yZVN5c3RlbUludGVycnVwdGlvbnMoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmRdIik7Ci0KLSAgICBCT09MIGlzU3VzcGVuZGVkVW5kZXJM
b2NrID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJpc1N1c3BlbmRl
ZFVuZGVyTG9jayJdIGJvb2xWYWx1ZV07Ci0gICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFz
eW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBpc1N1c3Bl
bmRlZFVuZGVyTG9ja10oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8qIGNhbGxiYWNrID0g
cHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2stPmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB9KTsKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KGlzU3VzcGVuZGVkVW5kZXJMb2NrID09IFN1c3BlbmRlZFVuZGVyTG9jazo6WWVzKTsKIH0KIAot
I2lmIEhBVkUoQ0VMRVNUSUFMKQotLSAodm9pZCljYXJQbGF5U2VydmVyRGllZDooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmICghX2NhbGxiYWNrKQorICAgIGlm
ICh3aWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBjYXJQbGF5U2VydmVyRGllZDpd
Iik7Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgY2FsbE9uV2ViVGhyZWFk
T3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogY2FsbGJhY2sgPSBwcm90ZWN0ZWRT
ZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjay0+Y2FyUGxheVNlcnZlckRpZWQo
KTsKLSAgICB9KTsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmFwcGxpY2F0aW9uV2ls
bEJlY29tZUluYWN0aXZlKCk7CiB9CiAKLS0gKHZvaWQpY2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIGlmICghX2NhbGxiYWNr
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBPcHRpb25hbDxib29sPiBjYXJQbGF5SXNDb25uZWN0
ZWQ7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbiAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX0Nh
clBsYXlJc0Nvbm5lY3RlZE5vdGlmaWNhdGlvblBhcmFtZXRlcigpKSB7Ci0gICAgICAgIE5TTnVt
YmVyICpuc0NhclBsYXlJc0Nvbm5lY3RlZCA9IFtbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSB2YWx1
ZUZvcktleTpnZXRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkTm90aWZpY2F0
aW9uUGFyYW1ldGVyKCldOwotICAgICAgICBpZiAobnNDYXJQbGF5SXNDb25uZWN0ZWQpCi0gICAg
ICAgICAgICBjYXJQbGF5SXNDb25uZWN0ZWQgPSBbbnNDYXJQbGF5SXNDb25uZWN0ZWQgYm9vbFZh
bHVlXTsKLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhclBsYXlJc0Nvbm5lY3Rl
ZCA9IFdURk1vdmUoY2FyUGxheUlzQ29ubmVjdGVkKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGF1dG8qIGNhbGxiYWNrID0gcHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKQotICAgICAgICAgICAg
Y2FsbGJhY2stPnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChXVEZNb3ZlKGNhclBsYXlJc0Nvbm5l
Y3RlZCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKWFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2U6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgaWYgKCFfY2FsbGJhY2spCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIE9w
dGlvbmFsPGJvb2w+IHNob3VsZFBhdXNlOwotICAgIGlmIChub3RpZmljYXRpb24gJiYgY2FuTG9h
ZEFWU3lzdGVtQ29udHJvbGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9u
UGFyYW1ldGVyX1Nob3VsZFBhdXNlKCkpIHsKLSAgICAgICAgTlNOdW1iZXIqIG5zU2hvdWxkUGF1
c2UgPSBbbm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9yS2V5OmdldEFWU3lzdGVtQ29udHJv
bGxlcl9BY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uUGFyYW1ldGVyX1Nob3Vs
ZFBhdXNlKCldOwotICAgICAgICBpZiAobnNTaG91bGRQYXVzZSkKLSAgICAgICAgICAgIHNob3Vs
ZFBhdXNlID0gbnNTaG91bGRQYXVzZS5ib29sVmFsdWU7Ci0gICAgfQotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gc3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRy
b2xsZXJfUGlja2VkUm91dGVBdHRyaWJ1dGUoKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVy
X1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpKSB7Ci0gICAg
ICAgIE5TRGljdGlvbmFyeSogcGlja2VkUm91dGUgPSBbW2dldEFWU3lzdGVtQ29udHJvbGxlckNs
YXNzKCkgc2hhcmVkQVZTeXN0ZW1Db250cm9sbGVyXSBhdHRyaWJ1dGVGb3JLZXk6Z2V0QVZTeXN0
ZW1Db250cm9sbGVyX1BpY2tlZFJvdXRlQXR0cmlidXRlKCldOwotICAgICAgICBpZiAoW3BpY2tl
ZFJvdXRlIGlzS2luZE9mQ2xhc3M6TlNEaWN0aW9uYXJ5LmNsYXNzXSkgewotICAgICAgICAgICAg
TlNOdW1iZXIqIG5zU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBbcGlja2VkUm91dGUgdmFsdWVGb3JL
ZXk6Z2V0QVZTeXN0ZW1Db250cm9sbGVyX1JvdXRlRGVzY3JpcHRpb25LZXlfUm91dGVTdXBwb3J0
c0FpclBsYXlWaWRlbygpXTsKLSAgICAgICAgICAgIGlmIChuc1N1cHBvcnRzQWlyUGxheVZpZGVv
KQotICAgICAgICAgICAgICAgIHN1cHBvcnRzQWlyUGxheVZpZGVvID0gbnNTdXBwb3J0c0FpclBs
YXlWaWRlby5ib29sVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjYWxsT25XZWJUaHJl
YWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZiksIHNob3VsZFBhdXNlID0gV1RGTW92ZShzaG91bGRQYXVzZSksIHN1cHBvcnRzQWlyUGxh
eVZpZGVvID0gV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbyldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBjYWxsYmFjayA9IHByb3RlY3RlZFNlbGYtPl9jYWxsYmFjaykgewotICAg
ICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoV1RGTW92ZShzaG91
bGRQYXVzZSkpOwotICAgICAgICAgICAgY2FsbGJhY2stPmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2UoV1RGTW92ZShzdXBwb3J0c0FpclBsYXlWaWRlbykpOwotICAgICAgICB9Ci0gICAgfSk7Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KLSNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKLUBl
bmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDc0OWIyZGIwOWI5Njc0NmY0YTBm
MWUzNGMyMTc0MmVkZjUzZTQ2Yi4uZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2
YjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtMjcsNiArMjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMTIyLDYgKzEyMyw3
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
bi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENSZW1vdGVDb2RlY3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDk5NTAzNTEyYmE1NThiMmI0MTAwOGY1YjE2NjUwNDYwYTk1NDE0NTYuLjBi
ODU3MzY0ODFlMDc1NWY4NmQ5MjVlMzA2MmU1ZGMzZTIzNjgzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTgzLDYgKzE4MywxMiBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVJlY29yZGVyc01lc3NhZ2VzUmVwbGllcwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RS
ZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAxYzNkMWEyMGVlYTNiNzM4MDAxMDJlMWQzMTk4Mzc5MDNhYTZj
ZDBhLi5jYjcxNTJmYTMxNDY5NTI1MTAxOGZhZWEwNWFmMTA2MzZlMGI0NzdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNiw2ICsyNiw3IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
S2l0MikvR1BVUHJvY2Vzcy9ncmFwaGljcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21h
YyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL0dQ
VVByb2Nlc3MvbWVkaWEvaW9zIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjIFwK
ICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMgXApAQCAtNTQsNiArNTUsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvR1BVIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKKyAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IgXApAQCAtMTY0LDYgKzE2Niw4IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVjb3JkZXIgXAogICAgIFJl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ciBcCisgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKyAgICBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSBcCiAgICAgUmVtb3RlT2JqZWN0UmVnaXN0cnkgXAogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgXAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNzNjOTcwODRiYWRiNzJlYTA4MDNhZTIyYmJlZGE0MjAxNjM3ZTFhNC4uZGY1
Njc4MWU2ZTVlN2YzNjZjNjgzNzg5OGRjMDE5ZGQ4ZmVkNDMwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
ODMsNiArODMsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yODksNiArMjkzLDIwIEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlQXVkaW9TZXNzaW9uKEVuc3VyZUF1ZGlvU2Vz
c2lvbkNvbXBsZXRpb24mCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
bWVkaWFTZXNzaW9uSGVscGVyUHJveHkoKQoreworICAgIGlmICghbV9tZWRpYVNlc3Npb25IZWxw
ZXJQcm94eSkKKyAgICAgICAgbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fbWVk
aWFTZXNzaW9uSGVscGVyUHJveHk7Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKK3sKKyAgICBtZWRpYVNlc3Npb25IZWxwZXJQ
cm94eSgpOworfQorI2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggODAxNTZkMWJlY2VhNmJiZTIzOGI2YTAxOGI1MGY5ODI1ZGI1OWI0
NC4uMzY4YjBiZjY2YmI4NWE5ZTRjYWZhMmNiNWE4MmU2NzJjY2MwNTc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC01MSw2ICs1MSw3IEBAIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKK2NsYXNzIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5OwogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlcjsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk7CiBzdHJ1Y3QgUmVt
b3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKQEAgLTg3LDcgKzg4LDkgQEAgcHVibGljOgog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBj
ZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgotCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSYgbWVkaWFTZXNzaW9uSGVscGVyUHJveHko
KTsKKyNlbmRpZgogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgVVNFKEFV
RElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyJiBhdWRpb1Nl
c3Npb25NYW5hZ2VyKCk7CkBAIC0xMjQsNiArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bnN1cmVBdWRpb1Nlc3Npb24oRW5zdXJlQXVkaW9TZXNzaW9uQ29tcGxldGlvbiYmKTsKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGVuc3VyZU1lZGlhU2Vzc2lv
bkhlbHBlcigpOworI2VuZGlmCisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZp
bmFsOwpAQCAtMTY3LDYgKzE3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHk+IG1fYXVkaW9TZXNzaW9uUHJveHk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eT4gbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVhYjQxNzJlZDMx
NDdmMjZhOTAzN2RiYzk4ODVhOTdmMWU4MDljYzYuLmQ4N2Q3NjEzNGFlZWMxYThhYzA3NWU1Njk5
YTI5MWFmMzkxMjc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICsz
MCw5IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRj
aE1lc3NhZ2UgewogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJ
bmZvKTsKICNlbmRpZgogICAgIEVuc3VyZUF1ZGlvU2Vzc2lvbigpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIFN5bmNocm9u
b3VzCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbnN1cmVNZWRpYVNlc3Npb25IZWxw
ZXIoKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNjBiNDRlZTNkMWJi
NjUzZGNjYjE4MzkxZjVkZTM4ZTNhM2Q5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmNw
cApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQor
eworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuYWRkQ2xpZW50KCp0aGlz
KTsKK30KKworUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6On5SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eSgpCit7CisgICAgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwor
ICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkucmVtb3ZlQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6c3RhcnRNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
ID0gdHJ1ZTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnN0YXJ0TW9u
aXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHk6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9p
c01vbml0b3JpbmdXaXJlbGVzc1JvdXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc01v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcyA9IGZhbHNlOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6
c2hhcmVkSGVscGVyKCkuc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworfQorCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Ojpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKGludCBwaWQpCit7CisgICAgaWYgKG1fcHJvdmlkZWRBcHBsaWNhdGlvblBJRCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wcm92aWRlZEFwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKyAg
ICBNZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLnByb3ZpZGVQcmVzZW50aW5nQXBw
bGljYXRpb25QSUQocGlkKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRSZXN1
bWUgc2hvdWxkUmVzdW1lKQoreworICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpSZWNlaXZlZEludGVycnVwdGlv
bih0eXBlLCBzaG91bGRSZXN1bWUpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayksIHsgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgbV9n
cHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9j
ayksIHsgfSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFwcGxp
Y2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6QXBwbGljYXRp
b25XaWxsQmVjb21lSW5hY3RpdmUoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG1fZ3B1
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpLCB7IH0pOworfQorCit2b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJsZVRhcmdldHMpCit7Cisg
ICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OkV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhh
c0F2YWlsYWJsZVRhcmdldHMpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlclByb3h5Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZykKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UocGxheWluZyksIHsgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1c2UpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZUF1
ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRz
QWlyUGxheVZpZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldD4mJiB0YXJnZXQpCit7CisgICAgbV9ncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OkFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgp
KSwgeyB9KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YWI1MGYwYjA5NmU4OGViZmZmNzg2NGE4NTM5N2RhMzIwZjIxMWFi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTZXNzaW9uSGVscGVySU9TLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXJQcm94eQorICAgIDogcHVibGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudAorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eSgpOworCitwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpOworICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQpOwor
CisgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50CisgICAgdm9pZCByZWNlaXZlZEludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlLCBTaG91bGRSZXN1bWUpIGZpbmFsOworICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jaykgZmluYWw7
CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxv
Y2spIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKSBmaW5h
bDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisgICAgdm9p
ZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJn
ZXRzKSBmaW5hbDsKKyAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hh
bmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkgZmluYWw7CisgICAgdm9pZCBhY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKSBmaW5hbDsKKyAgICB2b2lkIGFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIGJvb2wgbV9wcm92aWRlZEFwcGxpY2F0
aW9uUElEIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMg
eyBmYWxzZSB9OworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlv
bjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI2YzQ4NTE3YmFiZWE4YTg0NGJmNWRh
ZDQ3NWNlN2ZmMzk5OTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCittZXNzYWdl
cyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBT
dGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCisgICAgU3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpCisgICAgUHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDEwNTZiOWVkZTU0YmFhYWUyYjI5YTA1NjdhODVm
NmExOTQ4OGJmZGQuLjFjOTI0NWUwYjlmNGJiYzJiODBkN2UzY2MwNGVmZDIwM2Q4ZTA0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtNDAsNiArNDAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC01NjAsNiArNTYxLDcgQEAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBlZDlmNDRiYjlmMjJlM2MyNGYxZDJkOTgwNTgzMjFhODEwZjc5ZDMzLi5m
OTMyM2ZiOTM5NjA5OGE5OGRmOTZmNmJkNjJkMDE2MmQ2ZGY4Y2M4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC02NjIsNiArNjYyLDggQEAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZGQ0MWNlODllZmYyNmY1MDQ1ZjU4ZGVmZTM0NmNlNTM5OWQ2
Y2NjNS4uMGUzMjY4NDRkOGQwNWRkNzA1ZDA3MGZlNDJiMjQxZmYyN2QwNWQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDcwLDYg
KzUwNzAsMTIgQEAKIAkJQ0RBMjlBMjcxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQTkzREFFMjJGOEJDRjMwMDQ5MEE2
OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgcGF0aCA9IGlvcy9m
dWxsc2NyZWVuL0Z1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOTNEQUYyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxz
Y3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHA7IHBhdGggPSBpb3MvZnVs
bHNjcmVlbi9GdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5M0EyNDEyQjE3NTAwOTEwRUVGIC8qIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5NTkzQjI0
MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5NTkzQzI0MTJCNjQ1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOTU5NDUyNDEyQzRGNTAwOTEwRUVGIC8q
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk1OTQ2MjQxMkM0RjUwMDkxMEVFRiAvKiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk1OTQ3MjQxMkM5MTkwMDkxMEVFRiAv
KiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RBQzIwNzgyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQzIwNzkyM0ZCMUUyMTAwMjFERUUzIC8qIFJlbW90ZUNETUZh
Y3RvcnlQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVDRE1GYWN0b3J5UHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFDMjA3QzIzRkIxRUY5MDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NDA2LDYgKzU0MTIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1MTggLyogY29jb2EgKi8sCisJCQkJQ0RB
OTU5MzkyNDEyQjE3NTAwOTEwRUVGIC8qIGlvcyAqLywKIAkJCQkwNzFCQzU3OTIzQzkzQkI5MDA2
ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTA3MUJDNTc3MjND
OTNCQjcwMDY4MEQ3QyAvKiBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3OTIz
MTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLApA
QCAtNTQ2MCw2ICs1NDY3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMUQwRUNFQTkyM0ZDODRCQjAwRDE3MkY2IC8qIGNvY29hICovLAorCQkJCUNEQTk1OTQ0
MjQxMkM0REEwMDkxMEVFRiAvKiBpb3MgKi8sCiAJCQkJOUIxMjI5Q0MyM0ZGMjVGMjAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk5QjEyMjlDQjIz
RkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCAqLywKIAkJ
CQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDE1NCw2ICsxMDE2MiwyNiBAQAogCQkJbmFtZSA9IEZ1
bGxTY3JlZW47CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5NTkzOTI0
MTJCMTc1MDA5MTBFRUYgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDREE5NTkzQTI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmNwcCAqLywKKwkJCQlDREE5NTkzQjI0MTJCMTc1MDA5MTBFRUYgLyogUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLmggKi8sCisJCQkJQ0RBOTU5M0MyNDEyQjY0NTAwOTEwRUVGIC8q
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRo
ID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0RBOTU5NDQyNDEy
QzREQTAwOTEwRUVGIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQ0RBOTU5NDYyNDEyQzRGNTAwOTEwRUVGIC8qIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5LmNwcCAqLywKKwkJCQlDREE5NTk0NTI0MTJDNEY1MDA5MTBFRUYgLyogUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkuaCAqLywKKwkJCQlDREE5NTk0NzI0MTJDOTE5MDA5
MTBFRUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUNEQzI4MzFBMjAxQkQ3NTYwMEU2RTc0NSAvKiBmdWxsc2NyZWVuICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZlZjRkNzVmMjk4MDgwMzRmMWE0OWNiYzlhNWMyOWQ1NTE5MTg1
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXliYWNrVGFyZ2V0TW9jay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6UmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2Vz
cykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6RW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCksIHsgfSk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiYgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpjb25uZWN0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXMoKQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50
KyspCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKSwgeyB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQoreworICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNDb3VudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
LCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRChwaWQpLCB7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6cmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlLCBTaG91bGRS
ZXN1bWUgc2hvdWxkUmVzdW1lKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQucmVjZWl2ZWRJbnRlcnJ1cHRpb24odHlwZSwgc2hvdWxkUmVzdW1l
KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQorewor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVyTG9jayk7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChT
dXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJl
Y29tZUluYWN0aXZlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQor
eworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0KQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
cGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2Ugc2hvdWxkUGF1
c2UpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlKTsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNB
aXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiYgdGFyZ2V0Q29udGV4dCkKK3sKKyAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4g
dGFyZ2V0T2JqZWN0OworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSA9PSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkKKyAgICAgICAgdGFyZ2V0T2Jq
ZWN0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29u
dGV4dC5hdk91dHB1dENvbnRleHQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KHN1cHBvcnRzQWlyUGxheVZpZGVvLCB0YXJnZXRPYmplY3QuY29weVJlZigpLnJlbGVhc2VOb25O
dWxsKCkpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkMGYwOThkODRlNzc4MjgwZTVjMmY0NDRhZDVjMGRkMTBiY2E4NjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIGZpbmFsCisg
ICAgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyCisgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cihXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyKCkg
PSBkZWZhdWx0OworCisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7CisKKyAgICB1
c2luZyBIYXNBdmFpbGFibGVUYXJnZXRzID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpIYXNBdmFpbGFibGVUYXJnZXRzOworICAgIHVzaW5nIEludGVycnVwdGlvblR5cGUgPSBX
ZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OkludGVycnVwdGlvblR5cGU7CisgICAg
dXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0gV2ViQ29yZTo6TWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7CisgICAgdXNpbmcgU2hv
dWxkUGF1c2UgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNl
OworICAgIHVzaW5nIFNob3VsZFJlc3VtZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U2hvdWxkUmVzdW1lOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAg
ICB1c2luZyBTdXNwZW5kZWRVbmRlckxvY2sgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXIKKyAgICB2
b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBwcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZv
aWQgcmVjZWl2ZWRJbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSwgU2hvdWxkUmVzdW1lKTsK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxv
Y2spOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAg
dm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIHZvaWQgZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9p
ZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQpOworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSk7CisgICAgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxh
eVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmKTsKKworICAgIFdl
YlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzYzU3Y2Rm
OTYzNTljOGYzNzhiNTkxMDQ2N2E4MjcxYzgxZGQxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgTm90UmVmQ291bnRl
ZCB7CisgICAgUmVjZWl2ZWRJbnRlcnJ1cHRpb24oZW51bTpib29sIFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUsIGVudW06Ym9vbCBXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U2hvdWxkUmVzdW1lIHNob3VsZFJlc3VtZSkKKyAg
ICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoZW51bTpib29sIFdlYktpdDo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2Nr
KQorICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGVudW06Ym9vbCBXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6U3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVy
TG9jaykKKyAgICBBcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCisgICAgQXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKQorICAgIEV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6SGFzQXZh
aWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRzKQorICAgIElzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0RGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IGlzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0KQorICAgIEFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoZW51bTpib29sIFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpTaG91bGRQYXVzZSBzaG91bGRQYXVzZSkKKyAg
ICBBY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6U3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8s
IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0IHRhcmdldCkKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2MxYTMyZDkwZGMz
MGJhMWZjNmMxNWU3MDQ2NzQ4ZjRhMzNjNmI5NS4uZGQxMmQwMTlkZDFjYTQ3ZjU3ZTM2YTU0YjI3
N2EwZjI4ZDgwNmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTc5LDYgKzE3OSwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1f
c2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Nlc3Npb25JRD0lIiBQUkl1NjQg
Il0gV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQsICMjX19W
QV9BUkdTX18pCiAKQEAgLTIwMTQsNiArMjAxOCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFVz
ZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAgICBlbHNl
CiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihBdWRpb1Nlc3Npb246OmNy
ZWF0ZSgpKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAodXNl
R1BVUHJvY2Vzc0Zvck1lZGlhKQorICAgICAgICBNZWRpYVNlc3Npb25IZWxwZXI6OnNldFNoYXJl
ZEhlbHBlcihtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcj4oKnRoaXMpKTsK
KyAgICBlbHNlCisgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIo
KTsKKyNlbmRpZgogfQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="408358"
          type_id="3"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>