<?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>93062</bug_id>
          
          <creation_ts>2012-08-02 19:13:48 -0700</creation_ts>
          <short_desc>[chromium] Move ubercomp quads back into CC</short_desc>
          <delta_ts>2012-08-03 09:26:20 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686128</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-02 19:13:48 -0700</bug_when>
    <thetext>[chromium] Move ubercomp quads back into CC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686137</commentid>
    <comment_count>1</comment_count>
      <attachid>156239</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-02 19:19:32 -0700</bug_when>
    <thetext>Created attachment 156239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686139</commentid>
    <comment_count>2</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-02 19:20:34 -0700</bug_when>
    <thetext>Thank goodness for regexps and regularized naming conventions :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686143</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 19:23:48 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686148</commentid>
    <comment_count>4</comment_count>
      <attachid>156239</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-02 19:27:12 -0700</bug_when>
    <thetext>Comment on attachment 156239
Patch

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

Could you fix the .gyp and reupload for EWS?

&gt; Source/Platform/Platform.gypi:123
&gt; -            &apos;chromium/public/WebTransformationMatrix.h&apos;,
&gt; +            &apos;chromium/public/WebKit::WebTransformationMatrix.h&apos;,

I think your regex went a bit awry here - this probably won&apos;t work

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSharedQuadState.h:36
&gt; +class CCSharedQuadState {
&gt; +public:

Can you just make this be a struct?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSharedQuadState.h:48
&gt; +    CCSharedQuadState();

Do you need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686152</commentid>
    <comment_count>5</comment_count>
      <attachid>156243</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-02 19:32:45 -0700</bug_when>
    <thetext>Created attachment 156243
Patch

Fixed gyp mistake and changed CCSharedQuadState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686830</commentid>
    <comment_count>6</comment_count>
      <attachid>156243</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 09:26:15 -0700</bug_when>
    <thetext>Comment on attachment 156243
Patch

Clearing flags on attachment: 156243

Committed r124621: &lt;http://trac.webkit.org/changeset/124621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686831</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 09:26:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156239</attachid>
            <date>2012-08-02 19:19:32 -0700</date>
            <delta_ts>2012-08-02 19:32:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93062-20120802191913.patch</filename>
            <type>text/plain</type>
            <size>130664</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4OTA4ZjA4YWRhYTU3
OGFjNjBjNjJhZWJmMWM4MzdjY2Q0ZTA2YzgwLi42MmJhZGFhZDQzNjhjYjY0MWM1NjU1OTRlNDRi
YmFhOGE5MjM4MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wOC0wMiAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIHViZXJjb21wIHF1YWRzIGJhY2sgaW50byBDQworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIEdURk8gaXMgYWxtb3N0IGRvbmUsIHdl
IGNhbiBtb3ZlIGJhY2sgdGhlIHF1YWQgdHlwZXMKKyAgICAgICAgdG8gQ0MgYW5kIHBpY2tsZSB0
aGVtIHRoZXJlLiAgVGhpcyBwYXRjaCBtb3ZlcyBldmVyeXRoaW5nIGJhY2sKKyAgICAgICAgdG8g
d2hlcmUgaXQgd2FzIGJlZm9yZSBhbmQgY2hhbmdlcyB0eXBlcyBsaWtlIFdlYlJlY3QgdG8gSW50
UmVjdC4KKworICAgICAgICBBcyBhIGJvbnVzLCBJIGFsc28gYWRkZWQgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQgYW5kIENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICAod2hpY2ggaGFkIGJlZW4gbGVm
dCBpbiB0aGUgQ0MgZmlsZXMpIHRvIENDRHJhd1F1YWQ6OnNpemUoKSwgc28gbm93CisgICAgICAg
IGV2ZXJ5IHF1YWQgdHlwZSBpcyByZWFkeSBmb3Igc2VyaWFsaXphdGlvbi4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclRpbGVRdWFkLmg6IFJlbW92ZWQuCisKIDIwMTItMDgtMDEgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFdyYXAg
c2hhcmVkIGNvbnRleHQgZ2V0dGVycyBpbiBXZWJLaXQgQVBJIGFuZCBhdm9pZCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRCB1c2UgaW4gY29tcG9zaXRvciBpbnRlcm5hbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjZjcxNWU1NDRlNWEwMjEzOTc1NjMyNGZhMTdjZGIxNjhhMzUwMDI5Li45MzNlOTIxMGRmMDJk
NmQwNjMxZDNkYzc3ZWEzNGNkYTJiYTFiOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBA
CisyMDEyLTA4LTAyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBbY2hyb21pdW1dIE1vdmUgdWJlcmNvbXAgcXVhZHMgYmFjayBpbnRvIENDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2UgR1RGTyBpcyBh
bG1vc3QgZG9uZSwgd2UgY2FuIG1vdmUgYmFjayB0aGUgcXVhZCB0eXBlcworICAgICAgICB0byBD
QyBhbmQgcGlja2xlIHRoZW0gdGhlcmUuICBUaGlzIHBhdGNoIG1vdmVzIGV2ZXJ5dGhpbmcgYmFj
aworICAgICAgICB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIGFuZCBjaGFuZ2VzIHR5cGVzIGxpa2Ug
V2ViUmVjdCB0byBJbnRSZWN0LgorCisgICAgICAgIEFzIGEgYm9udXMsIEkgYWxzbyBhZGRlZCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCBhbmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgICh3aGlj
aCBoYWQgYmVlbiBsZWZ0IGluIHRoZSBDQyBmaWxlcykgdG8gQ0NEcmF3UXVhZDo6c2l6ZSgpLCBz
byBub3cKKyAgICAgICAgZXZlcnkgcXVhZCB0eXBlIGlzIHJlYWR5IGZvciBzZXJpYWxpemF0aW9u
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8tb3AgcmVmYWN0b3JpbmcpLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRTaW5rLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3
UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RlYnVnQm9yZGVyRHJhd1F1
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OndpZHRoKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdR
dWFkOjpDQ0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6Om9wYXF1ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NEcmF3UXVhZDo6c2V0U2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NEcmF3UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3
UXVhZDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFZpc2libGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OmlzRGVidWdRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6Om1hdGVyaWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1
YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpzaGFy
ZWRRdWFkU3RhdGVJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJ
T1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNl
RHJhd1F1YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1
cmZhY2VEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENDSU9TdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1
cmZhY2VEcmF3UXVhZDo6aW9TdXJmYWNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3Vy
ZmFjZURyYXdRdWFkOjppb1N1cmZhY2VUZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJ
T1N1cmZhY2VEcmF3UXVhZDo6b3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoQ0NRdWFkQ3VsbGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZFNpbmspOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmg6
CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaGFyZWRRdWFk
U3RhdGU6OmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENv
bG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U29saWRDb2xvckRyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU29saWRDb2xvckRyYXdRdWFkOjpjb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1N0cmVhbVZpZGVvRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1N0cmVh
bVZpZGVvRHJhd1F1YWQ6OkNDU3RyZWFtVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDU3RyZWFtVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdR
dWFkOjpDQ1RleHR1cmVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3
UXVhZDo6c2V0TmVlZHNCbGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q1RleHR1cmVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3UXVhZDo6
dXZSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdRdWFkOjpyZXNvdXJjZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdRdWFkOjpwcmVtdWx0aXBsaWVkQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlRHJhd1F1YWQ6OmZsaXBwZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVE
cmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NUaWxl
RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnJlc291cmNlSWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnRleHR1cmVPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnRleHR1cmVTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGlsZURyYXdRdWFkOjp0ZXh0dXJlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGlsZURyYXdRdWFkOjpzd2l6emxlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlRHJhd1F1YWQ6OmxlZnRFZGdlQUEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1
YWQ6OnRvcEVkZ2VBQSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6cmlnaHRF
ZGdlQUEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OmJvdHRvbUVkZ2VBQSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6aXNBbnRpYWxpYXNlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaDoK
KyAgICAgICAgKENDWVVWVmlkZW9EcmF3UXVhZCk6CisKIDIwMTItMDgtMDIgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2NyaXB0cyBpbiBmb3JtYWN0aW9uIHNo
b3VsZCBiZSBzdHJpcHBlZCB1cG9uIHBhc3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGMzYWY5
NjM5YWI0NmUyNTVkYjBmMzAyN2JkYjgwOTMxYTBjOTEyNzQuLmE5ZGFiMjA1NGI1Zjg2MTFiMTU2
ZDVkZDAxMDNmOWUzZjJhNzUyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC00NCwxNSArNDQs
NiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21tb24uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmgnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaCcsCi0gICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCcsCi0gICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50LmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWUuaCcsCkBAIC0xMjksNyArMTIwLDcgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViVG91Y2hDYW5kaWRhdGVzSW5mby5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckNoZWNrZXJi
b2FyZFF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
ckNoZWNrZXJib2FyZFF1YWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdlMDJi
YmZmYTQzMjYyN2Y5NGYyNWVjNWVkYTI5MmY4OTlkMWIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9oCi0j
ZGVmaW5lIFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkX2gKLQotI2luY2x1ZGUgIldlYkNv
bXBvc2l0b3JRdWFkLmgiCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBw
YWNrKHB1c2gsIDQpCi0KLWNsYXNzIFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkIDogcHVi
bGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKLXB1YmxpYzoKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZD4g
Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yQ2hl
Y2tlcmJvYXJkUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKik7Ci1w
cml2YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkNvbXBvc2l0b3JDaGVj
a2VyYm9hcmRRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7Ci0jZW5kaWYKLX07Ci0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZmNmZDRiNjVjMGY5ZjBhNDYwNjhhZjYwODg2YWYxNjM0ODYyYTA1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvckRlYnVn
Qm9yZGVyUXVhZF9oCi0jZGVmaW5lIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWRfaAotCi0j
aW5jbHVkZSAiU2tDb2xvci5oIgotI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCi0jaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDQpCi0KLWNsYXNz
IFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQg
ewotcHVibGljOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3IsIGlu
dCB3aWR0aCk7Ci0jZW5kaWYKLQotICAgIFNrQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2NvbG9yOyB9OwotICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLQot
ICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKiBtYXRlcmlhbENh
c3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCi0gICAgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3Is
IGludCB3aWR0aCk7Ci0jZW5kaWYKLQotICAgIFNrQ29sb3IgbV9jb2xvcjsKLSAgICBpbnQgbV93
aWR0aDsKLX07Ci0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VR
dWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NTBlMDYyODU5YzYw
NjYwY2EyZTQyZWFlMjJhMjcwNDk5OTRlZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9ySU9TdXJmYWNlUXVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWRfaAotI2RlZmluZSBXZWJDb21w
b3NpdG9ySU9TdXJmYWNlUXVhZF9oCi0KLSNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgot
I2luY2x1ZGUgIldlYlNpemUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDQpCi0KLWNsYXNzIFdlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKLXB1YmxpYzoK
LSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBlbnVtIE9yaWVudGF0aW9uIHsKLSAgICAg
IEZsaXBwZWQsCi0gICAgICBVbmZsaXBwZWQKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCwgT3Jp
ZW50YXRpb24pOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBpb1N1cmZhY2VTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9pb1N1cmZhY2VTaXplOyB9Ci0gICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KLSAgICBPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLSNlbmRp
ZgotCi0gICAgc3RhdGljIGNvbnN0IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKiBtYXRlcmlh
bENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoY29uc3QgV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJl
SWQsIE9yaWVudGF0aW9uKTsKLSNlbmRpZgotCi0gICAgV2ViU2l6ZSBtX2lvU3VyZmFjZVNpemU7
Ci0gICAgdW5zaWduZWQgbV9pb1N1cmZhY2VUZXh0dXJlSWQ7Ci0gICAgT3JpZW50YXRpb24gbV9v
cmllbnRhdGlvbjsKLX07Ci0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFk
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MDI3ZmM1NTdkYzZiMTQxMTY2NjgxZWFj
ZGY0YmI4NmZlZTU2ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbXBv
c2l0b3JRdWFkX2gKLSNkZWZpbmUgV2ViQ29tcG9zaXRvclF1YWRfaAotCi0jaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oIgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gV0FSTklORyEgQWxsIFdlYkNvbXBvc2l0b3JYWVpRdWFk
IGNsYXNzZXMgbXVzdCByZW1haW4gUE9EcyAocGxhaW4gb2xkIGRhdGEpLgotLy8gVGhleSBhcmUg
aW50ZW5kZWQgdG8gYmUgInNlcmlhbGl6YWJsZSIgYnkgY29weWluZyB0aGVpciByYXcgYnl0ZXMs
IHNvIHRoZXkKLS8vIG11c3Qgbm90IGNvbnRhaW4gYW55IG5vbi1iaXQtY29weWFibGUgbWVtYmVy
IHZhcmlhYmxlcyEKLS8vCi0vLyBGdXJ0aGVybW9yZSwgdGhlIGNsYXNzIG1lbWJlcnMgbmVlZCB0
byBiZSBwYWNrZWQgc28gdGhleSBhcmUgYWxpZ25lZAotLy8gcHJvcGVybHkgYW5kIGRvbid0IGhh
dmUgcGFkZGluZ3MvZ2Fwcywgb3RoZXJ3aXNlIG1lbW9yeSBjaGVjayB0b29scwotLy8gbGlrZSBW
YWxncmluZCB3aWxsIGNvbXBsYWluIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHdo
ZW4KLS8vIHRyYW5zZmVycmluZyB0aGVzZSBjbGFzc2VzIG92ZXIgdGhlIHdpcmUuCi0jcHJhZ21h
IHBhY2socHVzaCwgNCkKLQotLy8gV2ViQ29tcG9zaXRvclF1YWQgaXMgYSBiYWcgb2YgZGF0YSB1
c2VkIGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBkaWZmZXJlbnQKLS8vIG1hdGVyaWFscyBu
ZWVkIGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRhdGEgdG8gcmVuZGVyLCBjbGFzc2VzIHRo
YXQgZGVyaXZlCi0vLyBmcm9tIFdlYkNvbXBvc2l0b3JRdWFkIHN0b3JlIGFkZGl0aW9uYWwgZGF0
YSBpbiB0aGVpciBkZXJpdmVkIGluc3RhbmNlLiBUaGUgTWF0ZXJpYWwKLS8vIGVudW0gaXMgdXNl
ZCB0byAic2FmZWx5IiBkb3duY2FzdCB0byB0aGUgZGVyaXZlZCBjbGFzcy4KLWNsYXNzIFdlYkNv
bXBvc2l0b3JRdWFkIHsKLXB1YmxpYzoKLSAgICBlbnVtIE1hdGVyaWFsIHsKLSAgICAgICAgSW52
YWxpZCwKLSAgICAgICAgQ2hlY2tlcmJvYXJkLAotICAgICAgICBEZWJ1Z0JvcmRlciwKLSAgICAg
ICAgSU9TdXJmYWNlQ29udGVudCwKLSAgICAgICAgUmVuZGVyUGFzcywKLSAgICAgICAgVGV4dHVy
ZUNvbnRlbnQsCi0gICAgICAgIFNvbGlkQ29sb3IsCi0gICAgICAgIFRpbGVkQ29udGVudCwKLSAg
ICAgICAgWVVWVmlkZW9Db250ZW50LAotICAgICAgICBTdHJlYW1WaWRlb0NvbnRlbnQsCi0gICAg
fTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkNvcmU6OkludFJlY3QgcXVh
ZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRSZWN0OyB9Ci0gICAgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybTsgfQotICAgIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnZpc2libGVDb250
ZW50UmVjdDsgfQotICAgIFdlYkNvcmU6OkludFJlY3Qgc2Npc3NvclJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJlY3Q7IH0KLSAgICBmbG9hdCBvcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHk7IH0KLSAgICAvLyBG
b3IgdGhlIHB1cnBvc2VzIG9mIGJsZW5kaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9m
IHRoaXMgcXVhZCBhcmUgb3BhcXVlPwotICAgIFdlYkNvcmU6OkludFJlY3Qgb3BhcXVlUmVjdCgp
IGNvbnN0OwotICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNC
bGVuZGluZyB8fCAhb3BhcXVlUmVjdCgpLmNvbnRhaW5zKG1fcXVhZFZpc2libGVSZWN0KTsgfQot
ICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KLQotICAgIC8vIEFs
bG93cyBjaGFuZ2luZyB0aGUgcmVjdCB0aGF0IGdldHMgZHJhd24gdG8gbWFrZSBpdCBzbWFsbGVy
LiBQYXJhbWV0ZXIgcGFzc2VkCi0gICAgLy8gaW4gd2lsbCBiZSBjbGlwcGVkIHRvIHF1YWRSZWN0
KCkuCi0gICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwotICAgIFdlYkNvcmU6OkludFJlY3QgcXVhZFZpc2libGVSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9xdWFkVmlzaWJsZVJlY3Q7IH0KLSAgICBib29sIGlzRGVidWdRdWFkKCkgY29uc3QgeyByZXR1
cm4gbV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcjsgfQotI2VuZGlmCi0KLSAgICBNYXRlcmlhbCBt
YXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWw7IH0KLQotICAgIC8vIFJldHVybnMg
dHJhbnNmZXIgc2l6ZSBvZiB0aGlzIG9iamVjdCBiYXNlZCBvbiB0aGUgZGVyaXZlZCBjbGFzcyAo
YnkKLSAgICAvLyBsb29raW5nIGF0IHRoZSBtYXRlcmlhbCB0eXBlKS4KLSAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZTsgfQotICAg
IGludCBzaGFyZWRRdWFkU3RhdGVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
SWQ7IH0KLSAgICB2b2lkIHNldFNoYXJlZFF1YWRTdGF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKik7Ci0KLXByb3RlY3RlZDoKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSAgICBXZWJDb21wb3NpdG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiwgTWF0ZXJpYWwsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSNlbmRpZgotCi0gICAgLy8g
U3RvcmVzIHN0YXRlIGNvbW1vbiB0byBhIGxhcmdlIGJ1bmRsZSBvZiBxdWFkczsga2VwdCBzZXBh
cmF0ZSBmb3IgbWVtb3J5Ci0gICAgLy8gZWZmaWNpZW5jeS4gVGhlcmUgaXMgc3BlY2lhbCB0cmVh
dG1lbnQgdG8gcmVjb25zdHJ1Y3QgdGhlc2UgcG9pbnRlcnMKLSAgICAvLyBkdXJpbmcgc2VyaWFs
aXphdGlvbi4KLSAgICBjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBtX3NoYXJl
ZFF1YWRTdGF0ZTsKLSAgICBpbnQgbV9zaGFyZWRRdWFkU3RhdGVJZDsKLQotICAgIE1hdGVyaWFs
IG1fbWF0ZXJpYWw7Ci0gICAgV2ViUmVjdCBtX3F1YWRSZWN0OwotICAgIFdlYlJlY3QgbV9xdWFk
VmlzaWJsZVJlY3Q7Ci0KLSAgICAvLyBCeSBkZWZhdWx0LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUg
ZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1YWQgaXMKLSAgICAvLyBvcGFxdWUgb3Ig
bmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQot
ICAgIC8vIHZhcmlhYmxlcy4KLSAgICBib29sIG1fcXVhZE9wYXF1ZTsKLSAgICBib29sIG1fbmVl
ZHNCbGVuZGluZzsKLQotICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQg
aXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKLSAgICAvLyB2YXJp
YWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5
IGJlIHBhcnRpYWxseSBvcGFxdWUuCi0gICAgV2ViUmVjdCBtX29wYXF1ZVJlY3Q7Ci19OwotCi0j
cHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzZDQwNzNlZDZkYTNmNWU4YWM4Yzdh
NzU3MmNmZmE0NTM2NTAzMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGVfaAotI2RlZmluZSBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+Ci0jZW5kaWYKLSNpbmNsdWRlICJXZWJSZWN0LmgiCi0jaW5jbHVkZSAiV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgewotcHVibGljOgotICAgIGludCBpZDsKLQotICAgIC8v
IFRyYW5zZm9ybXMgZnJvbSBxdWFkJ3Mgb3JpZ2luYWwgY29udGVudCBzcGFjZSB0byBpdHMgdGFy
Z2V0IGNvbnRlbnQgc3BhY2UuCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5z
Zm9ybTsKLSAgICAvLyBUaGlzIHJlY3QgbGl2ZXMgaW4gdGhlIGNvbnRlbnQgc3BhY2UgZm9yIHRo
ZSBxdWFkJ3Mgb3JpZ2luYXRpbmcgbGF5ZXIuCi0gICAgV2ViUmVjdCB2aXNpYmxlQ29udGVudFJl
Y3Q7Ci0gICAgLy8gVGhpcyByZWN0IGxpdmVzIGluIHRoZSBxdWFkJ3MgdGFyZ2V0IGNvbnRlbnQg
c3BhY2UuCi0gICAgV2ViUmVjdCBzY2lzc29yUmVjdDsKLSAgICBmbG9hdCBvcGFjaXR5OwotICAg
IGJvb2wgb3BhcXVlOwotCi0gICAgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSgpOwotCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGludCBpZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVD
b250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlKTsKLSAgICBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGlu
dCBpZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKLSAgICBib29s
IGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdDsKLSNlbmRpZgotfTsKLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclNvbGlkQ29sb3JRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMzEyMTBlMzUyMGU4N2M4NzlhNmU2NDNiOTlhNjUwZTU1OWIwZWNhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWRfaAotI2RlZmluZSBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWRfaAotCi0jaW5jbHVkZSAi
U2tDb2xvci5oIgotI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNlbmRpZgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDQpCi0KLWNsYXNzIFdlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7Ci1wdWJsaWM6
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29t
cG9zaXRvclNvbGlkQ29sb3JRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yKTsKLSNlbmRpZgotCi0g
ICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Ci0KLSAgICBzdGF0
aWMgY29uc3QgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKiBtYXRlcmlhbENhc3QoY29uc3Qg
V2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgU2tDb2xvcik7Ci0jZW5kaWYK
LQotICAgIFNrQ29sb3IgbV9jb2xvcjsKLX07Ci0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzNmEzY2VhYjRiNmMzM2YxM2Q1MzljYmZmZGJhZjgxMTExZmEzNThlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvclN0cmVhbVZp
ZGVvUXVhZF9oCi0jZGVmaW5lIFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWRfaAotCi0jaW5j
bHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jcHJhZ21hIHBh
Y2socHVzaCwgNCkKLQotY2xhc3MgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZCA6IHB1Ymxp
YyBXZWJDb21wb3NpdG9yUXVhZCB7Ci1wdWJsaWM6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVJZDsgfQotICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgo
KSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsgfQotCi0gICAgc3RhdGljIGNvbnN0IFdlYkNvbXBv
c2l0b3JTdHJlYW1WaWRlb1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVh
ZCopOwotcHJpdmF0ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb21wb3Np
dG9yU3RyZWFtVmlkZW9RdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsK
LSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX21hdHJpeDsKLX07Ci0KLSNwcmFnbWEgcGFj
ayhwb3ApCi0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmI4ODY5NTY1YzE2YTIyYTk3ZjIyZWFjNjUzZGM5MGRhYjM1ZmM3Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkX2gKLSNkZWZpbmUgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkX2gKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2VuZGlmCi0jaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKLSNpbmNsdWRl
ICJXZWJGbG9hdFJlY3QuaCIKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jcHJhZ21h
IHBhY2socHVzaCwgNCkKLQotY2xhc3MgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIDogcHVibGlj
IFdlYkNvbXBvc2l0b3JRdWFkIHsKLXB1YmxpYzoKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IGNyZWF0ZShj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKLSAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0KLSNlbmRpZgotCi0g
ICAgdW5zaWduZWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VJZDsgfQot
ICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlw
bGllZEFscGhhOyB9Ci0gICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVk
OyB9Ci0KLSAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKLQotICAgIHN0YXRpYyBjb25zdCBX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9y
UXVhZCopOwotcHJpdmF0ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKTsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgbV9yZXNvdXJjZUlkOwotICAgIGJv
b2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7Ci0gICAgV2ViRmxvYXRSZWN0IG1fdXZSZWN0OwotICAg
IGJvb2wgbV9mbGlwcGVkOwotfTsKLQotI3ByYWdtYSBwYWNrKHBvcCkKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
clRpbGVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JUaWxlUXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjBkZTcyMzMxMGE2
ODk1N2E3OTljMmViOTdhODAxNTRhYjFiYjdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJDb21wb3NpdG9yVGlsZVF1YWRfaAotI2RlZmluZSBXZWJDb21wb3NpdG9yVGls
ZVF1YWRfaAotCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCi0jaW5jbHVkZSAiV2ViQ29t
cG9zaXRvclF1YWQuaCIKLSNpbmNsdWRlICJXZWJQb2ludC5oIgotI2luY2x1ZGUgIldlYlNpemUu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
I3ByYWdtYSBwYWNrKHB1c2gsIDQpCi0KLWNsYXNzIFdlYkNvbXBvc2l0b3JUaWxlUXVhZCA6IHB1
YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7Ci1wdWJsaWM6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBjcmVhdGUo
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25l
ZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwg
Ym9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJv
b2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKLQotICAgIHVuc2lnbmVkIHJlc291
cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7IH0KLSAgICBXZWJDb3JlOjpJbnRQ
b2ludCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlT2Zmc2V0OyB9Ci0g
ICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZVNpemU7IH0KLSAgICBHQzNEaW50IHRleHR1cmVGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVGaWx0ZXI7IH0KLSAgICBib29sIHN3aXp6bGVDb250ZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fc3dpenpsZUNvbnRlbnRzOyB9Ci0KLSAgICBib29sIGxlZnRFZGdlQUEoKSBjb25zdCB7IHJl
dHVybiBtX2xlZnRFZGdlQUE7IH0KLSAgICBib29sIHRvcEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJu
IG1fdG9wRWRnZUFBOyB9Ci0gICAgYm9vbCByaWdodEVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmlnaHRFZGdlQUE7IH0KLSAgICBib29sIGJvdHRvbUVkZ2VBQSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym90dG9tRWRnZUFBOyB9Ci0KLSAgICBib29sIGlzQW50aWFsaWFzZWQoKSBjb25zdCB7IHJldHVy
biBsZWZ0RWRnZUFBKCkgfHwgdG9wRWRnZUFBKCkgfHwgcmlnaHRFZGdlQUEoKSB8fCBib3R0b21F
ZGdlQUEoKTsgfQotI2VuZGlmCi0KLSAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclRpbGVR
dWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZhdGU6Ci0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgIFdlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJl
c291cmNlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29s
IHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCBy
aWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBt
X3Jlc291cmNlSWQ7Ci0gICAgV2ViUG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwotICAgIFdlYlNpemUg
bV90ZXh0dXJlU2l6ZTsKLSAgICBHQzNEaW50IG1fdGV4dHVyZUZpbHRlcjsKLSAgICBib29sIG1f
c3dpenpsZUNvbnRlbnRzOwotICAgIGJvb2wgbV9sZWZ0RWRnZUFBOwotICAgIGJvb2wgbV90b3BF
ZGdlQUE7Ci0gICAgYm9vbCBtX3JpZ2h0RWRnZUFBOwotICAgIGJvb2wgbV9ib3R0b21FZGdlQUE7
Ci19OwotCi0jcHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGNmZGRmYzcyYTY1MDEzY2JiOGNiNTM4OTQ3MTM5M2E4ZTA5YjdkNGYuLmExM2M0ZWU0MWEx
Nzg5NmQyZmIwNzlkYTE4YmRmYmU4ZTI0MDc2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgyMTIs
MTUgKzgyMTIsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJBdWRpb0J1cy5jcHAnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JE
ZWJ1Z0JvcmRlclF1YWQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clNvbGlkQ29sb3JRdWFkLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNwcCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVh
ZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRGF0YS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUEJvZHku
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2Fk
SW5mby5jcHAnLApAQCAtODMxMCwxNCArODMwMSwxNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRz
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1
YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFz
ZWRUaW1lU291cmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRm9udEF0bGFzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NGb250QXRsYXMuaCcsCkBAIC04MzI4LDYgKzgzMjIsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERp
c3BsYXlMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFk
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCcsCkBAIC04Mzk3LDE1ICs4MzkyLDE5IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
ZXR0aW5ncy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2V0dGluZ3MuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVv
RHJhd1F1YWQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBs
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmgnLApAQCAtODQxNSw2ICs4NDE0LDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFRhc2suaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9yQ2hlY2tlcmJvYXJkUXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3
MGRiMmI4NDI1YmJkZjMwOTQxOGQ5YjA5NzI4Zjk2ZWU4YmI5YTUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5j
bHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJD
b21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZD4gV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ6
OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCkp
OwotfQotCi1XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6V2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKLSAgICA6IFdlYkNvbXBvc2l0b3JRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNrZXJib2FyZCwgcXVhZFJl
Y3QpCi17Ci19Ci0KLWNvbnN0IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkKiBXZWJDb21w
b3NpdG9yQ2hlY2tlcmJvYXJkUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JR
dWFkKiBxdWFkKQotewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0
b3JRdWFkOjpDaGVja2VyYm9hcmQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJD
b21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCo+KHF1YWQpOwotfQotCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckRl
YnVnQm9yZGVyUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNzlmNmMxNGZlYTc4YWM5NzIzMTQyMmNlMzQ2N2QyOWM0NjBmZGU2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNz
T3duUHRyPFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ+IFdlYkNvbXBvc2l0b3JEZWJ1Z0Jv
cmRlclF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQg
d2lkdGgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yRGVidWdCb3Jk
ZXJRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yLCB3aWR0aCkpOwotfQotCi1X
ZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkOjpXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFk
KGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29u
c3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkKLSAgICA6IFdl
YkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OkRlYnVn
Qm9yZGVyLCBxdWFkUmVjdCkKLSAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgLCBtX3dpZHRoKHdp
ZHRoKQotewotICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOwotICAgIGlmIChTa0NvbG9yR2V0QSht
X2NvbG9yKSA8IDI1NSkKLSAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKLX0KLQotY29u
c3QgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCogV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVy
UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQotewotICAg
IEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0JvcmRl
cik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRl
clF1YWQqPihxdWFkKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1cmZh
Y2VRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI1ZWFiZDA1OTkyMzQy
NTZhNzEyMzE1MWFjYmFlZGE3NDA1YWExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VR
dWFkPiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1
cmVJZCwgT3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBp
b1N1cmZhY2VTaXplLCBpb1N1cmZhY2VUZXh0dXJlSWQsIG9yaWVudGF0aW9uKSk7Ci19Ci0KLVdl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkOjpXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZChjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBp
b1N1cmZhY2VUZXh0dXJlSWQsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQotICAgIDogV2ViQ29t
cG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6SU9TdXJmYWNl
Q29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX2lvU3VyZmFjZVNpemUoaW9TdXJmYWNlU2l6ZSkK
LSAgICAsIG1faW9TdXJmYWNlVGV4dHVyZUlkKGlvU3VyZmFjZVRleHR1cmVJZCkKLSAgICAsIG1f
b3JpZW50YXRpb24ob3JpZW50YXRpb24pCi17Ci19Ci0KLWNvbnN0IFdlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkKiBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQotewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgp
ID09IFdlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50KTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQqPihxdWFkKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNmQ2MTdjZDg0MzMxZjMzY2I3YzdhMTMyZmVjMjljODdhNDk4ODYwOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JRdWFkLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgotCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JTb2xpZENvbG9yUXVhZC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFt
VmlkZW9RdWFkLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5o
PgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb21wb3NpdG9yUXVh
ZDo6V2ViQ29tcG9zaXRvclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRlcmlhbCwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QpCi0gICAgOiBtX3NoYXJlZFF1YWRTdGF0ZShzaGFyZWRRdWFkU3RhdGUpCi0gICAgLCBtX3No
YXJlZFF1YWRTdGF0ZUlkKHNoYXJlZFF1YWRTdGF0ZS0+aWQpCi0gICAgLCBtX21hdGVyaWFsKG1h
dGVyaWFsKQotICAgICwgbV9xdWFkUmVjdChxdWFkUmVjdCkKLSAgICAsIG1fcXVhZFZpc2libGVS
ZWN0KHF1YWRSZWN0KQotICAgICwgbV9xdWFkT3BhcXVlKHRydWUpCi0gICAgLCBtX25lZWRzQmxl
bmRpbmcoZmFsc2UpCi17Ci0gICAgQVNTRVJUKG1fc2hhcmVkUXVhZFN0YXRlKTsKLSAgICBBU1NF
UlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKLX0KLQotSW50UmVjdCBXZWJDb21wb3NpdG9yUXVh
ZDo6b3BhcXVlUmVjdCgpIGNvbnN0Ci17Ci0gICAgaWYgKG9wYWNpdHkoKSAhPSAxKQotICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwotICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhcXVlICYm
IG1fcXVhZE9wYXF1ZSkKLSAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7Ci0gICAgcmV0dXJuIG1f
b3BhcXVlUmVjdDsKLX0KLQotdm9pZCBXZWJDb21wb3NpdG9yUXVhZDo6c2V0UXVhZFZpc2libGVS
ZWN0KGNvbnN0IEludFJlY3QmIHF1YWRWaXNpYmxlUmVjdCkKLXsKLSAgICBJbnRSZWN0IGludGVy
c2VjdGlvbiA9IHF1YWRWaXNpYmxlUmVjdDsKLSAgICBpbnRlcnNlY3Rpb24uaW50ZXJzZWN0KG1f
cXVhZFJlY3QpOwotICAgIG1fcXVhZFZpc2libGVSZWN0ID0gaW50ZXJzZWN0aW9uOwotfQotCi11
bnNpZ25lZCBXZWJDb21wb3NpdG9yUXVhZDo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICht
YXRlcmlhbCgpKSB7Ci0gICAgY2FzZSBDaGVja2VyYm9hcmQ6Ci0gICAgICAgIHJldHVybiBzaXpl
b2YoV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQpOwotICAgIGNhc2UgRGVidWdCb3JkZXI6
Ci0gICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCk7Ci0g
ICAgY2FzZSBJT1N1cmZhY2VDb250ZW50OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBv
c2l0b3JJT1N1cmZhY2VRdWFkKTsKLSAgICBjYXNlIFRleHR1cmVDb250ZW50OgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk7Ci0gICAgY2FzZSBTb2xpZENv
bG9yOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCk7
Ci0gICAgY2FzZSBUaWxlZENvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoV2ViQ29tcG9z
aXRvclRpbGVRdWFkKTsKLSAgICBjYXNlIFN0cmVhbVZpZGVvQ29udGVudDoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKTsKLSAgICBjYXNlIEludmFs
aWQ6Ci0gICAgY2FzZSBSZW5kZXJQYXNzOgotICAgIGNhc2UgWVVWVmlkZW9Db250ZW50OgotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBDUkFTSCgpOwotICAgIHJldHVybiBzaXplb2YoV2Vi
Q29tcG9zaXRvclF1YWQpOwotfQotCi12b2lkIFdlYkNvbXBvc2l0b3JRdWFkOjpzZXRTaGFyZWRR
dWFkU3RhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQotewotICAgIG1fc2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkUXVhZFN0YXRlOwotICAgIG1f
c2hhcmVkUXVhZFN0YXRlSWQgPSBzaGFyZWRRdWFkU3RhdGUtPmlkOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTFlZjNlYWY5YWNjNWIxMDUxZjQ0MjEyMGJmMmQ0ZjhkZTBlMDIwZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3Rh
dGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
Lmg+Ci0KLSNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgi
Ci0KLXVzaW5nIFdlYkNvcmU6OkZsb2F0UXVhZDsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlOjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKCkKLSAgICA6IGlkKDApCi0gICAgLCBvcGFjaXR5KDAp
Ci0gICAgLCBvcGFxdWUoZmFsc2UpCi17Ci19Ci0KLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZT4gV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGludCBp
ZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IElu
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZs
b2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShpZCwgcXVhZFRyYW5zZm9ybSwgdmlzaWJsZUNvbnRl
bnRSZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwgb3BhcXVlKSk7Ci19Ci0KLVdlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGU6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUoaW50IGlkLCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQg
b3BhY2l0eSwgYm9vbCBvcGFxdWUpCi0gICAgOiBpZChpZCkKLSAgICAsIHF1YWRUcmFuc2Zvcm0o
cXVhZFRyYW5zZm9ybSkKLSAgICAsIHZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlQ29udGVudFJl
Y3QpCi0gICAgLCBzY2lzc29yUmVjdChzY2lzc29yUmVjdCkKLSAgICAsIG9wYWNpdHkob3BhY2l0
eSkKLSAgICAsIG9wYXF1ZShvcGFxdWUpCi17Ci19Ci0KLWJvb2wgV2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0Ci17Ci0gICAgLy8g
Tm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJpY2Vz
LgotICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50ZWdl
ciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KLSAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKLSAg
ICBGbG9hdFF1YWQgcXVhZCA9IFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcFF1YWQocXVhZFRyYW5z
Zm9ybSwgRmxvYXRRdWFkKEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KSksIGNsaXBwZWQpOwot
ICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5k
aW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc4MjQ1OGM3MjI2NTBmMGFkMjhlZTlkYTUxNTdjNDgyNTc2NGFjNWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRy
PFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZD4gV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFk
OjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBTa0NvbG9yIGNvbG9yKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yKSk7Ci19Ci0KLVdlYkNvbXBvc2l0b3JTb2xpZENv
bG9yUXVhZDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgU2tDb2xvciBjb2xvcikKLSAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlNvbGlkQ29sb3IsIHF1YWRSZWN0KQotICAgICwg
bV9jb2xvcihjb2xvcikKLXsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAyNTUpCi0g
ICAgICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOwotICAgIGVsc2UKLSAgICAgICAgbV9vcGFxdWVS
ZWN0ID0gcXVhZFJlY3Q7Ci19Ci0KLWNvbnN0IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCog
V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9z
aXRvclF1YWQqIHF1YWQpCi17Ci0gICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29t
cG9zaXRvclF1YWQ6OlNvbGlkQ29sb3IpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBX
ZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQqPihxdWFkKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU3Ry
ZWFtVmlkZW9RdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFlMjU3YWFmN2UzNDFkZWM0ODQ3ZTAzMWZkZTAwMGQyM2Y2MWNiNTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NP
d25QdHI8V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZD4gV2ViQ29tcG9zaXRvclN0cmVhbVZp
ZGVvUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwg
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgdGV4dHVyZUlkLCBtYXRyaXgpKTsKLX0KLQotV2ViQ29tcG9zaXRvclN0cmVhbVZp
ZGVvUXVhZDo6V2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZChjb25zdCBXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCi0gICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0
b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90ZXh0dXJlSWQo
dGV4dHVyZUlkKQotICAgICwgbV9tYXRyaXgobWF0cml4KQotewotfQotCi1jb25zdCBXZWJDb21w
b3NpdG9yU3RyZWFtVmlkZW9RdWFkKiBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkOjptYXRl
cmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCi17Ci0gICAgQVNTRVJUKHF1
YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVudCk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1
YWQqPihxdWFkKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDBiNjdhNDFhMjNmNmExYjgwODI2
OTY2MzAyMGYwN2ZkNjA1OTI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5z
aWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVj
dCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVzb3VyY2VJ
ZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKLX0KLQotV2ViQ29tcG9z
aXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBo
YSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKLSAgICA6IFdlYkNvbXBv
c2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250
ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAgICwgbV9w
cmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQotICAgICwgbV91dlJlY3QodXZS
ZWN0KQotICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCi17Ci19Ci0KLXZvaWQgV2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOjpzZXROZWVkc0JsZW5kaW5nKCkKLXsKLSAgICBtX25lZWRzQmxlbmRpbmcg
PSB0cnVlOwotfQotCi1jb25zdCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQqIFdlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1
YWQqIHF1YWQpCi17Ci0gICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gV2ViQ29tcG9zaXRv
clF1YWQ6OlRleHR1cmVDb250ZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkKj4ocXVhZCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVRdWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwZTgxZGZj
ZmVjZTAyMDM4NzdhODJjNGZmNmJlYjY4MDNkMzFlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JUaWxlUXVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJD
b21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4
dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZp
bHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdl
QUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQotewotICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRpbGVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJl
Y3QsIG9wYXF1ZVJlY3QsIHJlc291cmNlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0
ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmln
aHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwotfQotCi1XZWJDb21wb3NpdG9yVGlsZVF1YWQ6Oldl
YkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBv
cGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9m
ZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwg
Ym9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJv
b2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQotICAgIDogV2ViQ29tcG9zaXRvclF1
YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50LCBxdWFk
UmVjdCkKLSAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQotICAgICwgbV90ZXh0dXJlT2Zm
c2V0KHRleHR1cmVPZmZzZXQpCi0gICAgLCBtX3RleHR1cmVTaXplKHRleHR1cmVTaXplKQotICAg
ICwgbV90ZXh0dXJlRmlsdGVyKHRleHR1cmVGaWx0ZXIpCi0gICAgLCBtX3N3aXp6bGVDb250ZW50
cyhzd2l6emxlQ29udGVudHMpCi0gICAgLCBtX2xlZnRFZGdlQUEobGVmdEVkZ2VBQSkKLSAgICAs
IG1fdG9wRWRnZUFBKHRvcEVkZ2VBQSkKLSAgICAsIG1fcmlnaHRFZGdlQUEocmlnaHRFZGdlQUEp
Ci0gICAgLCBtX2JvdHRvbUVkZ2VBQShib3R0b21FZGdlQUEpCi17Ci0gICAgaWYgKGlzQW50aWFs
aWFzZWQoKSkKLSAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKLSAgICBtX29wYXF1ZVJl
Y3QgPSBvcGFxdWVSZWN0OwotfQotCi1jb25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIFdlYkNv
bXBvc2l0b3JUaWxlUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBx
dWFkKQotewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFk
OjpUaWxlZENvbnRlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3Np
dG9yVGlsZVF1YWQqPihxdWFkKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKaW5kZXggODg2MTBhMGIwNTJlYmVhMmE1MWRjMzJiMDAzZmE4OWRmYmU4YzAyNi4u
MWVjY2YzZTQ1YTkxZjUxZmQ5ZGVmNTE5YjBmODIwOGRkOGY4NGZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0
IENDUmVuZGVyUGEKICAgICAgICAgZHJhd1F1YWQoZnJhbWUsIGl0LT5nZXQoKSk7CiB9CiAKLXZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDRHJhd1F1YWQq
IHF1YWQpCiB7CiAgICAgSW50UmVjdCBzY2lzc29yUmVjdCA9IHF1YWQtPnNjaXNzb3JSZWN0KCk7
CiAKQEAgLTQ0NSwzNCArNDQ1LDM0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJLaXQ6OldlYkNvbXBvCiAgICAgICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxF
TkQpKTsKIAogICAgIHN3aXRjaCAocXVhZC0+bWF0ZXJpYWwoKSkgewotICAgIGNhc2UgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDo6SW52YWxpZDoKKyAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFs
aWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OkNoZWNrZXJib2FyZDoKKyAgICBjYXNlIEND
RHJhd1F1YWQ6OkNoZWNrZXJib2FyZDoKICAgICAgICAgZHJhd0NoZWNrZXJib2FyZFF1YWQoZnJh
bWUsIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXI6
CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRlcjoKICAgICAgICAgZHJhd0RlYnVnQm9y
ZGVyUXVhZChmcmFtZSwgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OklP
U3VyZmFjZUNvbnRlbnQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpJT1N1cmZhY2VDb250ZW50Ogog
ICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChmcmFtZSwgQ0NJT1N1cmZhY2VEcmF3UXVhZDo6bWF0
ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JRdWFkOjpSZW5kZXJQYXNzOgorICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFz
czoKICAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKGZyYW1lLCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yOgotICAgICAgICBkcmF3U29saWRDb2xvclF1
YWQoZnJhbWUsIFdlYktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENh
c3QocXVhZCkpOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6U29saWRDb2xvcjoKKyAgICAgICAgZHJh
d1NvbGlkQ29sb3JRdWFkKGZyYW1lLCBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpTdHJlYW1WaWRl
b0NvbnRlbnQ6CiAgICAgICAgIGRyYXdTdHJlYW1WaWRlb1F1YWQoZnJhbWUsIENDU3RyZWFtVmlk
ZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudDoKLSAgICAgICAgZHJh
d1RleHR1cmVRdWFkKGZyYW1lLCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6bWF0
ZXJpYWxDYXN0KHF1YWQpKTsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OlRleHR1cmVDb250ZW50Ogor
ICAgICAgICBkcmF3VGV4dHVyZVF1YWQoZnJhbWUsIENDVGV4dHVyZURyYXdRdWFkOjptYXRlcmlh
bENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9z
aXRvclF1YWQ6OlRpbGVkQ29udGVudDoKKyAgICBjYXNlIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dDoKICAgICAgICAgZHJhd1RpbGVRdWFkKGZyYW1lLCBDQ1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpZVVZWaWRlb0Nv
bnRlbnQ6CiAgICAgICAgIGRyYXdZVVZWaWRlb1F1YWQoZnJhbWUsIENDWVVWVmlkZW9EcmF3UXVh
ZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU1ZjdhNTAw
ZTlmZjczMDZhYjUxZmNiNmNiZGJmNjU1MThmM2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IENDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCkpOworfQorCitD
Q0NoZWNrZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQor
ICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkNoZWNrZXJib2Fy
ZCwgcXVhZFJlY3QpCit7Cit9CisKK2NvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIENDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQor
eworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OkNoZWNrZXJib2Fy
ZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQq
PihxdWFkKTsKK30KKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFk
LmgKaW5kZXggMzUxMDRkY2Y1YjNjN2U5ZjJmODU1YjVmMjIwNWE2MWMxYjZiOWM3YS4uYzZjODcw
MTBjNGU4ZTdkODAyMzU5Y2M1MzgzODE0MTkyMDM5MGZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaApAQCAtMjYsMTAgKzI2LDI0IEBACiAjaWZuZGVmIENDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWRfaAogI2RlZmluZSBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKIAot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgorI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci10eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvckNoZWNrZXJib2Fy
ZFF1YWQgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisK
K2NsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gY3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOworCisgICAgc3RhdGlj
IGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdR
dWFkKik7Citwcml2YXRlOgorICAgIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWM0M2U0ZGEwMDgxMjIyNmRiZmVkOWU1ZWUwZmMxMDlkYTQzMzNmZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NEZWJ1Z0JvcmRlckRyYXdR
dWFkPiBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xv
ciwgaW50IHdpZHRoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yLCB3aWR0aCkpOworfQorCitD
Q0RlYnVnQm9yZGVyRHJhd1F1YWQ6OkNDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tD
b2xvciBjb2xvciwgaW50IHdpZHRoKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUs
IENDRHJhd1F1YWQ6OkRlYnVnQm9yZGVyLCBxdWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3Ip
CisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIG1fcXVhZE9wYXF1ZSA9IGZhbHNlOworICAg
IGlmIChTa0NvbG9yR2V0QShtX2NvbG9yKSA8IDI1NSkKKyAgICAgICAgbV9uZWVkc0JsZW5kaW5n
ID0gdHJ1ZTsKK30KKworY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBDQ0RlYnVnQm9yZGVy
RHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFT
U0VSVChxdWFkLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OkRlYnVnQm9yZGVyKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKj4ocXVhZCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKaW5kZXggYTcyYzI3
NDE3NmEwNmEzNjQyZjIxNjgwY2E1NDcyNTBhMjJhMWE2NC4uM2E1MzkwMDQ3ZGYwYmEwYjgzN2Q5
OWE3MmU5M2NiNjRmNGUzNWFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmgKQEAgLTI2LDEwICsyNiwzMSBAQAogI2lmbmRlZiBDQ0RlYnVnQm9yZGVyRHJhd1F1YWRf
aAogI2RlZmluZSBDQ0RlYnVnQm9yZGVyRHJhd1F1YWRfaAogCi0jaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaD4KKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5j
bHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yRGVidWdCb3Jk
ZXJRdWFkIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisK
K2NsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lk
dGgpOworCisgICAgU2tDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH07Cisg
ICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorCisgICAgc3RhdGljIGNv
bnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQq
KTsKK3ByaXZhdGU6CisgICAgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIFNrQ29sb3IsIGludCB3aWR0aCk7CisKKyAgICBTa0Nv
bG9yIG1fY29sb3I7CisgICAgaW50IG1fd2lkdGg7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA2OTlkOGI2
NzdkMDZlMjRlOTUyOGY4Zjc3MzdkYTEyZDczYjdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAg
LTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiY2Mv
Q0NEcmF3UXVhZC5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgImNjL0NDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
aCIKKyNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IgorI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNs
dWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
Q0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIE1hdGVyaWFsIG1hdGVyaWFsLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6
IG1fc2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZSkKKyAgICAsIG1fc2hhcmVkUXVhZFN0
YXRlSWQoc2hhcmVkUXVhZFN0YXRlLT5pZCkKKyAgICAsIG1fbWF0ZXJpYWwobWF0ZXJpYWwpCisg
ICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQorICAgICwgbV9xdWFkVmlzaWJsZVJlY3QocXVhZFJl
Y3QpCisgICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKKyAgICAsIG1fbmVlZHNCbGVuZGluZyhmYWxz
ZSkKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOworICAgIEFTU0VSVChtX21hdGVy
aWFsICE9IEludmFsaWQpOworfQorCitJbnRSZWN0IENDRHJhd1F1YWQ6Om9wYXF1ZVJlY3QoKSBj
b25zdAoreworICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEludFJlY3Qo
KTsKKyAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPm9wYXF1ZSAmJiBtX3F1YWRPcGFxdWUpCisg
ICAgICAgIHJldHVybiBtX3F1YWRSZWN0OworICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7Cit9CisK
K3ZvaWQgQ0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KGNvbnN0IEludFJlY3QmIHF1YWRW
aXNpYmxlUmVjdCkKK3sKKyAgICBJbnRSZWN0IGludGVyc2VjdGlvbiA9IHF1YWRWaXNpYmxlUmVj
dDsKKyAgICBpbnRlcnNlY3Rpb24uaW50ZXJzZWN0KG1fcXVhZFJlY3QpOworICAgIG1fcXVhZFZp
c2libGVSZWN0ID0gaW50ZXJzZWN0aW9uOworfQorCit1bnNpZ25lZCBDQ0RyYXdRdWFkOjpzaXpl
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1hdGVyaWFsKCkpIHsKKyAgICBjYXNlIENoZWNrZXJi
b2FyZDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ0NoZWNrZXJib2FyZERyYXdRdWFkKTsKKyAg
ICBjYXNlIERlYnVnQm9yZGVyOgorICAgICAgICByZXR1cm4gc2l6ZW9mKENDRGVidWdCb3JkZXJE
cmF3UXVhZCk7CisgICAgY2FzZSBJT1N1cmZhY2VDb250ZW50OgorICAgICAgICByZXR1cm4gc2l6
ZW9mKENDSU9TdXJmYWNlRHJhd1F1YWQpOworICAgIGNhc2UgVGV4dHVyZUNvbnRlbnQ6CisgICAg
ICAgIHJldHVybiBzaXplb2YoQ0NUZXh0dXJlRHJhd1F1YWQpOworICAgIGNhc2UgU29saWRDb2xv
cjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ1NvbGlkQ29sb3JEcmF3UXVhZCk7CisgICAgY2Fz
ZSBUaWxlZENvbnRlbnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoQ0NUaWxlRHJhd1F1YWQpOwor
ICAgIGNhc2UgU3RyZWFtVmlkZW9Db250ZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKENDU3Ry
ZWFtVmlkZW9EcmF3UXVhZCk7CisgICAgY2FzZSBSZW5kZXJQYXNzOgorICAgICAgICByZXR1cm4g
c2l6ZW9mKENDUmVuZGVyUGFzc0RyYXdRdWFkKTsKKyAgICBjYXNlIFlVVlZpZGVvQ29udGVudDoK
KyAgICAgICAgcmV0dXJuIHNpemVvZihDQ1lVVlZpZGVvRHJhd1F1YWQpOworICAgIGNhc2UgSW52
YWxpZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQ1JBU0goKTsKKyAgICByZXR1cm4g
c2l6ZW9mKENDRHJhd1F1YWQpOworfQorCit2b2lkIENDRHJhd1F1YWQ6OnNldFNoYXJlZFF1YWRT
dGF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQoreworICAgIG1f
c2hhcmVkUXVhZFN0YXRlID0gc2hhcmVkUXVhZFN0YXRlOworICAgIG1fc2hhcmVkUXVhZFN0YXRl
SWQgPSBzaGFyZWRRdWFkU3RhdGUtPmlkOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXgg
NWY1MzZhODVhNDA1NmYwNmJhODA0N2FhYzRmN2NmM2JhMWM5Nzk0Ni4uZmFmNmI0Zjk0NzI1ODMz
N2ZmNzVjYWMxNDQwYjE3ZWFjMzRlNDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtMjYsMTAg
KzI2LDkxIEBACiAjaWZuZGVmIENDRHJhd1F1YWRfaAogI2RlZmluZSBDQ0RyYXdRdWFkX2gKIAot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgorI2luY2x1ZGUgImNjL0NDU2hh
cmVkUXVhZFN0YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yUXVhZCBDQ0RyYXdRdWFkOworCisvLyBXQVJOSU5HISBBbGwgQ0NYWVpEcmF3
UXVhZCBjbGFzc2VzIG11c3QgcmVtYWluIFBPRHMgKHBsYWluIG9sZCBkYXRhKS4KKy8vIFRoZXkg
YXJlIGludGVuZGVkIHRvIGJlICJzZXJpYWxpemFibGUiIGJ5IGNvcHlpbmcgdGhlaXIgcmF3IGJ5
dGVzLCBzbyB0aGV5CisvLyBtdXN0IG5vdCBjb250YWluIGFueSBub24tYml0LWNvcHlhYmxlIG1l
bWJlciB2YXJpYWJsZXMhCisvLworLy8gRnVydGhlcm1vcmUsIHRoZSBjbGFzcyBtZW1iZXJzIG5l
ZWQgdG8gYmUgcGFja2VkIHNvIHRoZXkgYXJlIGFsaWduZWQKKy8vIHByb3Blcmx5IGFuZCBkb24n
dCBoYXZlIHBhZGRpbmdzL2dhcHMsIG90aGVyd2lzZSBtZW1vcnkgY2hlY2sgdG9vbHMKKy8vIGxp
a2UgVmFsZ3JpbmQgd2lsbCBjb21wbGFpbiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Fn
ZSB3aGVuCisvLyB0cmFuc2ZlcnJpbmcgdGhlc2UgY2xhc3NlcyBvdmVyIHRoZSB3aXJlLgorI3By
YWdtYSBwYWNrKHB1c2gsIDQpCisKKy8vIENDRHJhd1F1YWQgaXMgYSBiYWcgb2YgZGF0YSB1c2Vk
IGZvciBkcmF3aW5nIGEgcXVhZC4gQmVjYXVzZSBkaWZmZXJlbnQKKy8vIG1hdGVyaWFscyBuZWVk
IGRpZmZlcmVudCBiaXRzIG9mIHBlci1xdWFkIGRhdGEgdG8gcmVuZGVyLCBjbGFzc2VzIHRoYXQg
ZGVyaXZlCisvLyBmcm9tIENDRHJhd1F1YWQgc3RvcmUgYWRkaXRpb25hbCBkYXRhIGluIHRoZWly
IGRlcml2ZWQgaW5zdGFuY2UuIFRoZSBNYXRlcmlhbAorLy8gZW51bSBpcyB1c2VkIHRvICJzYWZl
bHkiIGRvd25jYXN0IHRvIHRoZSBkZXJpdmVkIGNsYXNzLgorY2xhc3MgQ0NEcmF3UXVhZCB7Citw
dWJsaWM6CisgICAgZW51bSBNYXRlcmlhbCB7CisgICAgICAgIEludmFsaWQsCisgICAgICAgIENo
ZWNrZXJib2FyZCwKKyAgICAgICAgRGVidWdCb3JkZXIsCisgICAgICAgIElPU3VyZmFjZUNvbnRl
bnQsCisgICAgICAgIFJlbmRlclBhc3MsCisgICAgICAgIFRleHR1cmVDb250ZW50LAorICAgICAg
ICBTb2xpZENvbG9yLAorICAgICAgICBUaWxlZENvbnRlbnQsCisgICAgICAgIFlVVlZpZGVvQ29u
dGVudCwKKyAgICAgICAgU3RyZWFtVmlkZW9Db250ZW50LAorICAgIH07CisKKyAgICBJbnRSZWN0
IHF1YWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkUmVjdDsgfQorICAgIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybTsgfQorICAgIEludFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnZpc2libGVD
b250ZW50UmVjdDsgfQorICAgIEludFJlY3Qgc2Npc3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+c2Npc3NvclJlY3Q7IH0KKyAgICBmbG9hdCBvcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHk7IH0KKyAgICAvLyBGb3IgdGhl
IHB1cnBvc2VzIG9mIGJsZW5kaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
cXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0OworICAgIGJv
b2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCAhb3Bh
cXVlUmVjdCgpLmNvbnRhaW5zKG1fcXVhZFZpc2libGVSZWN0KTsgfQorICAgIGJvb2wgaXNMYXll
ckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5p
c0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KKworICAgIC8vIEFsbG93cyBjaGFuZ2luZyB0
aGUgcmVjdCB0aGF0IGdldHMgZHJhd24gdG8gbWFrZSBpdCBzbWFsbGVyLiBQYXJhbWV0ZXIgcGFz
c2VkCisgICAgLy8gaW4gd2lsbCBiZSBjbGlwcGVkIHRvIHF1YWRSZWN0KCkuCisgICAgdm9pZCBz
ZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIEludFJlY3QgcXVhZFZpc2li
bGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KKyAgICBib29sIGlz
RGVidWdRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcjsgfQor
CisgICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsOyB9CisK
KyAgICAvLyBSZXR1cm5zIHRyYW5zZmVyIHNpemUgb2YgdGhpcyBvYmplY3QgYmFzZWQgb24gdGhl
IGRlcml2ZWQgY2xhc3MgKGJ5CisgICAgLy8gbG9va2luZyBhdCB0aGUgbWF0ZXJpYWwgdHlwZSku
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OworCisgICAgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlOyB9
CisgICAgaW50IHNoYXJlZFF1YWRTdGF0ZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGVJZDsgfQorICAgIHZvaWQgc2V0U2hhcmVkUXVhZFN0YXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKik7CisKK3Byb3RlY3RlZDoKKyAgICBDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgTWF0ZXJpYWwsIGNvbnN0IEludFJlY3QmKTsKKworICAgIC8vIFN0b3JlcyBzdGF0
ZSBjb21tb24gdG8gYSBsYXJnZSBidW5kbGUgb2YgcXVhZHM7IGtlcHQgc2VwYXJhdGUgZm9yIG1l
bW9yeQorICAgIC8vIGVmZmljaWVuY3kuIFRoZXJlIGlzIHNwZWNpYWwgdHJlYXRtZW50IHRvIHJl
Y29uc3RydWN0IHRoZXNlIHBvaW50ZXJzCisgICAgLy8gZHVyaW5nIHNlcmlhbGl6YXRpb24uCisg
ICAgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIG1fc2hhcmVkUXVhZFN0YXRlOworICAgIGludCBt
X3NoYXJlZFF1YWRTdGF0ZUlkOworCisgICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKKyAgICBJbnRS
ZWN0IG1fcXVhZFJlY3Q7CisgICAgSW50UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKKworICAgIC8v
IEJ5IGRlZmF1bHQsIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Ig
bm90IHRoaXMgcXVhZCBpcworICAgIC8vIG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZl
ZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB3aXRoIHRoZXNlCisgICAgLy8gdmFyaWFibGVzLgorICAg
IGJvb2wgbV9xdWFkT3BhcXVlOworICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisgICAgLy8g
QmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJl
ZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0
aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4K
KyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwu
Y3BwCmluZGV4IGY5ZmQ5OWZmMzY4YzZkMGFlZTA0ODA2MDQ3MDZhMDY3Yjk3ZjFhZWMuLmNmZTg5
MTA2MGZhZTFiMzgwOGQzYWMxZjdkZWVhYWZmMzVmZWZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwCkBAIC0zNywxMiArMzcsMTAgQEAKICNp
bmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGludCBpZCkKQEAgLTk1LDcgKzkzLDcgQEAg
dm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWQKICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSA9IHRy
dWU7CiAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAxKTsKICAgICBib29sIGZsaXBwZWQg
PSBmYWxzZTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0dXJlLT5pZCgpLCBwcmVt
dWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faHVk
VGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKIH0K
IAogdm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVh
ZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTU1MWI4MmQzZmNhMWQyY2Q1MGI1YzZmZmU3ZjIyZjYwYjQ0ODNi
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFk
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ0lPU3VyZmFjZURyYXdR
dWFkPiBDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCwgT3JpZW50YXRpb24g
b3JpZW50YXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0lPU3VyZmFjZURyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGlvU3VyZmFjZVNpemUsIGlvU3VyZmFjZVRl
eHR1cmVJZCwgb3JpZW50YXRpb24pKTsKK30KKworQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Q0NJT1N1
cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5z
aWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkLCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICA6
IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpJT1N1cmZhY2VDb250ZW50
LCBxdWFkUmVjdCkKKyAgICAsIG1faW9TdXJmYWNlU2l6ZShpb1N1cmZhY2VTaXplKQorICAgICwg
bV9pb1N1cmZhY2VUZXh0dXJlSWQoaW9TdXJmYWNlVGV4dHVyZUlkKQorICAgICwgbV9vcmllbnRh
dGlvbihvcmllbnRhdGlvbikKK3sKK30KKworY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogQ0NJ
T1N1cmZhY2VEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqIHF1YWQpCit7
CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29u
dGVudCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQq
PihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oCmluZGV4
IDc3ZDMyNmNiZDBkODg0YmNkMGIyZmMwODcxMjAwYmJiNmI3NzdjMzUuLjdjZTdjMDZjYTRmNzEw
OWRlZDgzNWVjMWJkMGQ0YmJhNTM0MDA5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURy
YXdRdWFkLmgKQEAgLTI2LDEwICsyNiwzOCBAQAogI2lmbmRlZiBDQ0lPU3VyZmFjZURyYXdRdWFk
X2gKICNkZWZpbmUgQ0NJT1N1cmZhY2VEcmF3UXVhZF9oCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaD4KKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVh
ZCBDQ0lPU3VyZmFjZURyYXdRdWFkOworCisjcHJhZ21hIHBhY2socHVzaCwgNCkKKworY2xhc3Mg
Q0NJT1N1cmZhY2VEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKK3B1YmxpYzoKKyAgICBl
bnVtIE9yaWVudGF0aW9uIHsKKyAgICAgIEZsaXBwZWQsCisgICAgICBVbmZsaXBwZWQKKyAgICB9
OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gY3JlYXRlKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmIGlv
U3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCwgT3JpZW50YXRpb24pOwor
CisgICAgSW50U2l6ZSBpb1N1cmZhY2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pb1N1cmZhY2VT
aXplOyB9CisgICAgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9pb1N1cmZhY2VUZXh0dXJlSWQ7IH0KKyAgICBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKworICAgIHN0YXRpYyBjb25zdCBDQ0lPU3Vy
ZmFjZURyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCopOworcHJpdmF0ZToK
KyAgICBDQ0lPU3VyZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFj
ZVRleHR1cmVJZCwgT3JpZW50YXRpb24pOworCisgICAgSW50U2l6ZSBtX2lvU3VyZmFjZVNpemU7
CisgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VUZXh0dXJlSWQ7CisgICAgT3JpZW50YXRpb24gbV9v
cmllbnRhdGlvbjsKK307CisKKyNwcmFnbWEgcGFjayhwb3ApCisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5oCmluZGV4IDdmMDgwMjc4MjdkZDhkZTU1Yzc4NWMyMDBlNTc1MDVhMmNh
YTBkOTguLmU2N2I0NDY4ZDY4YjEyODdmNGIyOTA5NWE0YjY1Njc4NDM0NTkxZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
Q1F1YWRDdWxsZXIoKSB7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBh
ZGRlZCB0byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxl
ZC4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJDb21wb3Np
dG9yUXVhZD4gcGFzc0RyYXdRdWFkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5k
KFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKSBPVkVSUklERTsKIAogICAgIGJv
b2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgeyByZXR1cm4gbV9oYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oCmlu
ZGV4IGYyYTljNjJhZTA2YTcxNzVjYWFhYTYzNDliNTQ5MTYxMjdkYTU4NGMuLjRhZTZmMjM4YTQ1
ZmNhMGYxNjk5Y2FiYWMyM2ZhNDMwMGU5OWFhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgKQEAgLTI4
LDE4ICsyOCwxNiBAQAogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNwYWNl
IFdlYktpdCB7Ci1jbGFzcyBXZWJDb21wb3NpdG9yUXVhZDsKLX0KLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDQ0RyYXdRdWFkOworCiBjbGFzcyBDQ1F1YWRTaW5rIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DQ1F1YWRTaW5rKCkgeyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBl
bnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPFdlYktp
dDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NEcmF3UXVhZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpID0gMDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCA2MGUzNTM5
NmE0MjNkMTc5M2VlZmE3MGIwOTg3ZWRhMzM3YzNhYzNkLi5jYTA4MTExOTY0ZDhmOGEwNTlhMjM0
Yjc0YjdiZTZjNDc1NmMyYjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuY3BwCkBAIC0yNywxNyArMjcsMTUgQEAKIAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmgiCiAKLXVzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5k
ZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNl
TGFzdEZyYW1lKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCByZW5kZXJQYXNzSWQsIGlzUmVwbGljYSwgbWFza1Jlc291cmNlSWQsIGNvbnRlbnRz
Q2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQ
YXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFz
a1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
KQotICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9y
UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5k
ZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNh
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQorICAgIDogQ0NEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwg
bV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNh
KQogICAgICwgbV9tYXNrUmVzb3VyY2VJZChtYXNrUmVzb3VyY2VJZCkKQEAgLTQ2LDkgKzQ0LDkg
QEAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktp
dDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWQKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQgPiAw
KTsKIH0KIAotY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIENDUmVuZGVyUGFzc0RyYXdRdWFk
OjptYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK2Nv
bnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KGNvbnN0IENDRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFs
KCkgPT0gV2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBhc3MpOworICAgIEFTU0VSVChxdWFkLT5t
YXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlJlbmRlclBhc3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KHF1YWQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCA5NGQ0MTRmN2JhZjFlMmQ0ZWE5NTliZTMz
NzhkMTFkOWUzN2E3OWNmLi4yOWIzM2ExZjZhZGU4NjIyMWRmMzQ4OTgxZDcyMTc2MjkwNzQ2YTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI3LDI3ICsyNywy
NyBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKICNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NS
ZW5kZXJQYXNzOwogCi1jbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JRdWFkIHsKK2NsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVibGlj
IENDRHJhd1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzc0RyYXdR
dWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IElu
dFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0No
YW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBpbnQgcmVuZGVyUGFzc0lkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KICAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNSZXBsaWNhOyB9CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1h
c2tSZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrUmVzb3VyY2VJZDsgfQogICAgIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZTsgfQogCi0gICAgc3RhdGljIGNvbnN0
IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZCopOworICAgIHN0YXRpYyBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogbWF0
ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKIHByaXZhdGU6Ci0gICAgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29u
c3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBi
b29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJj
ZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAg
ICBpbnQgbV9yZW5kZXJQYXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVh
ZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2hhcmVkUXVhZFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTc5ZDRhNWNkYmVmZmM3ZWFlOWJl
N2U1ZjM3ZGQ4NmJhZmM0OWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1No
YXJlZFF1YWRTdGF0ZS5oIgorCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NNYXRoVXRpbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDU2hhcmVkUXVhZFN0YXRl
OjpDQ1NoYXJlZFF1YWRTdGF0ZSgpCisgICAgOiBpZCgwKQorICAgICwgb3BhY2l0eSgwKQorICAg
ICwgb3BhcXVlKGZhbHNlKQoreworfQorCitQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGludCBpZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRl
bnRSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBv
cGFxdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0ZShpZCwg
cXVhZFRyYW5zZm9ybSwgdmlzaWJsZUNvbnRlbnRSZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwg
b3BhcXVlKSk7Cit9CisKK0NDU2hhcmVkUXVhZFN0YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZShpbnQg
aWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3Nv
clJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorICAgIDogaWQoaWQpCisgICAgLCBx
dWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCisgICAgLCB2aXNpYmxlQ29udGVudFJlY3Qodmlz
aWJsZUNvbnRlbnRSZWN0KQorICAgICwgc2Npc3NvclJlY3Qoc2Npc3NvclJlY3QpCisgICAgLCBv
cGFjaXR5KG9wYWNpdHkpCisgICAgLCBvcGFxdWUob3BhcXVlKQoreworfQorCitib29sIENDU2hh
cmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKK3sKKyAgICAv
LyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmlj
ZXMuCisgICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRl
Z2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgorICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOwor
ICAgIEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtLCBG
bG9hdFF1YWQoSW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpKSwgY2xpcHBlZCk7CisgICAgcmV0
dXJuICFjbGlwcGVkICYmIHF1YWQuaXNSZWN0aWxpbmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3go
KS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5oCmluZGV4IDc5MDM2ZGRkNGQ4NmVkMzU5YTIxOTdlZjg1MjQzYTNhMmEzYzU0NDMu
LmU1NTVlMWJjMWI3YTBlYmVhYjBmYTA3YjQ3N2M5MjcxYmZiM2UyMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaApAQCAtMjYsMTAgKzI2LDMyIEBACiAjaWZuZGVmIENDU2hhcmVk
UXVhZFN0YXRlX2gKICNkZWZpbmUgQ0NTaGFyZWRRdWFkU3RhdGVfaAogCi0jaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaD4KKyNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3RhdGU7CisKK2NsYXNz
IENDU2hhcmVkUXVhZFN0YXRlIHsKK3B1YmxpYzoKKyAgICBpbnQgaWQ7CisKKyAgICAvLyBUcmFu
c2Zvcm1zIGZyb20gcXVhZCdzIG9yaWdpbmFsIGNvbnRlbnQgc3BhY2UgdG8gaXRzIHRhcmdldCBj
b250ZW50IHNwYWNlLgorICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRy
YW5zZm9ybTsKKyAgICAvLyBUaGlzIHJlY3QgbGl2ZXMgaW4gdGhlIGNvbnRlbnQgc3BhY2UgZm9y
IHRoZSBxdWFkJ3Mgb3JpZ2luYXRpbmcgbGF5ZXIuCisgICAgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3Q7CisgICAgLy8gVGhpcyByZWN0IGxpdmVzIGluIHRoZSBxdWFkJ3MgdGFyZ2V0IGNvbnRl
bnQgc3BhY2UuCisgICAgSW50UmVjdCBzY2lzc29yUmVjdDsKKyAgICBmbG9hdCBvcGFjaXR5Owor
ICAgIGJvb2wgb3BhcXVlOworCisgICAgQ0NTaGFyZWRRdWFkU3RhdGUoKTsKKworICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGUoaW50IGlkLCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBv
cGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUoaW50IGlkLCBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBm
bG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJ
bnRSZWN0KCkgY29uc3Q7Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjJiMzJiYzBhOGQyNzc1M2ZkMWYwZTMx
NTJlZTQzZTliMTU4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU29s
aWRDb2xvckRyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxD
Q1NvbGlkQ29sb3JEcmF3UXVhZD4gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgU2tDb2xvciBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU29saWRDb2xv
ckRyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGNvbG9yKSk7Cit9CisKK0NDU29s
aWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBj
b2xvcikKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpTb2xp
ZENvbG9yLCBxdWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29sb3IpCit7CisgICAgaWYgKFNrQ29s
b3JHZXRBKG1fY29sb3IpIDwgMjU1KQorICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAg
ICBlbHNlCisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OworfQorCitjb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCogQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25z
dCBDQ0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IEND
RHJhd1F1YWQ6OlNvbGlkQ29sb3IpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuaAppbmRleCBiNmMwZWUwMjVlYTNhZTJiYmNhYWQ3Mzg1ZmNlYmJjM2NhNjlm
OTYyLi41OWJjOGZlYTFiOTA1MmMxYjY2NDFlZTFiZTExYTNiOWViMTQ0NzNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgKQEAgLTI2LDEwICsyNiwzMCBAQAogI2lmbmRl
ZiBDQ1NvbGlkQ29sb3JEcmF3UXVhZF9oCiAjZGVmaW5lIENDU29saWRDb2xvckRyYXdRdWFkX2gK
IAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuaD4KKyNpbmNs
dWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKKworI3By
YWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIENDU29saWRDb2xvckRyYXdRdWFkIDogcHVibGlj
IENDRHJhd1F1YWQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU29saWRDb2xv
ckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgU2tDb2xvcik7CisKKyAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xv
cjsgfTsKKworICAgIHN0YXRpYyBjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogbWF0ZXJpYWxD
YXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKK3ByaXZhdGU6CisgICAgQ0NTb2xpZENvbG9yRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvcik7CisK
KyAgICBTa0NvbG9yIG1fY29sb3I7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmRkM2ZmMmYxMjVjYzMzZGMxNzcyNzY5MGFkNzk5MWEwOGVjNjlkNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3Ry
ZWFtVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NTdHJlYW1WaWRlb0RyYXdRdWFkPiBDQ1N0
cmVhbVZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBx
dWFkUmVjdCwgdGV4dHVyZUlkLCBtYXRyaXgpKTsKK30KKworQ0NTdHJlYW1WaWRlb0RyYXdRdWFk
OjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQorICAgIDogQ0NEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlN0cmVhbVZpZGVvQ29udGVudCwgcXVh
ZFJlY3QpCisgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisgICAgLCBtX21hdHJpeChtYXRy
aXgpCit7Cit9CisKK2NvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBBU1NF
UlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqPihxdWFk
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaAppbmRleCBh
MTg5MDYxMWE0NDFkMmRiOGEyNDY3NmQzOGY4NWQzODRlZGVkZDE1Li5jOTM1ZGI3YWZlMDE4MmUw
MzU4NjgzMWU2NzE3ZWU5MmYxOWE4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZpZGVv
RHJhd1F1YWQuaApAQCAtMjYsMTAgKzI2LDMyIEBACiAjaWZuZGVmIENDU3RyZWFtVmlkZW9EcmF3
UXVhZF9oCiAjZGVmaW5lIENDU3RyZWFtVmlkZW9EcmF3UXVhZF9oCiAKLSNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgorI2luY2x1ZGUgImNjL0NDRHJhd1F1
YWQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkIENDU3RyZWFtVmlkZW9EcmF3UXVh
ZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIENDU3RyZWFtVmlkZW9EcmF3UXVh
ZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1N0cmVhbVZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKKworICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KKworICAgIHN0YXRpYyBj
b25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFk
Kik7Citwcml2YXRlOgorICAgIENDU3RyZWFtVmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlk
OworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7Cit9OworCisj
cHJhZ21hIHBhY2socG9wKQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJh
d1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkMGI5OWQ4MDdiZjhiN2U0ZWY3M2RiZjM3MzllYjJlNDZl
Yjg5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFk
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1RleHR1cmVEcmF3UXVh
ZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJ
ZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29s
IGZsaXBwZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZXNvdXJjZUlkLCBwcmVtdWx0aXBsaWVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCkpOworfQorCitDQ1RleHR1cmVEcmF3UXVhZDo6Q0NUZXh0dXJlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQorICAgIDogQ0NEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVj
dCkKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV9wcmVtdWx0aXBsaWVk
QWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQorICAgICwgbV91dlJlY3QodXZSZWN0KQorICAgICwg
bV9mbGlwcGVkKGZsaXBwZWQpCit7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlRHJhd1F1YWQ6OnNldE5l
ZWRzQmxlbmRpbmcoKQoreworICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Cit9CisKK2NvbnN0
IENDVGV4dHVyZURyYXdRdWFkKiBDQ1RleHR1cmVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IENDRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1YWQtPm1hdGVyaWFsKCkgPT0gQ0NE
cmF3UXVhZDo6VGV4dHVyZUNvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBD
Q1RleHR1cmVEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJh
d1F1YWQuaAppbmRleCAyOGMzZDkxMzJmYjU4ZDhkYTEyMGNjZjljMTU5YzE3MzQ1MTBkODI5Li4y
MGQ1YzlkMTI0ZjlmMjkwZGQwN2RkMmMyZTM5Njc5ZWZlY2FmMWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZURyYXdRdWFkLmgKQEAgLTI2LDEwICsyNiwzNyBAQAogI2lmbmRlZiBDQ1RleHR1cmVE
cmF3UXVhZF9oCiAjZGVmaW5lIENDVGV4dHVyZURyYXdRdWFkX2gKIAotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZCBDQ1RleHR1cmVEcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNz
IENDVGV4dHVyZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVt
dWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOwor
ICAgIEZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQorCisgICAg
dW5zaWduZWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VJZDsgfQorICAg
IGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGll
ZEFscGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9
CisKKyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCBDQ1Rl
eHR1cmVEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKK3ByaXZhdGU6
CisgICAgQ0NUZXh0dXJlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNv
bnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOworCisgICAgdW5zaWduZWQgbV9y
ZXNvdXJjZUlkOworICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CisgICAgRmxvYXRSZWN0
IG1fdXZSZWN0OworICAgIGJvb2wgbV9mbGlwcGVkOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkK
KwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NWQzMTc4NzkxNzViZDMxZjI2MzkxMTg3OGY3ZDYxMGYxODFmMzU0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJh
d1F1YWQuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0
IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0Mz
RGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFB
LCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUs
IHF1YWRSZWN0LCBvcGFxdWVSZWN0LCByZXNvdXJjZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdl
QUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKK30KKworQ0NUaWxlRHJhd1F1YWQ6OkND
VGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25l
ZCByZXNvdXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX3Jlc291cmNlSWQocmVzb3Vy
Y2VJZCkKKyAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJlT2Zmc2V0KQorICAgICwgbV90ZXh0
dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKKyAgICAsIG1fdGV4dHVyZUZpbHRlcih0ZXh0dXJlRmlsdGVy
KQorICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dpenpsZUNvbnRlbnRzKQorICAgICwgbV9sZWZ0
RWRnZUFBKGxlZnRFZGdlQUEpCisgICAgLCBtX3RvcEVkZ2VBQSh0b3BFZGdlQUEpCisgICAgLCBt
X3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQorICAgICwgbV9ib3R0b21FZGdlQUEoYm90dG9tRWRn
ZUFBKQoreworICAgIGlmIChpc0FudGlhbGlhc2VkKCkpCisgICAgICAgIG1fbmVlZHNCbGVuZGlu
ZyA9IHRydWU7CisgICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsKK30KKworY29uc3QgQ0NU
aWxlRHJhd1F1YWQqIENDVGlsZURyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVh
ZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RpbGVEcmF3UXVh
ZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAppbmRleCBkNTMwZjRh
NDhmMjk0OWViM2FjYjI4YTYzYzJiNzZjYWE3YTk0NWU5Li43OTQzYmM5ZjA2MmNmOGZjODhiYTVi
OGQxMDNmYjQ1ZGY4MjYzMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKQEAgLTI2LDEw
ICsyNiw1MCBAQAogI2lmbmRlZiBDQ1RpbGVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGlsZURyYXdR
dWFkX2gKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaD4KKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUg
IkludFNpemUuaCIKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6OldlYkNv
bXBvc2l0b3JUaWxlUXVhZCBDQ1RpbGVEcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQp
CisKK2NsYXNzIENDVGlsZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZz
ZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJv
b2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29s
IHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisKKyAgICB1bnNpZ25lZCByZXNvdXJj
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9CisgICAgSW50UG9pbnQgdGV4dHVy
ZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQorICAgIEludFNpemUg
dGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9CisgICAgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9CisgICAg
Ym9vbCBzd2l6emxlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX3N3aXp6bGVDb250ZW50czsg
fQorCisgICAgYm9vbCBsZWZ0RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0RWRnZUFBOyB9
CisgICAgYm9vbCB0b3BFZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX3RvcEVkZ2VBQTsgfQorICAg
IGJvb2wgcmlnaHRFZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0RWRnZUFBOyB9CisgICAg
Ym9vbCBib3R0b21FZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUVkZ2VBQTsgfQorCisg
ICAgYm9vbCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRv
cEVkZ2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KKworICAgIHN0
YXRpYyBjb25zdCBDQ1RpbGVEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQq
KTsKK3ByaXZhdGU6CisgICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIHVu
c2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOworCisgICAgdW5zaWduZWQgbV9yZXNvdXJjZUlkOworICAg
IEludFBvaW50IG1fdGV4dHVyZU9mZnNldDsKKyAgICBJbnRTaXplIG1fdGV4dHVyZVNpemU7Cisg
ICAgR0MzRGludCBtX3RleHR1cmVGaWx0ZXI7CisgICAgYm9vbCBtX3N3aXp6bGVDb250ZW50czsK
KyAgICBib29sIG1fbGVmdEVkZ2VBQTsKKyAgICBib29sIG1fdG9wRWRnZUFBOworICAgIGJvb2wg
bV9yaWdodEVkZ2VBQTsKKyAgICBib29sIG1fYm90dG9tRWRnZUFBOworfTsKKworI3ByYWdtYSBw
YWNrKHBvcCkKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQu
Y3BwCmluZGV4IDQzZjJlMmY2ZjU3OGU4ZDQ4ZTg2NjE5OTBhYWI3N2EzNzg2MTM0MmYuLjI3YTY2
ZjM3NDcyMTY1YTI4MjkyNzIxYzJkYzY1ODJkN2I2YjVmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9EcmF3UXVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZ
VVZWaWRlb0RyYXdRdWFkLmNwcApAQCAtMjcsMjYgKzI3LDI0IEBACiAKICNpbmNsdWRlICJjYy9D
Q1lVVlZpZGVvRHJhd1F1YWQuaCIKIAotdXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDWVVWVmlkZW9EcmF3UXVhZD4g
Q0NZVVZWaWRlb0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgdlBsYW5lKQorUGFzc093blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IENDWVVWVmlk
ZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFu
ZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NZVVZWaWRlb0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QsIHlQbGFuZSwgdVBsYW5lLCB2UGxhbmUpKTsKIH0KIAotQ0NZVVZWaWRlb0RyYXdRdWFk
OjpDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgdlBsYW5lKQotICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJD
b21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50LCBxdWFkUmVjdCkKK0NDWVVWVmlkZW9EcmF3
UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUm
IHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQorICAg
IDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OllVVlZpZGVvQ29udGVu
dCwgcXVhZFJlY3QpCiAgICAgLCBtX3lQbGFuZSh5UGxhbmUpCiAgICAgLCBtX3VQbGFuZSh1UGxh
bmUpCiAgICAgLCBtX3ZQbGFuZSh2UGxhbmUpCiB7CiB9CiAKLWNvbnN0IENDWVVWVmlkZW9EcmF3
UXVhZCogQ0NZVVZWaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZCogcXVhZCkKK2NvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogQ0NZVVZWaWRl
b0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKIHsKLSAgICBB
U1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250
ZW50KTsKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpZVVZWaWRl
b0NvbnRlbnQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1lVVlZpZGVvRHJhd1F1
YWQqPihxdWFkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaAppbmRleCA2
Njg0YWQ4OTc4NDE1MDdhYjMxYmZjMzNhMDVkYjE4NmJlZDAwZDhmLi40NTZhOTZmNDg3MzFkZmJm
NmFlNTIxM2QxODY0NTE5NGI4NjE2N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1
YWQuaApAQCAtMjYsMjQgKzI2LDI0IEBACiAjaWZuZGVmIENDWVVWVmlkZW9EcmF3UXVhZF9oCiAj
ZGVmaW5lIENDWVVWVmlkZW9EcmF3UXVhZF9oCiAKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9yUXVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIFdlYktpdDo6
V2ViQ29tcG9zaXRvclF1YWQgeworY2xhc3MgQ0NZVVZWaWRlb0RyYXdRdWFkIDogcHVibGljIEND
RHJhd1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDWVVWVmlkZW9EcmF3UXVhZCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZVVZWaWRlb0RyYXdRdWFkPiBjcmVh
dGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDWVVWVmlk
ZW9EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgeVBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV95UGxhbmU7IH0KICAgICBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUoKSBjb25zdCB7IHJldHVybiBtX3VQ
bGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdlBsYW5lOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgQ0NZVVZWaWRl
b0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCop
OworICAgIHN0YXRpYyBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25z
dCBDQ0RyYXdRdWFkKik7CiBwcml2YXRlOgotICAgIENDWVVWVmlkZW9EcmF3UXVhZChjb25zdCBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1l
UGxhbmUmIHZQbGFuZSk7CisgICAgQ0NZVVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxh
bmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSBtX3lQbGFuZTsKICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lIG1fdVBsYW5lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156243</attachid>
            <date>2012-08-02 19:32:45 -0700</date>
            <delta_ts>2012-08-03 09:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93062-20120802193226.patch</filename>
            <type>text/plain</type>
            <size>130058</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4OTA4ZjA4YWRhYTU3
OGFjNjBjNjJhZWJmMWM4MzdjY2Q0ZTA2YzgwLi42MmJhZGFhZDQzNjhjYjY0MWM1NjU1OTRlNDRi
YmFhOGE5MjM4MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wOC0wMiAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBNb3ZlIHViZXJjb21wIHF1YWRzIGJhY2sgaW50byBDQworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIEdURk8gaXMgYWxtb3N0IGRvbmUsIHdl
IGNhbiBtb3ZlIGJhY2sgdGhlIHF1YWQgdHlwZXMKKyAgICAgICAgdG8gQ0MgYW5kIHBpY2tsZSB0
aGVtIHRoZXJlLiAgVGhpcyBwYXRjaCBtb3ZlcyBldmVyeXRoaW5nIGJhY2sKKyAgICAgICAgdG8g
d2hlcmUgaXQgd2FzIGJlZm9yZSBhbmQgY2hhbmdlcyB0eXBlcyBsaWtlIFdlYlJlY3QgdG8gSW50
UmVjdC4KKworICAgICAgICBBcyBhIGJvbnVzLCBJIGFsc28gYWRkZWQgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQgYW5kIENDWVVWVmlkZW9EcmF3UXVhZAorICAgICAgICAod2hpY2ggaGFkIGJlZW4gbGVm
dCBpbiB0aGUgQ0MgZmlsZXMpIHRvIENDRHJhd1F1YWQ6OnNpemUoKSwgc28gbm93CisgICAgICAg
IGV2ZXJ5IHF1YWQgdHlwZSBpcyByZWFkeSBmb3Igc2VyaWFsaXphdGlvbi4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVh
bVZpZGVvUXVhZC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclRpbGVRdWFkLmg6IFJlbW92ZWQuCisKIDIwMTItMDgtMDEgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFdyYXAg
c2hhcmVkIGNvbnRleHQgZ2V0dGVycyBpbiBXZWJLaXQgQVBJIGFuZCBhdm9pZCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRCB1c2UgaW4gY29tcG9zaXRvciBpbnRlcm5hbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjZjcxNWU1NDRlNWEwMjEzOTc1NjMyNGZhMTdjZGIxNjhhMzUwMDI5Li45MzNlOTIxMGRmMDJk
NmQwNjMxZDNkYzc3ZWEzNGNkYTJiYTFiOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBA
CisyMDEyLTA4LTAyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBbY2hyb21pdW1dIE1vdmUgdWJlcmNvbXAgcXVhZHMgYmFjayBpbnRvIENDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2UgR1RGTyBpcyBh
bG1vc3QgZG9uZSwgd2UgY2FuIG1vdmUgYmFjayB0aGUgcXVhZCB0eXBlcworICAgICAgICB0byBD
QyBhbmQgcGlja2xlIHRoZW0gdGhlcmUuICBUaGlzIHBhdGNoIG1vdmVzIGV2ZXJ5dGhpbmcgYmFj
aworICAgICAgICB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIGFuZCBjaGFuZ2VzIHR5cGVzIGxpa2Ug
V2ViUmVjdCB0byBJbnRSZWN0LgorCisgICAgICAgIEFzIGEgYm9udXMsIEkgYWxzbyBhZGRlZCBD
Q1JlbmRlclBhc3NEcmF3UXVhZCBhbmQgQ0NZVVZWaWRlb0RyYXdRdWFkCisgICAgICAgICh3aGlj
aCBoYWQgYmVlbiBsZWZ0IGluIHRoZSBDQyBmaWxlcykgdG8gQ0NEcmF3UXVhZDo6c2l6ZSgpLCBz
byBub3cKKyAgICAgICAgZXZlcnkgcXVhZCB0eXBlIGlzIHJlYWR5IGZvciBzZXJpYWxpemF0aW9u
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8tb3AgcmVmYWN0b3JpbmcpLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRTaW5rLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3
UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RlYnVnQm9yZGVyRHJhd1F1
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OndpZHRoKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdR
dWFkOjpDQ0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6Om9wYXF1ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NEcmF3UXVhZDo6c2V0U2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NEcmF3UXVhZDo6c2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3
UXVhZDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5k
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFZpc2libGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OmlzRGVidWdRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6Om1hdGVyaWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1
YWQ6OnNoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpzaGFy
ZWRRdWFkU3RhdGVJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJ
T1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNl
RHJhd1F1YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1
cmZhY2VEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENDSU9TdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1
cmZhY2VEcmF3UXVhZDo6aW9TdXJmYWNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3Vy
ZmFjZURyYXdRdWFkOjppb1N1cmZhY2VUZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NJ
T1N1cmZhY2VEcmF3UXVhZDo6b3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoQ0NRdWFkQ3VsbGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZFNpbmspOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmg6
CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaGFyZWRRdWFk
U3RhdGU6OmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xp
ZENvbG9yUXVhZC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENv
bG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U29saWRDb2xvckRyYXdRdWFkOjptYXRlcmlhbENhc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU29saWRDb2xvckRyYXdRdWFkOjpjb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1N0cmVhbVZpZGVvRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1N0cmVh
bVZpZGVvRHJhd1F1YWQ6OkNDU3RyZWFtVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDU3RyZWFtVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdR
dWFkOjpDQ1RleHR1cmVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3
UXVhZDo6c2V0TmVlZHNCbGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q1RleHR1cmVEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVEcmF3UXVhZDo6
dXZSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdRdWFkOjpyZXNvdXJjZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZURyYXdRdWFkOjpwcmVtdWx0aXBsaWVkQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlRHJhd1F1YWQ6OmZsaXBwZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVE
cmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NUaWxl
RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnJlc291cmNlSWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnRleHR1cmVPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OnRleHR1cmVTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGlsZURyYXdRdWFkOjp0ZXh0dXJlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGlsZURyYXdRdWFkOjpzd2l6emxlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlRHJhd1F1YWQ6OmxlZnRFZGdlQUEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1
YWQ6OnRvcEVkZ2VBQSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6cmlnaHRF
ZGdlQUEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OmJvdHRvbUVkZ2VBQSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6aXNBbnRpYWxpYXNlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaDoK
KyAgICAgICAgKENDWVVWVmlkZW9EcmF3UXVhZCk6CisKIDIwMTItMDgtMDIgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2NyaXB0cyBpbiBmb3JtYWN0aW9uIHNo
b3VsZCBiZSBzdHJpcHBlZCB1cG9uIHBhc3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGMzYWY5
NjM5YWI0NmUyNTVkYjBmMzAyN2JkYjgwOTMxYTBjOTEyNzQuLjgxYmUxMTA3YTM1ZmUxZWIzM2Zk
YTIxYzkxZTQ2MTMyZTJkOWI5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC00NCwxNSArNDQs
NiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21tb24uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmgnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaCcsCi0gICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCcsCi0gICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50LmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRR
dWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTAyYmJmZmE0MzI2MjdmOTRm
MjVlYzVlZGEyOTJmODk5ZDFiMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9y
Q2hlY2tlcmJvYXJkUXVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWRfaAotI2RlZmluZSBXZWJDb21w
b3NpdG9yQ2hlY2tlcmJvYXJkUXVhZF9oCi0KLSNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5o
IgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA0KQot
Ci1jbGFzcyBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCA6IHB1YmxpYyBXZWJDb21wb3Np
dG9yUXVhZCB7Ci1wdWJsaWM6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGlj
IFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQ+IGNyZWF0ZShjb25zdCBX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwot
I2VuZGlmCi0KLSAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQq
IG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOwotcHJpdmF0ZToKLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZChj
b25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwotI2VuZGlmCi19OwotCi0jcHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yRGVi
dWdCb3JkZXJRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JEZWJ1Z0JvcmRlclF1YWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZj
ZmQ0YjY1YzBmOWYwYTQ2MDY4YWY2MDg4NmFmMTYzNDg2MmEwNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWRfaAot
I2RlZmluZSBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkX2gKLQotI2luY2x1ZGUgIlNrQ29s
b3IuaCIKLSNpbmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgotI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA0KQotCi1jbGFzcyBXZWJDb21wb3NpdG9y
RGVidWdCb3JkZXJRdWFkIDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKLXB1YmxpYzoKLSNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3Np
dG9yRGVidWdCb3JkZXJRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwotI2Vu
ZGlmCi0KLSAgICBTa0NvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfTsKLSAg
ICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0KLSAgICBzdGF0aWMgY29u
c3QgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNv
bXBvc2l0b3JRdWFkKik7Ci1wcml2YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOwot
I2VuZGlmCi0KLSAgICBTa0NvbG9yIG1fY29sb3I7Ci0gICAgaW50IG1fd2lkdGg7Ci19OwotCi0j
cHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODUwZTA2Mjg1OWM2MDY2MGNhMmU0MmVhZTIy
YTI3MDQ5OTk0ZWZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklPU3VyZmFj
ZVF1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkX2gKLSNkZWZpbmUgV2ViQ29tcG9zaXRvcklPU3VyZmFj
ZVF1YWRfaAotCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvclF1YWQuaCIKLSNpbmNsdWRlICJXZWJT
aXplLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA0KQotCi1jbGFzcyBXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7Ci1wdWJsaWM6Ci0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgZW51bSBPcmllbnRhdGlvbiB7Ci0gICAgICBGbGlwcGVkLAotICAg
ICAgVW5mbGlwcGVkCi0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JJT1N1cmZhY2VRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpb1N1
cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQsIE9yaWVudGF0aW9uKTsKLQot
ICAgIFdlYkNvcmU6OkludFNpemUgaW9TdXJmYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW9T
dXJmYWNlU2l6ZTsgfQotICAgIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsg
cmV0dXJuIG1faW9TdXJmYWNlVGV4dHVyZUlkOyB9Ci0gICAgT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0jZW5kaWYKLQotICAgIHN0YXRp
YyBjb25zdCBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdl
YkNvbXBvc2l0b3JRdWFkKik7Ci1wcml2YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
ICAgIFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVyZUlkLCBPcmllbnRhdGlv
bik7Ci0jZW5kaWYKLQotICAgIFdlYlNpemUgbV9pb1N1cmZhY2VTaXplOwotICAgIHVuc2lnbmVk
IG1faW9TdXJmYWNlVGV4dHVyZUlkOwotICAgIE9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci19
OwotCi0jcHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ODAyN2ZjNTU3ZGM2YjE0MTE2NjY4MWVhY2RmNGJiODZmZWU1NmVi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDb21wb3NpdG9yUXVhZF9oCi0j
ZGVmaW5lIFdlYkNvbXBvc2l0b3JRdWFkX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLS8vIFdBUk5JTkchIEFsbCBXZWJDb21wb3NpdG9yWFlaUXVhZCBjbGFzc2VzIG11c3Qg
cmVtYWluIFBPRHMgKHBsYWluIG9sZCBkYXRhKS4KLS8vIFRoZXkgYXJlIGludGVuZGVkIHRvIGJl
ICJzZXJpYWxpemFibGUiIGJ5IGNvcHlpbmcgdGhlaXIgcmF3IGJ5dGVzLCBzbyB0aGV5Ci0vLyBt
dXN0IG5vdCBjb250YWluIGFueSBub24tYml0LWNvcHlhYmxlIG1lbWJlciB2YXJpYWJsZXMhCi0v
LwotLy8gRnVydGhlcm1vcmUsIHRoZSBjbGFzcyBtZW1iZXJzIG5lZWQgdG8gYmUgcGFja2VkIHNv
IHRoZXkgYXJlIGFsaWduZWQKLS8vIHByb3Blcmx5IGFuZCBkb24ndCBoYXZlIHBhZGRpbmdzL2dh
cHMsIG90aGVyd2lzZSBtZW1vcnkgY2hlY2sgdG9vbHMKLS8vIGxpa2UgVmFsZ3JpbmQgd2lsbCBj
b21wbGFpbiBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB3aGVuCi0vLyB0cmFuc2Zl
cnJpbmcgdGhlc2UgY2xhc3NlcyBvdmVyIHRoZSB3aXJlLgotI3ByYWdtYSBwYWNrKHB1c2gsIDQp
Ci0KLS8vIFdlYkNvbXBvc2l0b3JRdWFkIGlzIGEgYmFnIG9mIGRhdGEgdXNlZCBmb3IgZHJhd2lu
ZyBhIHF1YWQuIEJlY2F1c2UgZGlmZmVyZW50Ci0vLyBtYXRlcmlhbHMgbmVlZCBkaWZmZXJlbnQg
Yml0cyBvZiBwZXItcXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0aGF0IGRlcml2ZQotLy8g
ZnJvbSBXZWJDb21wb3NpdG9yUXVhZCBzdG9yZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlaXIgZGVy
aXZlZCBpbnN0YW5jZS4gVGhlIE1hdGVyaWFsCi0vLyBlbnVtIGlzIHVzZWQgdG8gInNhZmVseSIg
ZG93bmNhc3QgdG8gdGhlIGRlcml2ZWQgY2xhc3MuCi1jbGFzcyBXZWJDb21wb3NpdG9yUXVhZCB7
Ci1wdWJsaWM6Ci0gICAgZW51bSBNYXRlcmlhbCB7Ci0gICAgICAgIEludmFsaWQsCi0gICAgICAg
IENoZWNrZXJib2FyZCwKLSAgICAgICAgRGVidWdCb3JkZXIsCi0gICAgICAgIElPU3VyZmFjZUNv
bnRlbnQsCi0gICAgICAgIFJlbmRlclBhc3MsCi0gICAgICAgIFRleHR1cmVDb250ZW50LAotICAg
ICAgICBTb2xpZENvbG9yLAotICAgICAgICBUaWxlZENvbnRlbnQsCi0gICAgICAgIFlVVlZpZGVv
Q29udGVudCwKLSAgICAgICAgU3RyZWFtVmlkZW9Db250ZW50LAotICAgIH07Ci0KLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHF1YWRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9xdWFkUmVjdDsgfQotICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBxdWFkVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPnF1YWRU
cmFuc2Zvcm07IH0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT52aXNpYmxlQ29udGVudFJlY3Q7IH0KLSAg
ICBXZWJDb3JlOjpJbnRSZWN0IHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRR
dWFkU3RhdGUtPnNjaXNzb3JSZWN0OyB9Ci0gICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5OyB9Ci0gICAgLy8gRm9yIHRoZSBwdXJwb3Nl
cyBvZiBibGVuZGluZywgd2hhdCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJl
IG9wYXF1ZT8KLSAgICBXZWJDb3JlOjpJbnRSZWN0IG9wYXF1ZVJlY3QoKSBjb25zdDsKLSAgICBi
b29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQmxlbmRpbmcgfHwgIW9w
YXF1ZVJlY3QoKS5jb250YWlucyhtX3F1YWRWaXNpYmxlUmVjdCk7IH0KLSAgICBib29sIGlzTGF5
ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpOyB9Ci0KLSAgICAvLyBBbGxvd3MgY2hhbmdpbmcg
dGhlIHJlY3QgdGhhdCBnZXRzIGRyYXduIHRvIG1ha2UgaXQgc21hbGxlci4gUGFyYW1ldGVyIHBh
c3NlZAotICAgIC8vIGluIHdpbGwgYmUgY2xpcHBlZCB0byBxdWFkUmVjdCgpLgotICAgIHZvaWQg
c2V0UXVhZFZpc2libGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICBXZWJDb3Jl
OjpJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFZpc2libGVS
ZWN0OyB9Ci0gICAgYm9vbCBpc0RlYnVnUXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWwg
PT0gRGVidWdCb3JkZXI7IH0KLSNlbmRpZgotCi0gICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25z
dCB7IHJldHVybiBtX21hdGVyaWFsOyB9Ci0KLSAgICAvLyBSZXR1cm5zIHRyYW5zZmVyIHNpemUg
b2YgdGhpcyBvYmplY3QgYmFzZWQgb24gdGhlIGRlcml2ZWQgY2xhc3MgKGJ5Ci0gICAgLy8gbG9v
a2luZyBhdCB0aGUgbWF0ZXJpYWwgdHlwZSkuCi0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0Owot
Ci0gICAgY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGU7IH0KLSAgICBpbnQgc2hhcmVkUXVh
ZFN0YXRlSWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZUlkOyB9Ci0gICAgdm9p
ZCBzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSop
OwotCi1wcm90ZWN0ZWQ6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQ29tcG9z
aXRvclF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0jZW5kaWYKLQotICAgIC8vIFN0b3JlcyBzdGF0ZSBj
b21tb24gdG8gYSBsYXJnZSBidW5kbGUgb2YgcXVhZHM7IGtlcHQgc2VwYXJhdGUgZm9yIG1lbW9y
eQotICAgIC8vIGVmZmljaWVuY3kuIFRoZXJlIGlzIHNwZWNpYWwgdHJlYXRtZW50IHRvIHJlY29u
c3RydWN0IHRoZXNlIHBvaW50ZXJzCi0gICAgLy8gZHVyaW5nIHNlcmlhbGl6YXRpb24uCi0gICAg
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogbV9zaGFyZWRRdWFkU3RhdGU7Ci0g
ICAgaW50IG1fc2hhcmVkUXVhZFN0YXRlSWQ7Ci0KLSAgICBNYXRlcmlhbCBtX21hdGVyaWFsOwot
ICAgIFdlYlJlY3QgbV9xdWFkUmVjdDsKLSAgICBXZWJSZWN0IG1fcXVhZFZpc2libGVSZWN0Owot
Ci0gICAgLy8gQnkgZGVmYXVsdCwgdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGRldGVybWluZXMgd2hl
dGhlciBvciBub3QgdGhpcyBxdWFkIGlzCi0gICAgLy8gb3BhcXVlIG9yIG5lZWRzIGJsZW5kaW5n
LiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHdpdGggdGhlc2UKLSAgICAvLyB2YXJpYWJs
ZXMuCi0gICAgYm9vbCBtX3F1YWRPcGFxdWU7Ci0gICAgYm9vbCBtX25lZWRzQmxlbmRpbmc7Ci0K
LSAgICAvLyBCZSBkZWZhdWx0LCB0aGlzIHJlY3QgaXMgZW1wdHkuIEl0IGlzIHVzZWQgd2hlbiB0
aGUgc2hhcmVkIHF1YWQgc3RhdGUgYW5kIGFib3ZlCi0gICAgLy8gdmFyaWFibGVzIGRldGVybWlu
ZSB0aGF0IHRoZSBxdWFkIGlzIG5vdCBmdWxseSBvcGFxdWUgYnV0IG1heSBiZSBwYXJ0aWFsbHkg
b3BhcXVlLgotICAgIFdlYlJlY3QgbV9vcGFxdWVSZWN0OwotfTsKLQotI3ByYWdtYSBwYWNrKHBv
cCkKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA2M2Q0MDczZWQ2ZGEzZjVlOGFjOGM3YTc1NzJjZmZhNDUzNjUw
MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDb21wb3Np
dG9yU2hhcmVkUXVhZFN0YXRlX2gKLSNkZWZpbmUgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2Vu
ZGlmCi0jaW5jbHVkZSAiV2ViUmVjdC5oIgotI2luY2x1ZGUgIldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlIHsKLXB1YmxpYzoKLSAgICBpbnQgaWQ7Ci0KLSAgICAvLyBUcmFuc2Zvcm1zIGZy
b20gcXVhZCdzIG9yaWdpbmFsIGNvbnRlbnQgc3BhY2UgdG8gaXRzIHRhcmdldCBjb250ZW50IHNw
YWNlLgotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm07Ci0gICAgLy8g
VGhpcyByZWN0IGxpdmVzIGluIHRoZSBjb250ZW50IHNwYWNlIGZvciB0aGUgcXVhZCdzIG9yaWdp
bmF0aW5nIGxheWVyLgotICAgIFdlYlJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIC8vIFRo
aXMgcmVjdCBsaXZlcyBpbiB0aGUgcXVhZCdzIHRhcmdldCBjb250ZW50IHNwYWNlLgotICAgIFdl
YlJlY3Qgc2Npc3NvclJlY3Q7Ci0gICAgZmxvYXQgb3BhY2l0eTsKLSAgICBib29sIG9wYXF1ZTsK
LQotICAgIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUoKTsKLQotI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGU+IGNyZWF0ZShpbnQgaWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9w
YXF1ZSk7Ci0gICAgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZShpbnQgaWQsIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjaXNzb3JS
ZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Ci0gICAgYm9vbCBpc0xheWVyQXhpc0Fs
aWduZWRJbnRSZWN0KCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTb2xpZENv
bG9yUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMxMjEwZTM1
MjBlODdjODc5YTZlNjQzYjk5YTY1MGU1NTliMGVjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkX2gKLSNkZWZpbmUg
V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkX2gKLQotI2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNp
bmNsdWRlICJXZWJDb21wb3NpdG9yUXVhZC5oIgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA0KQotCi1jbGFzcyBXZWJDb21wb3NpdG9yU29saWRDb2xv
clF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgewotcHVibGljOgotI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTb2xpZENv
bG9yUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgU2tDb2xvcik7Ci0jZW5kaWYKLQotICAgIFNrQ29sb3IgY29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9OwotCi0gICAgc3RhdGljIGNvbnN0IFdlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JR
dWFkKik7Ci1wcml2YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkNvbXBv
c2l0b3JTb2xpZENvbG9yUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNrQ29sb3IpOwotI2VuZGlmCi0KLSAgICBTa0NvbG9y
IG1fY29sb3I7Ci19OwotCi0jcHJhZ21hIHBhY2socG9wKQotCi19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3RyZWFt
VmlkZW9RdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZhM2Nl
YWI0YjZjMzNmMTNkNTM5Y2JmZmRiYWY4MTExMWZhMzU4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWRfaAotI2Rl
ZmluZSBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkX2gKLQotI2luY2x1ZGUgIldlYkNvbXBv
c2l0b3JRdWFkLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDQpCi0K
LWNsYXNzIFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRv
clF1YWQgewotcHVibGljOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2ln
bmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSNlbmRpZgot
Ci0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0K
LSAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KCkgY29uc3QgeyByZXR1
cm4gbV9tYXRyaXg7IH0KLQotICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlk
ZW9RdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZhdGU6
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVv
UXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggbV9tYXRyaXg7Ci19OwotCi0jcHJhZ21hIHBhY2socG9wKQotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiODg2OTU2NWMxNmEyMmE5N2YyMmVhYzY1M2RjOTBkYWIzNWZjNzcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZF9oCi0jZGVm
aW5lIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZF9oCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgotI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgiCi0jaW5jbHVkZSAiV2ViRmxvYXRSZWN0
LmgiCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDQp
Ci0KLWNsYXNzIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9y
UXVhZCB7Ci1wdWJsaWM6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCBy
ZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHV2UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9Ci0jZW5kaWYKLQotICAgIHVuc2lnbmVkIHJl
c291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7IH0KLSAgICBib29sIHByZW11
bHRpcGxpZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsgfQot
ICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQotCi0gICAgdm9p
ZCBzZXROZWVkc0JsZW5kaW5nKCk7Ci0KLSAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKLXByaXZh
dGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRB
bHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7Ci0j
ZW5kaWYKLQotICAgIHVuc2lnbmVkIG1fcmVzb3VyY2VJZDsKLSAgICBib29sIG1fcHJlbXVsdGlw
bGllZEFscGhhOwotICAgIFdlYkZsb2F0UmVjdCBtX3V2UmVjdDsKLSAgICBib29sIG1fZmxpcHBl
ZDsKLX07Ci0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwZGU3MjMzMTBhNjg5NTdhNzk5YzJlYjk3
YTgwMTU0YWIxYmI3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVh
ZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29t
cG9zaXRvclRpbGVRdWFkX2gKLSNkZWZpbmUgV2ViQ29tcG9zaXRvclRpbGVRdWFkX2gKLQotI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JRdWFkLmgi
Ci0jaW5jbHVkZSAiV2ViUG9pbnQuaCIKLSNpbmNsdWRlICJXZWJTaXplLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNwcmFnbWEgcGFjayhw
dXNoLCA0KQotCi1jbGFzcyBXZWJDb21wb3NpdG9yVGlsZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9z
aXRvclF1YWQgewotcHVibGljOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSk7Ci0KLSAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgdGV4dHVyZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQotICAgIFdlYkNvcmU6Oklu
dFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9Ci0gICAg
R0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9
Ci0gICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX3N3aXp6bGVDb250
ZW50czsgfQotCi0gICAgYm9vbCBsZWZ0RWRnZUFBKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0RWRn
ZUFBOyB9Ci0gICAgYm9vbCB0b3BFZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX3RvcEVkZ2VBQTsg
fQotICAgIGJvb2wgcmlnaHRFZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0RWRnZUFBOyB9
Ci0gICAgYm9vbCBib3R0b21FZGdlQUEoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUVkZ2VBQTsg
fQotCi0gICAgYm9vbCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgp
IHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KLSNl
bmRpZgotCi0gICAgc3RhdGljIGNvbnN0IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCogbWF0ZXJpYWxD
YXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKik7Ci1wcml2YXRlOgotI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgICBXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKTsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgbV9yZXNvdXJjZUlkOwot
ICAgIFdlYlBvaW50IG1fdGV4dHVyZU9mZnNldDsKLSAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7
Ci0gICAgR0MzRGludCBtX3RleHR1cmVGaWx0ZXI7Ci0gICAgYm9vbCBtX3N3aXp6bGVDb250ZW50
czsKLSAgICBib29sIG1fbGVmdEVkZ2VBQTsKLSAgICBib29sIG1fdG9wRWRnZUFBOwotICAgIGJv
b2wgbV9yaWdodEVkZ2VBQTsKLSAgICBib29sIG1fYm90dG9tRWRnZUFBOwotfTsKLQotI3ByYWdt
YSBwYWNrKHBvcCkKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjZmRkZmM3MmE2
NTAxM2NiYjhjYjUzODk0NzEzOTNhOGUwOWI3ZDRmLi5hMTNjNGVlNDFhMTc4OTZkMmZiMDc5ZGEx
OGJkZmJlOGUyNDA3NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MjEyLDE1ICs4MjEyLDYgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQXVkaW9CdXMuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmNwcCcsCi0gICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFk
LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9ySU9TdXJmYWNlUXVhZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViQ29tcG9zaXRvclF1YWQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuY3BwJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVh
ZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclN0cmVhbVZpZGVvUXVhZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkRhdGEuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKQEAg
LTgzMTAsMTQgKzgzMDEsMTcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFk
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Zv
bnRBdGxhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRm9udEF0bGFzLmgnLApAQCAtODMyOCw2ICs4MzIyLDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmgnLApAQCAtODM5NywxNSArODM5MiwxOSBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVh
ZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRl
b0RyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5o
JywKQEAgLTg0MTUsNiArODQxNCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRUYXNrLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvckNoZWNrZXJib2Fy
ZFF1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzBkYjJiODQyNWJiZGYz
MDk0MThkOWIwOTcyOGY5NmVlOGJiOWE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQ+IFdlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkOjpjcmVhdGUoY29uc3Qg
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JD
aGVja2VyYm9hcmRRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QpKTsKLX0KLQotV2ViQ29t
cG9zaXRvckNoZWNrZXJib2FyZFF1YWQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkKGNv
bnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QpCi0gICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3Rh
dGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQotewotfQotCi1j
b25zdCBXZWJDb21wb3NpdG9yQ2hlY2tlcmJvYXJkUXVhZCogV2ViQ29tcG9zaXRvckNoZWNrZXJi
b2FyZFF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKLXsK
LSAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6Q2hlY2tl
cmJvYXJkKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvckNoZWNr
ZXJib2FyZFF1YWQqPihxdWFkKTsKLX0KLQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3Np
dG9yRGVidWdCb3JkZXJRdWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc5
ZjZjMTRmZWE3OGFjOTcyMzE0MjJjZTM0NjdkMjljNDYwZmRlNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJDb21w
b3NpdG9yRGVidWdCb3JkZXJRdWFkPiBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkOjpjcmVh
dGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvciwgaW50IHdpZHRoKQotewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgpKTsKLX0KLQotV2ViQ29tcG9zaXRvckRl
YnVnQm9yZGVyUXVhZDo6V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZChjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBTa0NvbG9yIGNvbG9yLCBpbnQgd2lkdGgpCi0gICAgOiBXZWJDb21wb3NpdG9yUXVh
ZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0JvcmRlciwgcXVhZFJl
Y3QpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV93aWR0aCh3aWR0aCkKLXsKLSAgICBt
X3F1YWRPcGFxdWUgPSBmYWxzZTsKLSAgICBpZiAoU2tDb2xvckdldEEobV9jb2xvcikgPCAyNTUp
Ci0gICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci19Ci0KLWNvbnN0IFdlYkNvbXBvc2l0
b3JEZWJ1Z0JvcmRlclF1YWQqIFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQ6Om1hdGVyaWFs
Q2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKLXsKLSAgICBBU1NFUlQocXVhZC0+
bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6RGVidWdCb3JkZXIpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yRGVidWdCb3JkZXJRdWFkKj4ocXVhZCk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNWVhYmQwNTk5MjM0MjU2YTcxMjMxNTFhY2Jh
ZWRhNzQwNWFhMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
SU9TdXJmYWNlUXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotUGFzc093blB0cjxXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZD4gV2ViQ29tcG9z
aXRvcklPU3VyZmFjZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRT
aXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQsIE9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRv
cklPU3VyZmFjZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgaW9TdXJmYWNlU2l6ZSwg
aW9TdXJmYWNlVGV4dHVyZUlkLCBvcmllbnRhdGlvbikpOwotfQotCi1XZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZDo6V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlVGV4dHVy
ZUlkLCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKLSAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OklPU3VyZmFjZUNvbnRlbnQsIHF1YWRS
ZWN0KQotICAgICwgbV9pb1N1cmZhY2VTaXplKGlvU3VyZmFjZVNpemUpCi0gICAgLCBtX2lvU3Vy
ZmFjZVRleHR1cmVJZChpb1N1cmZhY2VUZXh0dXJlSWQpCi0gICAgLCBtX29yaWVudGF0aW9uKG9y
aWVudGF0aW9uKQotewotfQotCi1jb25zdCBXZWJDb21wb3NpdG9ySU9TdXJmYWNlUXVhZCogV2Vi
Q29tcG9zaXRvcklPU3VyZmFjZVF1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9y
UXVhZCogcXVhZCkKLXsKLSAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3Np
dG9yUXVhZDo6SU9TdXJmYWNlQ29udGVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFdlYkNvbXBvc2l0b3JJT1N1cmZhY2VRdWFkKj4ocXVhZCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclF1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yUXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNjE3Y2Q4NDMz
MWYzM2NiN2M3YTEzMmZlYzI5Yzg3YTQ5ODg2MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJDb21wb3NpdG9yUXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvclF1YWQuaD4KLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9z
aXRvckRlYnVnQm9yZGVyUXVhZC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9ySU9T
dXJmYWNlUXVhZC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1
YWQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViQ29tcG9zaXRvclF1YWQ6OldlYkNvbXBvc2l0
b3JRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgTWF0ZXJpYWwgbWF0ZXJpYWwsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQotICAgIDogbV9z
aGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlKQotICAgICwgbV9zaGFyZWRRdWFkU3RhdGVJ
ZChzaGFyZWRRdWFkU3RhdGUtPmlkKQotICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKLSAgICAs
IG1fcXVhZFJlY3QocXVhZFJlY3QpCi0gICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkK
LSAgICAsIG1fcXVhZE9wYXF1ZSh0cnVlKQotICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQot
ewotICAgIEFTU0VSVChtX3NoYXJlZFF1YWRTdGF0ZSk7Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwg
IT0gSW52YWxpZCk7Ci19Ci0KLUludFJlY3QgV2ViQ29tcG9zaXRvclF1YWQ6Om9wYXF1ZVJlY3Qo
KSBjb25zdAotewotICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIEludFJl
Y3QoKTsKLSAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPm9wYXF1ZSAmJiBtX3F1YWRPcGFxdWUp
Ci0gICAgICAgIHJldHVybiBtX3F1YWRSZWN0OwotICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7Ci19
Ci0KLXZvaWQgV2ViQ29tcG9zaXRvclF1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRS
ZWN0JiBxdWFkVmlzaWJsZVJlY3QpCi17Ci0gICAgSW50UmVjdCBpbnRlcnNlY3Rpb24gPSBxdWFk
VmlzaWJsZVJlY3Q7Ci0gICAgaW50ZXJzZWN0aW9uLmludGVyc2VjdChtX3F1YWRSZWN0KTsKLSAg
ICBtX3F1YWRWaXNpYmxlUmVjdCA9IGludGVyc2VjdGlvbjsKLX0KLQotdW5zaWduZWQgV2ViQ29t
cG9zaXRvclF1YWQ6OnNpemUoKSBjb25zdAotewotICAgIHN3aXRjaCAobWF0ZXJpYWwoKSkgewot
ICAgIGNhc2UgQ2hlY2tlcmJvYXJkOgotICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0
b3JDaGVja2VyYm9hcmRRdWFkKTsKLSAgICBjYXNlIERlYnVnQm9yZGVyOgotICAgICAgICByZXR1
cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JEZWJ1Z0JvcmRlclF1YWQpOwotICAgIGNhc2UgSU9TdXJm
YWNlQ29udGVudDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9ySU9TdXJmYWNl
UXVhZCk7Ci0gICAgY2FzZSBUZXh0dXJlQ29udGVudDoKLSAgICAgICAgcmV0dXJuIHNpemVvZihX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQpOwotICAgIGNhc2UgU29saWRDb2xvcjoKLSAgICAgICAg
cmV0dXJuIHNpemVvZihXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQpOwotICAgIGNhc2UgVGls
ZWRDb250ZW50OgotICAgICAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JUaWxlUXVhZCk7
Ci0gICAgY2FzZSBTdHJlYW1WaWRlb0NvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBzaXplb2YoV2Vi
Q29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZCk7Ci0gICAgY2FzZSBJbnZhbGlkOgotICAgIGNhc2Ug
UmVuZGVyUGFzczoKLSAgICBjYXNlIFlVVlZpZGVvQ29udGVudDoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgQ1JBU0goKTsKLSAgICByZXR1cm4gc2l6ZW9mKFdlYkNvbXBvc2l0b3JRdWFk
KTsKLX0KLQotdm9pZCBXZWJDb21wb3NpdG9yUXVhZDo6c2V0U2hhcmVkUXVhZFN0YXRlKGNvbnN0
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKLXsKLSAgICBt
X3NoYXJlZFF1YWRTdGF0ZSA9IHNoYXJlZFF1YWRTdGF0ZTsKLSAgICBtX3NoYXJlZFF1YWRTdGF0
ZUlkID0gc2hhcmVkUXVhZFN0YXRlLT5pZDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDkxZWYzZWFmOWFjYzViMTA1MWY0NDIxMjBiZjJkNGY4ZGUwZTAyMGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZS5oPgotCi0jaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgotCi11c2luZyBXZWJD
b3JlOjpGbG9hdFF1YWQ7Ci11c2luZyBXZWJDb3JlOjpJbnRSZWN0OwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZTo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSgpCi0gICAgOiBpZCgwKQotICAgICwgb3BhY2l0eSgwKQotICAgICwgb3BhcXVl
KGZhbHNlKQotewotfQotCi1QYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU+
IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpbnQgaWQsIGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxl
Q29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBi
b29sIG9wYXF1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUoaWQsIHF1YWRUcmFuc2Zvcm0sIHZpc2libGVDb250ZW50UmVjdCwgc2Npc3Nv
clJlY3QsIG9wYWNpdHksIG9wYXF1ZSkpOwotfQotCi1XZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlOjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKGludCBpZCwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250
ZW50UmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wg
b3BhcXVlKQotICAgIDogaWQoaWQpCi0gICAgLCBxdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0p
Ci0gICAgLCB2aXNpYmxlQ29udGVudFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KQotICAgICwgc2Np
c3NvclJlY3Qoc2Npc3NvclJlY3QpCi0gICAgLCBvcGFjaXR5KG9wYWNpdHkpCi0gICAgLCBvcGFx
dWUob3BhcXVlKQotewotfQotCi1ib29sIFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGU6Omlz
TGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdAotewotICAgIC8vIE5vdGU6IHRoaXMgZG9l
c24ndCBjb25zaWRlciB3aW5kb3cgb3IgcHJvamVjdGlvbiBtYXRyaWNlcy4KLSAgICAvLyBBc3N1
bWUgdGhhdCB0aGV5J3JlIG9ydGhvbm9ybWFsIGFuZCBoYXZlIGludGVnZXIgc2NhbGVzIGFuZCB0
cmFuc2xhdGlvbnMuCi0gICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7Ci0gICAgRmxvYXRRdWFkIHF1
YWQgPSBXZWJDb3JlOjpDQ01hdGhVdGlsOjptYXBRdWFkKHF1YWRUcmFuc2Zvcm0sIEZsb2F0UXVh
ZChJbnRSZWN0KHZpc2libGVDb250ZW50UmVjdCkpLCBjbGlwcGVkKTsKLSAgICByZXR1cm4gIWNs
aXBwZWQgJiYgcXVhZC5pc1JlY3RpbGluZWFyKCkgJiYgcXVhZC5ib3VuZGluZ0JveCgpLmlzRXhw
cmVzc2libGVBc0ludFJlY3QoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODI0NThj
NzIyNjUwZjBhZDI4ZWU5ZGE1MTU3YzQ4MjU3NjRhYzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJDb21wb3NpdG9y
U29saWRDb2xvclF1YWQ+IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6Y3JlYXRlKGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvcikKLXsKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBjb2xvcikpOwotfQotCi1XZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQ6OldlYkNv
bXBvc2l0b3JTb2xpZENvbG9yUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29s
b3IgY29sb3IpCi0gICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNv
bXBvc2l0b3JRdWFkOjpTb2xpZENvbG9yLCBxdWFkUmVjdCkKLSAgICAsIG1fY29sb3IoY29sb3Ip
Ci17Ci0gICAgaWYgKFNrQ29sb3JHZXRBKG1fY29sb3IpIDwgMjU1KQotICAgICAgICBtX3F1YWRP
cGFxdWUgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0
OwotfQotCi1jb25zdCBXZWJDb21wb3NpdG9yU29saWRDb2xvclF1YWQqIFdlYkNvbXBvc2l0b3JT
b2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFk
KQotewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpT
b2xpZENvbG9yKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvclNv
bGlkQ29sb3JRdWFkKj4ocXVhZCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JTdHJlYW1WaWRlb1F1YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTI1
N2FhZjdlMzQxZGVjNDg0N2UwMzFmZGUwMDBkMjNmNjFjYjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVk
ZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYkNvbXBv
c2l0b3JTdHJlYW1WaWRlb1F1YWQ+IFdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OmNyZWF0
ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJD
b21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1
cmVJZCwgbWF0cml4KSk7Ci19Ci0KLVdlYkNvbXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQ6OldlYkNv
bXBvc2l0b3JTdHJlYW1WaWRlb1F1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4
dHVyZUlkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotICAgIDogV2Vi
Q29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFt
VmlkZW9Db250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAg
ICAsIG1fbWF0cml4KG1hdHJpeCkKLXsKLX0KLQotY29uc3QgV2ViQ29tcG9zaXRvclN0cmVhbVZp
ZGVvUXVhZCogV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0
IFdlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQotewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgp
ID09IFdlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRlb0NvbnRlbnQpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFkKj4ocXVhZCk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGQwYjY3YTQxYTIzZjZhMWI4MDgyNjk2NjMwMjBmMDdmZDYw
NTkyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBh
c3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkPiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNl
SWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJlc291cmNlSWQsIHByZW11bHRpcGxp
ZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7Ci19Ci0KLVdlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
dW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0
UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCi0gICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFy
ZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudCwgcXVhZFJlY3Qp
Ci0gICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAsIG1fcHJlbXVsdGlwbGllZEFs
cGhhKHByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAsIG1fdXZSZWN0KHV2UmVjdCkKLSAgICAsIG1f
ZmxpcHBlZChmbGlwcGVkKQotewotfQotCi12b2lkIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6
c2V0TmVlZHNCbGVuZGluZygpCi17Ci0gICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKLX0KLQot
Y29uc3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQotewot
ICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJl
Q29udGVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZCo+KHF1YWQpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMGU4MWRmY2ZlY2UwMjAzODc3YTgy
YzRmZjZiZWI2ODAzZDMxZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yVGlsZVF1YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGls
ZVF1YWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1QYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRvclRpbGVR
dWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNv
bnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dp
enpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0
RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdl
YkNvbXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0
LCByZXNvdXJjZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwg
c3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0
b21FZGdlQUEpKTsKLX0KLQotV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJDb21wb3NpdG9yVGls
ZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgdW5z
aWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSkKLSAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRT
dGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBt
X3Jlc291cmNlSWQocmVzb3VyY2VJZCkKLSAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJlT2Zm
c2V0KQotICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKLSAgICAsIG1fdGV4dHVyZUZp
bHRlcih0ZXh0dXJlRmlsdGVyKQotICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dpenpsZUNvbnRl
bnRzKQotICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRFZGdlQUEpCi0gICAgLCBtX3RvcEVkZ2VBQSh0
b3BFZGdlQUEpCi0gICAgLCBtX3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQotICAgICwgbV9ib3R0
b21FZGdlQUEoYm90dG9tRWRnZUFBKQotewotICAgIGlmIChpc0FudGlhbGlhc2VkKCkpCi0gICAg
ICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Ci0gICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVj
dDsKLX0KLQotY29uc3QgV2ViQ29tcG9zaXRvclRpbGVRdWFkKiBXZWJDb21wb3NpdG9yVGlsZVF1
YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKLXsKLSAgICBB
U1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcG9zaXRvclRpbGVRdWFkKj4o
cXVhZCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IDg4NjEwYTBiMDUyZWJlYTJhNTFkYzMyYjAwM2ZhODlkZmJlOGMwMjYuLjFlY2NmM2U0NWE5MWY1
MWZkOWRlZjUxOWIwZjgyMDhkZDhmODRmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyUGFzcyhEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmRlclBhCiAg
ICAgICAgIGRyYXdRdWFkKGZyYW1lLCBpdC0+Z2V0KCkpOwogfQogCi12b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQogewogICAg
IEludFJlY3Qgc2Npc3NvclJlY3QgPSBxdWFkLT5zY2lzc29yUmVjdCgpOwogCkBAIC00NDUsMzQg
KzQ0NSwzNCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoRHJhd2luZ0Zy
YW1lJiBmcmFtZSwgY29uc3QgV2ViS2l0OjpXZWJDb21wbwogICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBz
d2l0Y2ggKHF1YWQtPm1hdGVyaWFsKCkpIHsKLSAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRv
clF1YWQ6OkludmFsaWQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpJbnZhbGlkOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpDaGVja2VyYm9hcmQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpDaGVj
a2VyYm9hcmQ6CiAgICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKGZyYW1lLCBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OkRlYnVnQm9yZGVyOgorICAgIGNhc2UgQ0NE
cmF3UXVhZDo6RGVidWdCb3JkZXI6CiAgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoZnJhbWUs
IENDRGVidWdCb3JkZXJEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50
OgorICAgIGNhc2UgQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29udGVudDoKICAgICAgICAgZHJhd0lP
U3VyZmFjZVF1YWQoZnJhbWUsIENDSU9TdXJmYWNlRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFk
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
UmVuZGVyUGFzczoKKyAgICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclBhc3M6CiAgICAgICAgIGRy
YXdSZW5kZXJQYXNzUXVhZChmcmFtZSwgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZDo6U29saWRDb2xvcjoKLSAgICAgICAgZHJhd1NvbGlkQ29sb3JRdWFkKGZyYW1lLCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKKyAg
ICBjYXNlIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3I6CisgICAgICAgIGRyYXdTb2xpZENvbG9yUXVh
ZChmcmFtZSwgQ0NTb2xpZENvbG9yRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6U3RyZWFtVmlk
ZW9Db250ZW50OgorICAgIGNhc2UgQ0NEcmF3UXVhZDo6U3RyZWFtVmlkZW9Db250ZW50OgogICAg
ICAgICBkcmF3U3RyZWFtVmlkZW9RdWFkKGZyYW1lLCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1h
dGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChm
cmFtZSwgV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Om1hdGVyaWFsQ2FzdChxdWFk
KSk7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpUZXh0dXJlQ29udGVudDoKKyAgICAgICAgZHJhd1Rl
eHR1cmVRdWFkKGZyYW1lLCBDQ1RleHR1cmVEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUaWxl
ZENvbnRlbnQ6CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQ6CiAgICAgICAgIGRy
YXdUaWxlUXVhZChmcmFtZSwgQ0NUaWxlRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlk
ZW9Db250ZW50OgorICAgIGNhc2UgQ0NEcmF3UXVhZDo6WVVWVmlkZW9Db250ZW50OgogICAgICAg
ICBkcmF3WVVWVmlkZW9RdWFkKGZyYW1lLCBDQ1lVVlZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE1NWY3YTUwMGU5ZmY3MzA2YWI1MWZj
YjZjYmRiZjY1NTE4ZjNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9D
Q0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093
blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFkPiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0NoZWNrZXJib2FyZERy
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QpKTsKK30KKworQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZDo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6IENDRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQor
eworfQorCitjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0NoZWNrZXJib2FyZERyYXdR
dWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQo
cXVhZC0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKj4ocXVhZCk7Cit9CisK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCmluZGV4IDM1MTA0
ZGNmNWIzYzdlOWYyZjg1NWI1ZjIyMDVhNjFjMWI2YjljN2EuLmM2Yzg3MDEwYzRlOGU3ZDgwMjM1
OWNjNTM4MzgxNDE5MjAzOTBmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERy
YXdRdWFkLmgKQEAgLTI2LDEwICsyNiwyNCBAQAogI2lmbmRlZiBDQ0NoZWNrZXJib2FyZERyYXdR
dWFkX2gKICNkZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCiAKLSNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvckNoZWNrZXJib2FyZFF1YWQuaD4KKyNpbmNsdWRlICJjYy9DQ0RyYXdR
dWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotdHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JDaGVja2VyYm9hcmRRdWFkIENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQ7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKKworICAgIHN0YXRpYyBjb25zdCBDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCopOworcHJpdmF0
ZToKKyAgICBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYpOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFj
NDNlNGRhMDA4MTIyMjZkYmZlZDllNWVlMGZjMTA5ZGE0MzMzZmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDRGVidWdCb3JkZXJEcmF3UXVhZD4gQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGludCB3aWR0aCkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVidWdCb3JkZXJEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBjb2xvciwgd2lkdGgpKTsKK30KKworQ0NEZWJ1Z0JvcmRlckRy
YXdRdWFkOjpDQ0RlYnVnQm9yZGVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFNrQ29sb3IgY29sb3IsIGlu
dCB3aWR0aCkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpE
ZWJ1Z0JvcmRlciwgcXVhZFJlY3QpCisgICAgLCBtX2NvbG9yKGNvbG9yKQorICAgICwgbV93aWR0
aCh3aWR0aCkKK3sKKyAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBpZiAoU2tDb2xvckdl
dEEobV9jb2xvcikgPCAyNTUpCisgICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Cit9CisK
K2NvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjptYXRl
cmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0
ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRlcik7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oCmluZGV4IGE3MmMyNzQxNzZhMDZhMzY0MmYy
MTY4MGNhNTQ3MjUwYTIyYTFhNjQuLjNhNTM5MDA0N2RmMGJhMGI4MzdkOTlhNzJlOTNjYjY0ZjRl
MzVhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oCkBAIC0yNiwx
MCArMjYsMzEgQEAKICNpZm5kZWYgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkX2gKICNkZWZpbmUgQ0NE
ZWJ1Z0JvcmRlckRyYXdRdWFkX2gKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yRGVi
dWdCb3JkZXJRdWFkLmg+CisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1ZGUgImNjL0NDRHJh
d1F1YWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci10eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvckRlYnVnQm9yZGVyUXVhZCBDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQ7CisKKyNwcmFnbWEgcGFjayhwdXNoLCA0KQorCitjbGFzcyBDQ0RlYnVn
Qm9yZGVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NEZWJ1Z0JvcmRlckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvciwgaW50IHdpZHRoKTsKKworICAgIFNr
Q29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9OworICAgIGludCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKworICAgIHN0YXRpYyBjb25zdCBDQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKik7Citwcml2YXRlOgor
ICAgIENDRGVidWdCb3JkZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCBTa0NvbG9yLCBpbnQgd2lkdGgpOworCisgICAgU2tDb2xvciBtX2NvbG9yOwor
ICAgIGludCBtX3dpZHRoOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IwNjk5ZDhiNjc3ZDA2ZTI0ZTk1Mjhm
OGY3NzM3ZGExMmQ3M2I3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIK
KworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAi
Y2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVh
ZC5oIgorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NZVVZW
aWRlb0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NEcmF3UXVhZDo6Q0NE
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBNYXRlcmlh
bCBtYXRlcmlhbCwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCisgICAgOiBtX3NoYXJlZFF1YWRT
dGF0ZShzaGFyZWRRdWFkU3RhdGUpCisgICAgLCBtX3NoYXJlZFF1YWRTdGF0ZUlkKHNoYXJlZFF1
YWRTdGF0ZS0+aWQpCisgICAgLCBtX21hdGVyaWFsKG1hdGVyaWFsKQorICAgICwgbV9xdWFkUmVj
dChxdWFkUmVjdCkKKyAgICAsIG1fcXVhZFZpc2libGVSZWN0KHF1YWRSZWN0KQorICAgICwgbV9x
dWFkT3BhcXVlKHRydWUpCisgICAgLCBtX25lZWRzQmxlbmRpbmcoZmFsc2UpCit7CisgICAgQVNT
RVJUKG1fc2hhcmVkUXVhZFN0YXRlKTsKKyAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlk
KTsKK30KKworSW50UmVjdCBDQ0RyYXdRdWFkOjpvcGFxdWVSZWN0KCkgY29uc3QKK3sKKyAgICBp
ZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgaWYgKG1f
c2hhcmVkUXVhZFN0YXRlLT5vcGFxdWUgJiYgbV9xdWFkT3BhcXVlKQorICAgICAgICByZXR1cm4g
bV9xdWFkUmVjdDsKKyAgICByZXR1cm4gbV9vcGFxdWVSZWN0OworfQorCit2b2lkIENDRHJhd1F1
YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCit7
CisgICAgSW50UmVjdCBpbnRlcnNlY3Rpb24gPSBxdWFkVmlzaWJsZVJlY3Q7CisgICAgaW50ZXJz
ZWN0aW9uLmludGVyc2VjdChtX3F1YWRSZWN0KTsKKyAgICBtX3F1YWRWaXNpYmxlUmVjdCA9IGlu
dGVyc2VjdGlvbjsKK30KKwordW5zaWduZWQgQ0NEcmF3UXVhZDo6c2l6ZSgpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChtYXRlcmlhbCgpKSB7CisgICAgY2FzZSBDaGVja2VyYm9hcmQ6CisgICAgICAg
IHJldHVybiBzaXplb2YoQ0NDaGVja2VyYm9hcmREcmF3UXVhZCk7CisgICAgY2FzZSBEZWJ1Z0Jv
cmRlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ0RlYnVnQm9yZGVyRHJhd1F1YWQpOworICAg
IGNhc2UgSU9TdXJmYWNlQ29udGVudDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ0lPU3VyZmFj
ZURyYXdRdWFkKTsKKyAgICBjYXNlIFRleHR1cmVDb250ZW50OgorICAgICAgICByZXR1cm4gc2l6
ZW9mKENDVGV4dHVyZURyYXdRdWFkKTsKKyAgICBjYXNlIFNvbGlkQ29sb3I6CisgICAgICAgIHJl
dHVybiBzaXplb2YoQ0NTb2xpZENvbG9yRHJhd1F1YWQpOworICAgIGNhc2UgVGlsZWRDb250ZW50
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKENDVGlsZURyYXdRdWFkKTsKKyAgICBjYXNlIFN0cmVh
bVZpZGVvQ29udGVudDoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ1N0cmVhbVZpZGVvRHJhd1F1
YWQpOworICAgIGNhc2UgUmVuZGVyUGFzczoKKyAgICAgICAgcmV0dXJuIHNpemVvZihDQ1JlbmRl
clBhc3NEcmF3UXVhZCk7CisgICAgY2FzZSBZVVZWaWRlb0NvbnRlbnQ6CisgICAgICAgIHJldHVy
biBzaXplb2YoQ0NZVVZWaWRlb0RyYXdRdWFkKTsKKyAgICBjYXNlIEludmFsaWQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIENSQVNIKCk7CisgICAgcmV0dXJuIHNpemVvZihDQ0RyYXdR
dWFkKTsKK30KKwordm9pZCBDQ0RyYXdRdWFkOjpzZXRTaGFyZWRRdWFkU3RhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKK3sKKyAgICBtX3NoYXJlZFF1YWRTdGF0
ZSA9IHNoYXJlZFF1YWRTdGF0ZTsKKyAgICBtX3NoYXJlZFF1YWRTdGF0ZUlkID0gc2hhcmVkUXVh
ZFN0YXRlLT5pZDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IDVmNTM2YTg1YTQwNTZm
MDZiYTgwNDdhYWM0ZjdjZjNiYTFjOTc5NDYuLmZhZjZiNGY5NDcyNTgzMzdmZjc1Y2FjMTQ0MGIx
N2VhYzM0ZTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTI2LDEwICsyNiw5MSBAQAogI2lm
bmRlZiBDQ0RyYXdRdWFkX2gKICNkZWZpbmUgQ0NEcmF3UXVhZF9oCiAKLSNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tcG9zaXRvclF1YWQuaD4KKyNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci10eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1
YWQgQ0NEcmF3UXVhZDsKKworLy8gV0FSTklORyEgQWxsIENDWFlaRHJhd1F1YWQgY2xhc3NlcyBt
dXN0IHJlbWFpbiBQT0RzIChwbGFpbiBvbGQgZGF0YSkuCisvLyBUaGV5IGFyZSBpbnRlbmRlZCB0
byBiZSAic2VyaWFsaXphYmxlIiBieSBjb3B5aW5nIHRoZWlyIHJhdyBieXRlcywgc28gdGhleQor
Ly8gbXVzdCBub3QgY29udGFpbiBhbnkgbm9uLWJpdC1jb3B5YWJsZSBtZW1iZXIgdmFyaWFibGVz
IQorLy8KKy8vIEZ1cnRoZXJtb3JlLCB0aGUgY2xhc3MgbWVtYmVycyBuZWVkIHRvIGJlIHBhY2tl
ZCBzbyB0aGV5IGFyZSBhbGlnbmVkCisvLyBwcm9wZXJseSBhbmQgZG9uJ3QgaGF2ZSBwYWRkaW5n
cy9nYXBzLCBvdGhlcndpc2UgbWVtb3J5IGNoZWNrIHRvb2xzCisvLyBsaWtlIFZhbGdyaW5kIHdp
bGwgY29tcGxhaW4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hlbgorLy8gdHJh
bnNmZXJyaW5nIHRoZXNlIGNsYXNzZXMgb3ZlciB0aGUgd2lyZS4KKyNwcmFnbWEgcGFjayhwdXNo
LCA0KQorCisvLyBDQ0RyYXdRdWFkIGlzIGEgYmFnIG9mIGRhdGEgdXNlZCBmb3IgZHJhd2luZyBh
IHF1YWQuIEJlY2F1c2UgZGlmZmVyZW50CisvLyBtYXRlcmlhbHMgbmVlZCBkaWZmZXJlbnQgYml0
cyBvZiBwZXItcXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0aGF0IGRlcml2ZQorLy8gZnJv
bSBDQ0RyYXdRdWFkIHN0b3JlIGFkZGl0aW9uYWwgZGF0YSBpbiB0aGVpciBkZXJpdmVkIGluc3Rh
bmNlLiBUaGUgTWF0ZXJpYWwKKy8vIGVudW0gaXMgdXNlZCB0byAic2FmZWx5IiBkb3duY2FzdCB0
byB0aGUgZGVyaXZlZCBjbGFzcy4KK2NsYXNzIENDRHJhd1F1YWQgeworcHVibGljOgorICAgIGVu
dW0gTWF0ZXJpYWwgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBDaGVja2VyYm9hcmQsCisg
ICAgICAgIERlYnVnQm9yZGVyLAorICAgICAgICBJT1N1cmZhY2VDb250ZW50LAorICAgICAgICBS
ZW5kZXJQYXNzLAorICAgICAgICBUZXh0dXJlQ29udGVudCwKKyAgICAgICAgU29saWRDb2xvciwK
KyAgICAgICAgVGlsZWRDb250ZW50LAorICAgICAgICBZVVZWaWRlb0NvbnRlbnQsCisgICAgICAg
IFN0cmVhbVZpZGVvQ29udGVudCwKKyAgICB9OworCisgICAgSW50UmVjdCBxdWFkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcXVhZFJlY3Q7IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPnF1YWRUcmFuc2Zvcm07IH0KKyAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT52aXNpYmxlQ29udGVudFJlY3Q7IH0K
KyAgICBJbnRSZWN0IHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3Rh
dGUtPnNjaXNzb3JSZWN0OyB9CisgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5OyB9CisgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBi
bGVuZGluZywgd2hhdCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJlIG9wYXF1
ZT8KKyAgICBJbnRSZWN0IG9wYXF1ZVJlY3QoKSBjb25zdDsKKyAgICBib29sIG5lZWRzQmxlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQmxlbmRpbmcgfHwgIW9wYXF1ZVJlY3QoKS5jb250
YWlucyhtX3F1YWRWaXNpYmxlUmVjdCk7IH0KKyAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGln
bmVkSW50UmVjdCgpOyB9CisKKyAgICAvLyBBbGxvd3MgY2hhbmdpbmcgdGhlIHJlY3QgdGhhdCBn
ZXRzIGRyYXduIHRvIG1ha2UgaXQgc21hbGxlci4gUGFyYW1ldGVyIHBhc3NlZAorICAgIC8vIGlu
IHdpbGwgYmUgY2xpcHBlZCB0byBxdWFkUmVjdCgpLgorICAgIHZvaWQgc2V0UXVhZFZpc2libGVS
ZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcXVhZFZpc2libGVSZWN0OyB9CisgICAgYm9vbCBpc0RlYnVnUXVhZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWwgPT0gRGVidWdCb3JkZXI7IH0KKworICAgIE1hdGVyaWFs
IG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsgfQorCisgICAgLy8gUmV0dXJu
cyB0cmFuc2ZlciBzaXplIG9mIHRoaXMgb2JqZWN0IGJhc2VkIG9uIHRoZSBkZXJpdmVkIGNsYXNz
IChieQorICAgIC8vIGxvb2tpbmcgYXQgdGhlIG1hdGVyaWFsIHR5cGUpLgorICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdDsKKworICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZTsgfQorICAgIGludCBzaGFy
ZWRRdWFkU3RhdGVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlSWQ7IH0KKyAg
ICB2b2lkIHNldFNoYXJlZFF1YWRTdGF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworCitw
cm90ZWN0ZWQ6CisgICAgQ0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVy
aWFsLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICAvLyBTdG9yZXMgc3RhdGUgY29tbW9uIHRvIGEg
bGFyZ2UgYnVuZGxlIG9mIHF1YWRzOyBrZXB0IHNlcGFyYXRlIGZvciBtZW1vcnkKKyAgICAvLyBl
ZmZpY2llbmN5LiBUaGVyZSBpcyBzcGVjaWFsIHRyZWF0bWVudCB0byByZWNvbnN0cnVjdCB0aGVz
ZSBwb2ludGVycworICAgIC8vIGR1cmluZyBzZXJpYWxpemF0aW9uLgorICAgIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBtX3NoYXJlZFF1YWRTdGF0ZTsKKyAgICBpbnQgbV9zaGFyZWRRdWFkU3Rh
dGVJZDsKKworICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgSW50UmVjdCBtX3F1YWRSZWN0
OworICAgIEludFJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisKKyAgICAvLyBCeSBkZWZhdWx0LCB0
aGUgc2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1YWQg
aXMKKyAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBjYW4g
b3ZlcnJpZGUgd2l0aCB0aGVzZQorICAgIC8vIHZhcmlhYmxlcy4KKyAgICBib29sIG1fcXVhZE9w
YXF1ZTsKKyAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRo
aXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBh
bmQgYWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90
IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBt
X29wYXF1ZVJlY3Q7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAppbmRleCBmOWZk
OTlmZjM2OGM2ZDBhZWUwNDgwNjA0NzA2YTA2N2I5N2YxYWVjLi5jZmU4OTEwNjBmYWUxYjM4MDhk
M2FjMWY3ZGVlYWFmZjM1ZmVmYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsLmNwcApAQCAtMzcsMTIgKzM3LDEwIEBACiAjaW5jbHVkZSAiY2MvQ0NG
cmFtZVJhdGVDb3VudGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotdXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Q0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbChpbnQgaWQpCkBAIC05NSw3ICs5Myw3IEBAIHZvaWQgQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkCiAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogICAgIEZsb2F0
UmVjdCB1dlJlY3QoMCwgMCwgMSwgMSk7CiAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhh
LCB1dlJlY3QsIGZsaXBwZWQpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2h1ZFRleHR1cmUtPmlkKCks
IHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CiB9CiAKIHZvaWQgQ0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU1NTFiODJkM2ZjYTFkMmNkNTBiNWM2ZmZlN2YyMmY2MGI0NDgzYmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lP
U3VyZmFjZURyYXdRdWFkLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gQ0NJT1N1cmZh
Y2VEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXpl
LCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NJT1N1cmZhY2VEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBpb1N1cmZhY2VTaXplLCBpb1N1cmZhY2VUZXh0dXJlSWQsIG9yaWVu
dGF0aW9uKSk7Cit9CisKK0NDSU9TdXJmYWNlRHJhd1F1YWQ6OkNDSU9TdXJmYWNlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFj
ZVRleHR1cmVJZCwgT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgOiBDQ0RyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6SU9TdXJmYWNlQ29udGVudCwgcXVhZFJlY3QpCisg
ICAgLCBtX2lvU3VyZmFjZVNpemUoaW9TdXJmYWNlU2l6ZSkKKyAgICAsIG1faW9TdXJmYWNlVGV4
dHVyZUlkKGlvU3VyZmFjZVRleHR1cmVJZCkKKyAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCit7Cit9CisKK2NvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIENDSU9TdXJmYWNlRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChx
dWFkLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OklPU3VyZmFjZUNvbnRlbnQpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKj4ocXVhZCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaAppbmRleCA3N2QzMjZjYmQwZDg4
NGJjZDBiMmZjMDg3MTIwMGJiYjZiNzc3YzM1Li43Y2U3YzA2Y2E0ZjcxMDlkZWQ4MzVlYzFiZDBk
NGJiYTUzNDAwOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oCkBAIC0y
NiwxMCArMjYsMzggQEAKICNpZm5kZWYgQ0NJT1N1cmZhY2VEcmF3UXVhZF9oCiAjZGVmaW5lIEND
SU9TdXJmYWNlRHJhd1F1YWRfaAogCi0jaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JJT1N1
cmZhY2VRdWFkLmg+CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgImNjL0NDRHJhd1F1
YWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci10eXBlZGVmIFdlYktpdDo6V2ViQ29tcG9zaXRvcklPU3VyZmFjZVF1YWQgQ0NJT1N1cmZhY2VE
cmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIENDSU9TdXJmYWNlRHJh
d1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CitwdWJsaWM6CisgICAgZW51bSBPcmllbnRhdGlv
biB7CisgICAgICBGbGlwcGVkLAorICAgICAgVW5mbGlwcGVkCisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDSU9TdXJmYWNlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1
bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQsIE9yaWVudGF0aW9uKTsKKworICAgIEludFNpemUg
aW9TdXJmYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlU2l6ZTsgfQorICAgIHVu
c2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlVGV4
dHVyZUlkOyB9CisgICAgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X29yaWVudGF0aW9uOyB9CisKKyAgICBzdGF0aWMgY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCog
bWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKK3ByaXZhdGU6CisgICAgQ0NJT1N1cmZh
Y2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQsIE9y
aWVudGF0aW9uKTsKKworICAgIEludFNpemUgbV9pb1N1cmZhY2VTaXplOworICAgIHVuc2lnbmVk
IG1faW9TdXJmYWNlVGV4dHVyZUlkOworICAgIE9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Cit9
OworCisjcHJhZ21hIHBhY2socG9wKQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
aAppbmRleCA3ZjA4MDI3ODI3ZGQ4ZGU1NWM3ODVjMjAwZTU3NTA1YTJjYWEwZDk4Li5lNjdiNDQ2
OGQ2OGIxMjg3ZjRiMjkwOTVhNGI2NTY3ODQzNDU5MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NRdWFkQ3VsbGVyKCkg
eyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxp
c3QsIGFuZCBmYWxzZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVh
bCBib29sIGFwcGVuZChQYXNzT3duUHRyPFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ+IHBhc3NE
cmF3UXVhZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGFwcGVuZChQYXNzT3duUHRyPEND
RHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkgT1ZFUlJJREU7CiAKICAgICBib29sIGhhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIHsgcmV0dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaAppbmRleCBmMmE5YzYyYWUw
NmE3MTc1Y2FhYWE2MzQ5YjU0OTE2MTI3ZGE1ODRjLi40YWU2ZjIzOGE0NWZjYTBmMTY5OWNhYmFj
MjNmYTQzMDBlOTlhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2luay5oCkBAIC0yOCwxOCArMjgsMTYgQEAK
IAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViQ29tcG9zaXRvclF1YWQ7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q0NEcmF3UXVhZDsKKwogY2xhc3MgQ0NRdWFkU2luayB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q0NRdWFkU2luaygpIHsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFk
ZGVkIHRvIHRoZSBsaXN0LCBhbmQgZmFsc2UgaWYgdGhlIHF1YWQgaXMgZW50aXJlbHkgY3VsbGVk
LgotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxXZWJLaXQ6OldlYkNvbXBvc2l0
b3JRdWFkPiBwYXNzRHJhd1F1YWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NP
d25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXggNjBlMzUzOTZhNDIzZDE3OTNlZWZh
NzBiMDk4N2VkYTMzN2MzYWMzZC4uY2EwODExMTk2NGQ4ZjhhMDU5YTIzNGI3NGI3YmU2YzQ3NTZj
MmIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMjcs
MTcgKzI3LDE1IEBACiAKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogCi11
c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29s
IGlzUmVwbGljYSwgY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNv
dXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK1Bh
c3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogewogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVy
UGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxh
c3RGcmFtZSkpOwogfQogCi1DQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1
YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlz
UmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKLSAgICA6IFdlYkNv
bXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBh
c3MsIHF1YWRSZWN0KQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKICAgICAsIG1fcmVuZGVyUGFzc0lk
KHJlbmRlclBhc3NJZCkKICAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKICAgICAsIG1fbWFz
a1Jlc291cmNlSWQobWFza1Jlc291cmNlSWQpCkBAIC00Niw5ICs0NCw5IEBAIENDUmVuZGVyUGFz
c0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkCiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc0lkID4gMCk7CiB9CiAKLWNvbnN0
IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCitjb25zdCBDQ1JlbmRlclBh
c3NEcmF3UXVhZCogQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0Ry
YXdRdWFkKiBxdWFkKQogewotICAgIEFTU0VSVChxdWFkLT5tYXRlcmlhbCgpID09IFdlYkNvbXBv
c2l0b3JRdWFkOjpSZW5kZXJQYXNzKTsKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBD
Q0RyYXdRdWFkOjpSZW5kZXJQYXNzKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQqPihxdWFkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmgKaW5kZXggOTRkNDE0ZjdiYWYxZTJkNGVhOTU5YmUzMzc4ZDExZDllMzdhNzlj
Zi4uMjliMzNhMWY2YWRlODYyMjFkZjM0ODk4MWQ3MjE3NjI5MDc0NmE1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0yNywyNyArMjcsMjcgQEAKICNkZWZpbmUg
Q0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
ImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKLSNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclF1YWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUmVuZGVyUGFzczsKIAot
Y2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9y
UXVhZCB7CitjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
aW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFk
PiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJl
bmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUpOwogCiAgICAgaW50IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
UGFzc0lkOyB9CiAgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGlj
YTsgfQogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHND
aGFuZ2VkU2luY2VMYXN0RnJhbWU7IH0KIAotICAgIHN0YXRpYyBjb25zdCBDQ1JlbmRlclBhc3NE
cmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqKTsK
KyAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25z
dCBDQ0RyYXdRdWFkKik7CiBwcml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBp
bnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSk7CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2Es
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50
UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgaW50IG1fcmVuZGVy
UGFzc0lkOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRT
dGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmZWU5YTliZWY0ZmZjMDYwZmI1ZDMwNWQwYjA1OWQ4Mzhm
Y2NmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUu
aCIKKworI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGludCBpZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRl
bnRSZWN0LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBv
cGFxdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0ZShpZCwg
cXVhZFRyYW5zZm9ybSwgdmlzaWJsZUNvbnRlbnRSZWN0LCBzY2lzc29yUmVjdCwgb3BhY2l0eSwg
b3BhcXVlKSk7Cit9CisKK0NDU2hhcmVkUXVhZFN0YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZShpbnQg
aWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50UmVjdCYgc2Npc3Nv
clJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorICAgIDogaWQoaWQpCisgICAgLCBx
dWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCisgICAgLCB2aXNpYmxlQ29udGVudFJlY3Qodmlz
aWJsZUNvbnRlbnRSZWN0KQorICAgICwgc2Npc3NvclJlY3Qoc2Npc3NvclJlY3QpCisgICAgLCBv
cGFjaXR5KG9wYWNpdHkpCisgICAgLCBvcGFxdWUob3BhcXVlKQoreworfQorCitib29sIENDU2hh
cmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKK3sKKyAgICAv
LyBOb3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmlj
ZXMuCisgICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRl
Z2VyIHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgorICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOwor
ICAgIEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtLCBG
bG9hdFF1YWQoSW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpKSwgY2xpcHBlZCk7CisgICAgcmV0
dXJuICFjbGlwcGVkICYmIHF1YWQuaXNSZWN0aWxpbmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3go
KS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5oCmluZGV4IDc5MDM2ZGRkNGQ4NmVkMzU5YTIxOTdlZjg1MjQzYTNhMmEzYzU0NDMu
LjZkZDRhYTUyNTRmMGJmYzcxOWY4ZWMyZDEyMDcxOGFmY2MxODAzYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaApAQCAtMjYsMTAgKzI2LDI5IEBACiAjaWZuZGVmIENDU2hhcmVk
UXVhZFN0YXRlX2gKICNkZWZpbmUgQ0NTaGFyZWRRdWFkU3RhdGVfaAogCi0jaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUuaD4KKyNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUgQ0NTaGFyZWRRdWFkU3RhdGU7CisKK3N0cnVj
dCBDQ1NoYXJlZFF1YWRTdGF0ZSB7CisgICAgaW50IGlkOworCisgICAgLy8gVHJhbnNmb3JtcyBm
cm9tIHF1YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIGl0cyB0YXJnZXQgY29udGVudCBz
cGFjZS4KKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm07
CisgICAgLy8gVGhpcyByZWN0IGxpdmVzIGluIHRoZSBjb250ZW50IHNwYWNlIGZvciB0aGUgcXVh
ZCdzIG9yaWdpbmF0aW5nIGxheWVyLgorICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0Owor
ICAgIC8vIFRoaXMgcmVjdCBsaXZlcyBpbiB0aGUgcXVhZCdzIHRhcmdldCBjb250ZW50IHNwYWNl
LgorICAgIEludFJlY3Qgc2Npc3NvclJlY3Q7CisgICAgZmxvYXQgb3BhY2l0eTsKKyAgICBib29s
IG9wYXF1ZTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVh
dGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJh
bnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAgQ0NTaGFyZWRR
dWFkU3RhdGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBx
dWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IElu
dFJlY3QmIHNjaXNzb3JSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAgYm9v
bCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7Cit9OworCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjJi
MzJiYzBhOGQyNzc1M2ZkMWYwZTMxNTJlZTQzZTliMTU4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JE
cmF3UXVhZC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc093blB0cjxDQ1NvbGlkQ29sb3JEcmF3UXVhZD4gQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDU29saWRDb2xvckRyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IGNvbG9yKSk7Cit9CisKK0NDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgU2tDb2xvciBjb2xvcikKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yLCBxdWFkUmVjdCkKKyAgICAsIG1fY29sb3IoY29s
b3IpCit7CisgICAgaWYgKFNrQ29sb3JHZXRBKG1fY29sb3IpIDwgMjU1KQorICAgICAgICBtX3F1
YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRS
ZWN0OworfQorCitjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogQ0NTb2xpZENvbG9yRHJhd1F1
YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQoreworICAgIEFTU0VSVChx
dWFkLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaAppbmRleCBiNmMwZWUwMjVlYTNhZTJi
YmNhYWQ3Mzg1ZmNlYmJjM2NhNjlmOTYyLi41OWJjOGZlYTFiOTA1MmMxYjY2NDFlZTFiZTExYTNi
OWViMTQ0NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmgKQEAgLTI2
LDEwICsyNiwzMCBAQAogI2lmbmRlZiBDQ1NvbGlkQ29sb3JEcmF3UXVhZF9oCiAjZGVmaW5lIEND
U29saWRDb2xvckRyYXdRdWFkX2gKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU29s
aWRDb2xvclF1YWQuaD4KKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NEcmF3
UXVhZC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotdHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZCBDQ1NvbGlk
Q29sb3JEcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIENDU29saWRD
b2xvckRyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDU29saWRDb2xvckRyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgU2tDb2xvcik7CisKKyAgICBTa0NvbG9yIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfTsKKworICAgIHN0YXRpYyBjb25zdCBDQ1NvbGlkQ29s
b3JEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKK3ByaXZhdGU6Cisg
ICAgQ0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgU2tDb2xvcik7CisKKyAgICBTa0NvbG9yIG1fY29sb3I7Cit9OworCisjcHJhZ21h
IHBhY2socG9wKQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9E
cmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkM2ZmMmYxMjVjYzMzZGMxNzcyNzY5MGFkNzk5MWEw
OGVjNjlkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlk
ZW9EcmF3UXVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NTdHJl
YW1WaWRlb0RyYXdRdWFkPiBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1N0cmVhbVZpZGVvRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCBtYXRyaXgpKTsKK30KKwor
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpDQ1N0cmVhbVZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVu
c2lnbmVkIHRleHR1cmVJZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlN0
cmVhbVZpZGVvQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQp
CisgICAgLCBtX21hdHJpeChtYXRyaXgpCit7Cit9CisKK2NvbnN0IENDU3RyZWFtVmlkZW9EcmF3
UXVhZCogQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVh
ZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpT
dHJlYW1WaWRlb0NvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1N0cmVh
bVZpZGVvRHJhd1F1YWQqPihxdWFkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuaAppbmRleCBhMTg5MDYxMWE0NDFkMmRiOGEyNDY3NmQzOGY4NWQzODRlZGVk
ZDE1Li5jOTM1ZGI3YWZlMDE4MmUwMzU4NjgzMWU2NzE3ZWU5MmYxOWE4MzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaApAQCAtMjYsMTAgKzI2LDMyIEBACiAjaWZu
ZGVmIENDU3RyZWFtVmlkZW9EcmF3UXVhZF9oCiAjZGVmaW5lIENDU3RyZWFtVmlkZW9EcmF3UXVh
ZF9oCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN0cmVhbVZpZGVvUXVhZC5oPgor
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXR5cGVkZWYgV2ViS2l0OjpXZWJDb21wb3NpdG9yU3RyZWFtVmlkZW9RdWFk
IENDU3RyZWFtVmlkZW9EcmF3UXVhZDsKKworI3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNz
IENDU3RyZWFtVmlkZW9EcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHVuc2lnbmVkIHRl
eHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRy
aXg7IH0KKworICAgIHN0YXRpYyBjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIG1hdGVyaWFs
Q2FzdChjb25zdCBDQ0RyYXdRdWFkKik7Citwcml2YXRlOgorICAgIENDU3RyZWFtVmlkZW9EcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0
ZXh0dXJlSWQsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAg
IHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggbV9tYXRyaXg7Cit9OworCisjcHJhZ21hIHBhY2socG9wKQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkMGI5OWQ4MDdiZjhi
N2U0ZWY3M2RiZjM3MzllYjJlNDZlYjg5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5jcHAK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093
blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZs
b2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZXNvdXJjZUlk
LCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworfQorCitDQ1RleHR1cmVE
cmF3UXVhZDo6Q0NUZXh0dXJlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQs
IGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBm
bGlwcGVkKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRl
eHR1cmVDb250ZW50LCBxdWFkUmVjdCkKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQor
ICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQorICAgICwgbV91
dlJlY3QodXZSZWN0KQorICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCit7Cit9CisKK3ZvaWQgQ0NU
ZXh0dXJlRHJhd1F1YWQ6OnNldE5lZWRzQmxlbmRpbmcoKQoreworICAgIG1fbmVlZHNCbGVuZGlu
ZyA9IHRydWU7Cit9CisKK2NvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBDQ1RleHR1cmVEcmF3UXVh
ZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQVNTRVJUKHF1
YWQtPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6VGV4dHVyZUNvbnRlbnQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCAyOGMzZDkxMzJmYjU4ZDhkYTEyMGNj
ZjljMTU5YzE3MzQ1MTBkODI5Li4yMGQ1YzlkMTI0ZjlmMjkwZGQwN2RkMmMyZTM5Njc5ZWZlY2Fm
MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgKQEAgLTI2LDEwICsyNiwzNyBA
QAogI2lmbmRlZiBDQ1RleHR1cmVEcmF3UXVhZF9oCiAjZGVmaW5lIENDVGV4dHVyZURyYXdRdWFk
X2gKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdHlwZWRlZiBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCBDQ1RleHR1cmVEcmF3UXVhZDsKKworI3ByYWdtYSBw
YWNrKHB1c2gsIDQpCisKK2NsYXNzIENDVGV4dHVyZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1
YWQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQg
cmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZS
ZWN0LCBib29sIGZsaXBwZWQpOworICAgIEZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3V2UmVjdDsgfQorCisgICAgdW5zaWduZWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VJZDsgfQorICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyBy
ZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGlwcGVkOyB9CisKKyAgICB2b2lkIHNldE5lZWRzQmxlbmRpbmcoKTsKKwor
ICAgIHN0YXRpYyBjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IEND
RHJhd1F1YWQqKTsKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBw
cmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQp
OworCisgICAgdW5zaWduZWQgbV9yZXNvdXJjZUlkOworICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVk
QWxwaGE7CisgICAgRmxvYXRSZWN0IG1fdXZSZWN0OworICAgIGJvb2wgbV9mbGlwcGVkOworfTsK
KworI3ByYWdtYSBwYWNrKHBvcCkKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdR
dWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNWQzMTc4NzkxNzViZDMxZjI2MzkxMTg3OGY3ZDYxMGYxODFm
MzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURy
YXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2ln
bmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250
ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwg
Ym9vbCBib3R0b21FZGdlQUEpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCByZXNvdXJjZUlkLCB0
ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRz
LCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKK30K
KworQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0
JiBvcGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVy
ZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRl
ciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEs
IGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorICAgIDogQ0NEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCisgICAg
LCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKKyAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJl
T2Zmc2V0KQorICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKKyAgICAsIG1fdGV4dHVy
ZUZpbHRlcih0ZXh0dXJlRmlsdGVyKQorICAgICwgbV9zd2l6emxlQ29udGVudHMoc3dpenpsZUNv
bnRlbnRzKQorICAgICwgbV9sZWZ0RWRnZUFBKGxlZnRFZGdlQUEpCisgICAgLCBtX3RvcEVkZ2VB
QSh0b3BFZGdlQUEpCisgICAgLCBtX3JpZ2h0RWRnZUFBKHJpZ2h0RWRnZUFBKQorICAgICwgbV9i
b3R0b21FZGdlQUEoYm90dG9tRWRnZUFBKQoreworICAgIGlmIChpc0FudGlhbGlhc2VkKCkpCisg
ICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7CisgICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVl
UmVjdDsKK30KKworY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDVGlsZURyYXdRdWFkOjptYXRlcmlh
bENhc3QoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJp
YWwoKSA9PSBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBDQ1RpbGVEcmF3UXVhZCo+KHF1YWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJh
d1F1YWQuaAppbmRleCBkNTMwZjRhNDhmMjk0OWViM2FjYjI4YTYzYzJiNzZjYWE3YTk0NWU5Li43
OTQzYmM5ZjA2MmNmOGZjODhiYTViOGQxMDNmYjQ1ZGY4MjYzMDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZURyYXdRdWFkLmgKQEAgLTI2LDEwICsyNiw1MCBAQAogI2lmbmRlZiBDQ1RpbGVEcmF3UXVhZF9o
CiAjZGVmaW5lIENDVGlsZURyYXdRdWFkX2gKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yVGlsZVF1YWQuaD4KKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJJ
bnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFk
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
dHlwZWRlZiBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZCBDQ1RpbGVEcmF3UXVhZDsKKwor
I3ByYWdtYSBwYWNrKHB1c2gsIDQpCisKK2NsYXNzIENDVGlsZURyYXdRdWFkIDogcHVibGljIEND
RHJhd1F1YWQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFk
PiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3Qg
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisK
KyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9
CisgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9m
ZnNldDsgfQorICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVTaXplOyB9CisgICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0dXJlRmlsdGVyOyB9CisgICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBjb25zdCB7IHJldHVy
biBtX3N3aXp6bGVDb250ZW50czsgfQorCisgICAgYm9vbCBsZWZ0RWRnZUFBKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZWZ0RWRnZUFBOyB9CisgICAgYm9vbCB0b3BFZGdlQUEoKSBjb25zdCB7IHJldHVy
biBtX3RvcEVkZ2VBQTsgfQorICAgIGJvb2wgcmlnaHRFZGdlQUEoKSBjb25zdCB7IHJldHVybiBt
X3JpZ2h0RWRnZUFBOyB9CisgICAgYm9vbCBib3R0b21FZGdlQUEoKSBjb25zdCB7IHJldHVybiBt
X2JvdHRvbUVkZ2VBQTsgfQorCisgICAgYm9vbCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1
cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9t
RWRnZUFBKCk7IH0KKworICAgIHN0YXRpYyBjb25zdCBDQ1RpbGVEcmF3UXVhZCogbWF0ZXJpYWxD
YXN0KGNvbnN0IENDRHJhd1F1YWQqKTsKK3ByaXZhdGU6CisgICAgIENDVGlsZURyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworCisgICAgdW5zaWdu
ZWQgbV9yZXNvdXJjZUlkOworICAgIEludFBvaW50IG1fdGV4dHVyZU9mZnNldDsKKyAgICBJbnRT
aXplIG1fdGV4dHVyZVNpemU7CisgICAgR0MzRGludCBtX3RleHR1cmVGaWx0ZXI7CisgICAgYm9v
bCBtX3N3aXp6bGVDb250ZW50czsKKyAgICBib29sIG1fbGVmdEVkZ2VBQTsKKyAgICBib29sIG1f
dG9wRWRnZUFBOworICAgIGJvb2wgbV9yaWdodEVkZ2VBQTsKKyAgICBib29sIG1fYm90dG9tRWRn
ZUFBOworfTsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDWVVWVmlkZW9E
cmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1lVVlZpZGVvRHJhd1F1YWQuY3BwCmluZGV4IDQzZjJlMmY2ZjU3OGU4ZDQ4ZTg2NjE5OTBh
YWI3N2EzNzg2MTM0MmYuLjI3YTY2ZjM3NDcyMTY1YTI4MjkyNzIxYzJkYzY1ODJkN2I2YjVmNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDWVVWVmlkZW9EcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmNwcApAQCAtMjcsMjYgKzI3LDI0
IEBACiAKICNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKIAotdXNpbmcgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRy
PENDWVVWVmlkZW9EcmF3UXVhZD4gQ0NZVVZWaWRlb0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5
UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQorUGFzc093blB0cjxDQ1lVVlZp
ZGVvRHJhd1F1YWQ+IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFu
ZSYgdlBsYW5lKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NZVVZWaWRlb0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHlQbGFuZSwgdVBsYW5lLCB2UGxhbmUpKTsKIH0K
IAotQ0NZVVZWaWRlb0RyYXdRdWFkOjpDQ1lVVlZpZGVvRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUs
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lKQotICAgIDogV2ViQ29tcG9zaXRvclF1YWQo
c2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6WVVWVmlkZW9Db250ZW50LCBxdWFk
UmVjdCkKK0NDWVVWVmlkZW9EcmF3UXVhZDo6Q0NZVVZWaWRlb0RyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB5UGxhbmUsIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJh
bWVQbGFuZSYgdlBsYW5lKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OllVVlZpZGVvQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3lQbGFuZSh5UGxhbmUp
CiAgICAgLCBtX3VQbGFuZSh1UGxhbmUpCiAgICAgLCBtX3ZQbGFuZSh2UGxhbmUpCiB7CiB9CiAK
LWNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogQ0NZVVZWaWRlb0RyYXdRdWFkOjptYXRlcmlhbENh
c3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKK2NvbnN0IENDWVVWVmlk
ZW9EcmF3UXVhZCogQ0NZVVZWaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3
UXVhZCogcXVhZCkKIHsKLSAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9PSBXZWJDb21wb3Np
dG9yUXVhZDo6WVVWVmlkZW9Db250ZW50KTsKKyAgICBBU1NFUlQocXVhZC0+bWF0ZXJpYWwoKSA9
PSBDQ0RyYXdRdWFkOjpZVVZWaWRlb0NvbnRlbnQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqPihxdWFkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NZVVZWaWRlb0RyYXdRdWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZp
ZGVvRHJhd1F1YWQuaAppbmRleCA2Njg0YWQ4OTc4NDE1MDdhYjMxYmZjMzNhMDVkYjE4NmJlZDAw
ZDhmLi40NTZhOTZmNDg3MzFkZmJmNmFlNTIxM2QxODY0NTE5NGI4NjE2N2IyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1lVVlZpZGVv
RHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaApAQCAtMjYsMjQgKzI2LDI0IEBACiAjaWZuZGVmIEND
WVVWVmlkZW9EcmF3UXVhZF9oCiAjZGVmaW5lIENDWVVWVmlkZW9EcmF3UXVhZF9oCiAKKyNpbmNs
dWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NZVVZWaWRlb0RyYXdR
dWFkIDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQgeworY2xhc3MgQ0NZVVZWaWRl
b0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENDWVVWVmlkZW9EcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NZ
VVZWaWRlb0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1l
UGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5l
LCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDWVVWVmlkZW9EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxh
bmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lLCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUpOwogCiAgICAgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBsYW5lKCkgY29uc3QgeyByZXR1cm4gbV95
UGxhbmU7IH0KICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUo
KSBjb25zdCB7IHJldHVybiBtX3VQbGFuZTsgfQogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OkZyYW1lUGxhbmUmIHZQbGFuZSgpIGNvbnN0IHsgcmV0dXJuIG1fdlBsYW5lOyB9CiAKLSAgICBz
dGF0aWMgY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZCopOworICAgIHN0YXRpYyBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1
YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKik7CiBwcml2YXRlOgotICAgIENDWVVW
VmlkZW9EcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgeVBs
YW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUsIGNvbnN0IEND
VmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSk7CisgICAgQ0NZVVZWaWRlb0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDVmlk
ZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHlQbGFuZSwgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
RnJhbWVQbGFuZSYgdVBsYW5lLCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2
UGxhbmUpOwogCiAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSBtX3lQbGFuZTsKICAg
ICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lIG1fdVBsYW5lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>