<?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>200093</bug_id>
          
          <creation_ts>2019-07-24 12:11:59 -0700</creation_ts>
          <short_desc>[FTW] Use IWICBitmap (rather than ID2D1Bitmap) for NativeImagePtr</short_desc>
          <delta_ts>2019-08-21 16:30:23 -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>WebCore Misc.</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>pvollan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555450</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 12:11:59 -0700</bug_when>
    <thetext>When I wrote the original Direct2D code, I did not realize that the backing memory for the ID2D1Bitmap was inaccessible since it is effectively a representation of GPU memory. There is no API to access or modify the pixels.

Instead, MSDN documentation indicates that we should be using IWICBitmap objects, which are converted to ID2D1Bitmap objects when things are ready to be rendered.

This makes it possible to use the TextureMapper backend to do efficient compositing and tile drawing, since the data backing the bitmap can now be accessed and manipulated, allowing us to support filters and other effects.

This initial naive patch makes the transition, which allows these features to work. There is a lot of room for performance improvements.

It&apos;s likely that WebKit bitmaps should be handled more efficiently than this initial patch, and I look forward to DirectX experts to help me do so! (Help, Sony People!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555502</commentid>
    <comment_count>1</comment_count>
      <attachid>374809</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 14:22:18 -0700</bug_when>
    <thetext>Created attachment 374809
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555503</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 14:23:12 -0700</bug_when>
    <thetext>This initial WIP patch is just to see if I broke WinCairo or AppleWin ports.

I would appreciate input from DirectX experts, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555548</commentid>
    <comment_count>3</comment_count>
      <attachid>374824</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 16:08:56 -0700</bug_when>
    <thetext>Created attachment 374824
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555657</commentid>
    <comment_count>4</comment_count>
      <attachid>374851</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 19:53:02 -0700</bug_when>
    <thetext>Created attachment 374851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555663</commentid>
    <comment_count>5</comment_count>
      <attachid>374855</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-07-24 20:02:43 -0700</bug_when>
    <thetext>Created attachment 374855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555908</commentid>
    <comment_count>6</comment_count>
      <attachid>374855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-25 15:02:06 -0700</bug_when>
    <thetext>Comment on attachment 374855
Patch

Clearing flags on attachment: 374855

Committed r247841: &lt;https://trac.webkit.org/changeset/247841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555909</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-25 15:02:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555910</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-25 15:03:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/53561473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563797</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-08-21 16:30:23 -0700</bug_when>
    <thetext>It turns out that this change is horrible for performance (MotionMark dropped from ~200 down to 4).

I&apos;ll be backing a large portion of these changes out in a follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374809</attachid>
            <date>2019-07-24 14:22:18 -0700</date>
            <delta_ts>2019-07-24 16:08:55 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-200093-20190724142213.patch</filename>
            <type>text/plain</type>
            <size>69251</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wNy0yNCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSVdJQ0JpdG1hcCAo
cmF0aGVyIHRoYW4gSUQyRDFCaXRtYXApIGZvciBOYXRpdmVJbWFnZVB0ciBvbiBGVFcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gSSB3cm90ZSB0
aGUgb3JpZ2luYWwgRGlyZWN0MkQgY29kZSwgSSBkaWQgbm90IHJlYWxpemUgdGhhdCB0aGUgYmFj
a2luZyBtZW1vcnkgZm9yIHRoZQorICAgICAgICBJRDJEMUJpdG1hcCB3YXMgaW5hY2Nlc3NpYmxl
IHNpbmNlIGl0IGlzIGVmZmVjdGl2ZWx5IGEgcmVwcmVzZW50YXRpb24gb2YgR1BVIG1lbW9yeS4g
VGhlcmUKKyAgICAgICAgaXMgbm8gQVBJIHRvIGFjY2VzcyBvciBtb2RpZnkgdGhlIHBpeGVscy4K
KworICAgICAgICBJbnN0ZWFkLCBNU0ROIGRvY3VtZW50YXRpb24gaW5kaWNhdGVzIHRoYXQgd2Ug
c2hvdWxkIGJlIHVzaW5nIElXSUNCaXRtYXAgb2JqZWN0cywgd2hpY2ggYXJlCisgICAgICAgIGNv
bnZlcnRlZCB0byBJRDJEMUJpdG1hcCBvYmplY3RzIHdoZW4gdGhpbmdzIGFyZSByZWFkeSB0byBi
ZSByZW5kZXJlZC4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUg
VGV4dHVyZU1hcHBlciBiYWNrZW5kIHRvIGRvIGVmZmljaWVudCBjb21wb3NpdGluZyBhbmQgdGls
ZQorICAgICAgICBkcmF3aW5nLCBzaW5jZSB0aGUgZGF0YSBiYWNraW5nIHRoZSBiaXRtYXAgY2Fu
IG5vdyBiZSBhY2Nlc3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFsbG93aW5nIHVzCisgICAgICAgIHRv
IHN1cHBvcnQgZmlsdGVycyBhbmQgb3RoZXIgZWZmZWN0cy4KKworICAgICAgICAqIFBsYXRmb3Jt
RlRXLmNtYWtlOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6SW1hZ2VFeHRyYWN0b3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdM
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdEZXZpY2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6bmF0aXZlSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorCiAyMDE5LTA3LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaWx0ZXIgU0RQIGMgbGluZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRX
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIGluY2x1ZGUocGxhdGZvcm0vQ3VybC5jbWFrZSkK
IGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVycy5jbWFrZSkKLSMgRklYTUU6IEVuYWJsZQot
IyBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UpCitpbmNsdWRlKHBsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7RGlyZWN0WF9JTkNMVURFX0RJUlN9IgpAQCAtMTQsMzgg
KzEzLDE3MyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvd2luIgotICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iKQorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCispCisKK2xpc3QoQVBQRU5EIFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzIgorKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBhY2Nlc3Np
YmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAorICAgIGFjY2Vzc2liaWxpdHkvd2luL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwCisgICAgYWNjZXNzaWJpbGl0eS93aW4vQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwCisKKyAgICBlZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3Bw
CisKKyAgICBodG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcAorCisgICAgcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCisgICAgcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorICAg
IHBhZ2Uvd2luL0ZyYW1lV2luLmNwcAogICAgIHBhZ2Uvd2luL0ZyYW1lV2luRGlyZWN0MkQuY3Bw
CiAKKyAgICBwbGF0Zm9ybS9DdXJzb3IuY3BwCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKKyAgICBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorCisgICAgcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorCisgICAgcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKKworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckRpcmVjdFdyaXRlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9ESUJQaXhlbERhdGEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UG9p
bnREaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRmxvYXRSZWN0RGlyZWN0
MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0U2l6ZURpcmVjdDJELmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFdpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVEaXJl
Y3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJEaXJlY3QyRC5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbnRQb2ludFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50
UmVjdFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50U2l6ZVdpbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBs
ZUZvbnREYXRhRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFs
eXplckhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRpb25N
YXRyaXhEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRp
b25NYXRyaXhXaW4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRy
b2xsZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9DdXJsU1NMSGFuZGxlV2luLmNw
cAorICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNwcAogCisgICAgcGxh
dGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCiAKKyAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKyAgICBwbGF0Zm9ybS93aW4v
Qml0bWFwSW5mby5jcHAKKyAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0RlZldu
ZFByb2NXaW5kb3dDbGFzcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vRGVsYXlMb2FkZWRNb2R1bGVz
RW51bWVyYXRvci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxh
dGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAorICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAKKyAgICBwbGF0Zm9y
bS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVz
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9JbXBvcnRlZEZ1bmN0aW9uc0VudW1lcmF0b3IuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL0ltcG9ydGVkTW9kdWxlc0VudW1lcmF0b3IuY3BwCisgICAgcGxhdGZv
cm0vd2luL0tleUV2ZW50V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAorICAgIHBsYXRmb3JtL3dp
bi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hh
cmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BFSW1hZ2UuY3BwCisgICAgcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VF
dmVudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU1NMS2V5R2Vu
ZXJhdG9yV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKyAg
ICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisgICAgcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9TdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3Iu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCisgICAgcGxhdGZvcm0vd2luL1Vz
ZXJBZ2VudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorICAgIHBs
YXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9XZWJDb3Jl
SW5zdGFuY2VIYW5kbGUuY3BwCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2lu
L1dpZGdldFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV2luZG93TWVzc2FnZUJyb2FkY2FzdGVy
LmNwcAorCisgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKQorCitsaXN0KEFQUEVO
RCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKKyAgICBhY2Nlc3NpYmlsaXR5L3dp
bi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oCisKKyAgICBwYWdlL3dpbi9GcmFtZVdp
bi5oCisKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudC5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaGFyZWRHRElPYmplY3QuaAorCisgICAgcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorICAg
IHBsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vQ09NUHRyLmgKKyAg
ICBwbGF0Zm9ybS93aW4vRGVmV25kUHJvY1dpbmRvd0NsYXNzLmgKKyAgICBwbGF0Zm9ybS93aW4v
R0RJT2JqZWN0Q291bnRlci5oCisgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5oCisgICAg
cGxhdGZvcm0vd2luL0hXbmREQy5oCisgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisg
ICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKKyAgICBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuaAorICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAor
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2Jq
ZWN0LmgKKyAgICBwbGF0Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5oCisgICAgcGxhdGZvcm0v
d2luL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuaAorICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaAor
ICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaAorICAgIHBsYXRmb3JtL3dp
bi9XaW5kb3dzVG91Y2guaAorKQorCitsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTCisgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3RoZW1lV2luLmNzcworICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKICkKIAogbGlzdChBUFBFTkQgV2ViQ29y
ZV9MSUJSQVJJRVMKQEAgLTY1LDQgKzE5OSwyNCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1
cHBvcnRfTElCUkFSSUVTCiAgICAgc2hsd2FwaQogKQogCitmaWxlKENPUFkKKyAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5jc3MiCisg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBw
bGUuanMiCisgICAgREVTVElOQVRJT04KKyAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vV2ViS2l0LnJlc291cmNlcworKQorCitpZiAoRVhJU1RTICR7V0VCS0lUX0xJQlJBUklF
U19ESVJ9L2V0Yy9zc2wvY2VydC5wZW0pCisgICAgbWFrZV9kaXJlY3RvcnkoJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzKQorICAg
IGZpbGUoQ09QWQorICAgICAgICAke1dFQktJVF9MSUJSQVJJRVNfRElSfS9ldGMvc3NsL2NlcnQu
cGVtCisgICAgICAgIERFU1RJTkFUSU9OCisgICAgICAgICR7Q01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZfS9XZWJLaXQucmVzb3VyY2VzL2NlcnRpZmljYXRlcworICAgICkKKyAgICBmaWxl
KFJFTkFNRQorICAgICAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0
LnJlc291cmNlcy9jZXJ0aWZpY2F0ZXMvY2VydC5wZW0KKyAgICAgICAgJHtDTUFLRV9SVU5USU1F
X09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzL2NhY2VydC5w
ZW0KKyAgICApCitlbmRpZiAoKQorCiBzZXQoV2ViQ29yZV9PVVRQVVRfTkFNRSBXZWJDb3JlJHtE
RUJVR19TVUZGSVh9KQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDc3ODUpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDctMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIElXSUNCaXRtYXAgKHJhdGhlciB0aGFuIElEMkQxQml0bWFwKSBmb3IgTmF0
aXZlSW1hZ2VQdHIgb24gRlRXCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhbC9QbGF0Zm9ybUZUVy5jbWFrZToKKwogMjAxOS0wNy0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgY29u
c3RydWN0b3JzIGV4cGxpY2l0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
RlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1G
VFcuY21ha2UJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSwxOCBAQCBsaXN0KEFQUEVO
RCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3Bw
CiAKICAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKworICAgIHN5c3RlbS9DbG9j
a0dlbmVyaWMuY3BwCisKKyAgICBzeXN0ZW0vd2luL1NvdW5kV2luLmNwcAorCisgICAgdGV4dC9L
aWxsUmluZy5jcHAKKworICAgIHdpbi9Mb2dnaW5nV2luLmNwcAogKQogCiBsaXN0KEFQUEVORCBQ
QUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0xJQlJBUklFU19E
SVJ9L2luY2x1ZGUiCiApCisKK3NldChQQUxfT1VUUFVUX05BTUUgUEFMJHtERUJVR19TVUZGSVh9
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkocmV2aXNpb24gMjQ3NDMyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYs
MTYgKzEzNiwxNiBAQCBhY2NlbGVyYXRlZENvbXBvc2l0ZWRBbmltYXRpb25zRW5hYmxlZDoKICAg
aW5pdGlhbDogdHJ1ZQogICBvbkNoYW5nZTogc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVz
CiBzaG93RGVidWdCb3JkZXJzOgotICBpbml0aWFsOiBmYWxzZQorICBpbml0aWFsOiB0cnVlCiAg
IG9uQ2hhbmdlOiBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMKIHNob3dSZXBhaW50Q291
bnRlcjoKLSAgaW5pdGlhbDogZmFsc2UKKyAgaW5pdGlhbDogdHJ1ZQogICBvbkNoYW5nZTogc2V0
TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzCiB2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9uczoK
ICAgdHlwZTogRGVidWdPdmVybGF5UmVnaW9ucwogICBpbml0aWFsOiAwCiBzaG93VGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3I6Ci0gIGluaXRpYWw6IGZhbHNlCisgIGluaXRpYWw6IHRydWUKIHJlc291
cmNlVXNhZ2VPdmVybGF5VmlzaWJsZToKICAgaW5pdGlhbDogZmFsc2UKICAgb25DaGFuZ2U6IHJl
c291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZUNoYW5nZWQKQEAgLTY4Nyw3ICs2ODcsNyBAQCBqYXZh
RW5hYmxlZEZvckxvY2FsRmlsZXM6CiAjIFVubGlrZSB0aGUgaW1hZ2VzRW5hYmxlZCBzZXR0aW5n
LCB0aGlzIG9ubHkgc3VwcHJlc3NlcyB0aGUgbmV0d29yayBsb2FkIG9mCiAjIHRoZSBpbWFnZSBV
UkwuIEEgY2FjaGVkIGltYWdlIHdpbGwgc3RpbGwgYmUgcmVuZGVyZWQgaWYgcmVxdWVzdGVkLgog
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5OgotICBpbml0aWFsOiBmYWxzZQorICBpbml0aWFsOiB0
cnVlCiAgIG9uQ2hhbmdlOiBpbWFnZXNFbmFibGVkQ2hhbmdlZAogaW1hZ2VzRW5hYmxlZDoKICAg
aW5pdGlhbDogdHJ1ZQpAQCAtNjk1LDcgKzY5NSw3IEBAIGltYWdlc0VuYWJsZWQ6CiAgIG9uQ2hh
bmdlOiBpbWFnZXNFbmFibGVkQ2hhbmdlZAogICBpbnNwZWN0b3JPdmVycmlkZTogdHJ1ZQogc2Ny
aXB0RW5hYmxlZDoKLSAgaW5pdGlhbDogZmFsc2UKKyAgaW5pdGlhbDogdHJ1ZQogICBnZXR0ZXI6
IGlzU2NyaXB0RW5hYmxlZAogICBpbnNwZWN0b3JPdmVycmlkZTogdHJ1ZQogcGx1Z2luc0VuYWJs
ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluCiAgICAgfSgpKTsKICNlbHNlCiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+PiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nID1zdGQ6OmluaXRpYWxpemVy
X2xpc3Q8U3RyaW5nPiB7Ci0jaWYgVVNFKENHKQorI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KQogICAgICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3VwcG9ydCBmb3IgYWxsIHRoZSBzdXBw
b3J0ZWQgVVRJJ3Mgd2hlbiBhIHdheSB0byBjb252ZXJ0IGZyb20gTUlNRVR5cGUgdG8gVVRJIHJl
bGlhYmx5IGlzIGZvdW5kLgogICAgICAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBK
UEVHIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTI4Nj4uCiAgICAgICAgICJpbWFn
ZS9wbmciX3MsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdl
YktpdEJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDExIEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCisv
LyBGSVhNRQorI2RlZmluZSBHTF9WRVJURVhfU0hBREVSIDB4OEIzMQorI2RlZmluZSBHTF9GUkFH
TUVOVF9TSEFERVIgMHg4QjMwCisvLworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gQU5H
TEVTaGFkZXJUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcz
LDYgKzI3Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAg
ICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7CiAKICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CisKICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDExICszNjAsMTUg
QEAgR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVJbWFnZQogICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7CiB9CiAKKyNpZiBVU0UoRElSRUNUMkQpCitHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpID0gZGVmYXVs
dDsKKyNlbmRpZgorCiBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OkltYWdlRXh0
cmFjdG9yKEltYWdlKiBpbWFnZSwgSW1hZ2VIdG1sRG9tU291cmNlIGltYWdlSHRtbERvbVNvdXJj
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KQogewogICAgIG1faW1hZ2UgPSBpbWFnZTsKICAgICBtX2ltYWdlSHRtbERvbVNvdXJjZSA9IGlt
YWdlSHRtbERvbVNvdXJjZTsKLSAgICBtX2V4dHJhY3RTdWNjZWVkZWQgPSBleHRyYWN0SW1hZ2Uo
cHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOworICAgIC8vIEZJ
WE1FOiBQVVQgQkFDSzogbV9leHRyYWN0U3VjY2VlZGVkID0gZXh0cmFjdEltYWdlKHByZW11bHRp
cGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIHBpeGVs
cywgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIGZsaXBZLCBBbHBoYU9wIGFs
cGhhT3AsIERhdGFGb3JtYXQgc291cmNlRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDkgKzExMyw3IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKLSNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI7Ci0jZW5kaWYK
IAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNo
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsy
ODQsMTQgQEAgcHVibGljOgogICAgIH07CiAgICAgR3JhcGhpY3NDb250ZXh0KFBhaW50SW52YWxp
ZGF0aW9uUmVhc29ucyk7CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgZW51bSBjbGFzcyBCaXRt
YXBSZW5kZXJpbmdDb250ZXh0VHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBDUFVNZW1vcnksCisg
ICAgICAgIEdQVU1lbW9yeQorICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250
ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUp
OworI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0
Zm9ybUNvbnRleHQoKSBjb25zdDsKIApAQCAtMzM5LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24g
PSBJbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAg
dm9pZCBkcmF3RGV2aWNlQml0bWFwKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9y
aWVudGF0aW9uKCkpOworI2VuZGlmCisKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKICAg
ICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigp
OwpAQCAtNjA3LDYgKzYxOSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAg
dm9pZCBwbGF0Zm9ybUluaXQoSERDLCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNULCBib29sIGhh
c0FscGhhID0gZmFsc2UpOworICAgIHZvaWQgcGxhdGZvcm1Jbml0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUpOwogICAgIHZvaWQgZHJhd1dpdGhv
dXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogICAgIHZvaWQgZHJhd1dpdGhTaGFkb3co
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJ
RDJEMVJlbmRlclRhcmdldCopPiYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDE3ICs0Nyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXIKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi0jaWYgVVNFKERJUkVDVDJEKQot
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3csIHRhcmdldENvbnRleHQsIHN1Y2Nlc3MpKTsKLSAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBidWZmZXI7Ci19
Ci0jZW5kaWYKLQogYm9vbCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTIyNywxMSArMjE2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcgogCiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSNpZiBVU0Uo
RElSRUNUMkQpCi0gICAgcmV0dXJuIGNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRlcmluZ01vZGUo
KSwgJmNvbnRleHQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Ci0jZWxzZQogICAgIHJl
dHVybiBjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSk7Ci0jZW5kaWYKIH0KIAogSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0
aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDYg
QEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVs
bCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENv
bG9yU3BhY2VTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotI2lmIFVTRShESVJF
Q1QyRCkKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2VTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotI2VuZGlmCiAKICAgICAv
LyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQg
Y29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYs
IENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtMTQ0LDggKzE0MSw4IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzaW5rSW50b05hdGl2
ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwogICAgIHZvaWQgZmx1c2hDb250
ZXh0KCkgY29uc3Q7CiAjZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgQ09NUHRyPElEMkQxQml0bWFw
PiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0OwotICAgIHN0YXRpYyBDT01QdHI8SUQyRDFCaXRtYXA+IHNpbmtJbnRvTmF0aXZlSW1hZ2Uo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgQ09NUHRyPElXSUNCaXRtYXA+IGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7
CisgICAgc3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7
CiAjZW5kaWYKICAgICAKQEAgLTE3NSw4ICsxNzIsNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRykK
ICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGJvb2wm
IHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdDsKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29sJiBzdWNjZXNz
KTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjaWYgVVNFKERJUkVD
VDJEKQogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3
aW5jb2RlYy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDcgKzU1LDcg
QEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogI2lmIFVTRShDRykKIHR5cGVkZWYgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRl
ZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBDT01QdHI8SVdJ
Q0JpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJTkdESSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaAko
cmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3Bl
bkdMU2hpbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTMgQEAKICNpZm5kZWYgT3Bl
bkdMU2hpbXNfaAogI2RlZmluZSBPcGVuR0xTaGltc19oCiAKKyNpZiBPUyhXSU5ET1dTKQorI2lu
Y2x1ZGUgPEdML2dsLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjZWxzZQogI2luY2x1ZGUg
PEdML2dsLmg+CiAjaW5jbHVkZSA8R0wvZ2xleHQuaD4KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChH
TF9FU19WRVJTSU9OXzJfMCkKIC8vIFNvbWUgb3BlbkdMIEVTIHN5c3RlbXMgbWlzcyB0aGlzIHR5
cGVkZWYuCkBAIC0zNyw2ICs0Miw3IEBAIE9wZW5HTEZ1bmN0aW9uVGFibGUqIG9wZW5HTEZ1bmN0
aW9uVGFibGUKIAogI2lmIE9TKFdJTkRPV1MpCiAjZGVmaW5lIEdMQVBJRU5UUlkgX19zdGRjYWxs
Cit0eXBlZGVmIGNoYXIgR0xjaGFyOwogI2Vsc2UKICNkZWZpbmUgR0xBUElFTlRSWQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJ
KHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NCw3ICsxODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jl
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwgSW50
U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXItPmludGVy
bmFsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAvLyBGSVhNRTogUHV0IEJh
Y2sgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSwgaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKICAg
ICBwcmVzZW50UmVuZGVyYnVmZmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpZiBVU0UoRElSRUNUMkQpCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPEFOR0xFL1NoYWRl
ckxhbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjQ5LDcgKzI1Myw3IEBAIEV4dGVu
c2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGUKIH0KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oV0lOKSAmJiAhVVNFKENBSVJPKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENBKQog
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7CiAgICAgLy8g
VGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlbmRlcmluZyBk
aXJlY3RseSB0byB0aGUgSG9zdFdpbmRvdy4KQEAgLTMxMSw3ICszMTUsOSBAQCBHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhCiAgICAgCiAgICAgLy8gQU5HTEUgaW5pdGlh
bGl6YXRpb24uCiAgICAgU2hCdWlsdEluUmVzb3VyY2VzIEFOR0xFUmVzb3VyY2VzOworI2lmIDAK
ICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CisjZW5kaWYKICAg
ICAKICAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRSSUJT
LCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7CiAgICAgZ2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJj
ZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwpAQCAtMzk0LDcgKzQwMCwxMSBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50CiAKIFBsYXRmb3JtTGF5ZXIqIEdyYXBo
aWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKKyNpZiAxCisgICAgcmV0dXJu
IG51bGxwdHI7CisjZWxzZQogICAgIHJldHVybiBtX3dlYkdMTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KTsKKyNlbmRpZgogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHJldmlzaW9u
IDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmUuaCIKIAorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKQEAgLTU0LDYgKzU1LDExIEBA
IHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHUKIAogICAgIHNvdXJjZUxh
eWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3VyY2VSZWN0KTsKIAor
I2lmIFVTRShESVJFQ1QyRCkKKyAgICAvLyBXZSBjYW4ndCAKKyAgICBjb250ZXh0LmVuZERyYXco
KTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5o
IgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCkBAIC00Miw2ICs0MywxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNl
bmRpZgogCisjaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3
aW5jb2RlYy5oPgorI2VuZGlmCisKICNpZiBPUyhEQVJXSU4pCiAjZGVmaW5lIEdMX1VOU0lHTkVE
X0lOVF84XzhfOF84X1JFViAweDgzNjcKICNlbmRpZgpAQCAtMTU2LDYgKzE2MiwyOSBAQCB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hCiAgICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5nZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2Up
KTsKICAgICBieXRlc1BlckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3Vy
ZmFjZSk7CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBi
aXRtYXAncyBtZW1vcnkgd2hlbiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgQmVnaW5EcmF3L0Vu
ZERyYXcKKyAgICBXSUNSZWN0IHJjTG9jayA9IHsgMCwgMCwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0
YXJnZXRSZWN0LmhlaWdodCgpIH07CisKKyAgICBDT01QdHI8SVdJQ0JpdG1hcExvY2s+IGJpdG1h
cERhdGE7CisgICAgSFJFU1VMVCBociA9IGZyYW1lSW1hZ2UtPkxvY2soJnJjTG9jaywgV0lDQml0
bWFwTG9ja1JlYWQsICZiaXRtYXBEYXRhKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAg
ICAgIHJldHVybjsKKworICAgIFVJTlQgc3RyaWRlID0gMDsKKyAgICBociA9IGJpdG1hcERhdGEt
PkdldFN0cmlkZSgmc3RyaWRlKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJ5dGVzUGVyTGluZSA9IHN0cmlkZTsKKworICAgIFVJTlQgYnVmZmVyU2l6
ZSA9IDA7CisgICAgV0lDSW5Qcm9jUG9pbnRlciBkYXRhUHRyID0gbnVsbHB0cjsKKyAgICBociA9
IGJpdG1hcERhdGEtPkdldERhdGFQb2ludGVyKCZidWZmZXJTaXplLCAmZGF0YVB0cik7CisgICAg
aWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbWFnZURhdGEgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhUHRyKTsKICNlbmRpZgogCiAgICAgdXBkYXRlQ29u
dGVudHMoaW1hZ2VEYXRhLCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAkocmV2
aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
Nyw4ICsyNTcsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAg
ICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwogI2VuZGlm
CiAKKyNpZiBVU0UoQ0FJUk8pCiAgICAgaWYgKG1fdmFvKQogICAgICAgICBkZWxldGVWZXJ0ZXhB
cnJheShtX3Zhbyk7CisjZW5kaWYKIAogICAgIGF1dG8qIGFjdGl2ZUNvbnRleHQgPSBhY3RpdmVD
b250ZXh0cygpLnRha2VMYXN0KFt0aGlzXShhdXRvKiBpdCkgeyByZXR1cm4gaXQgPT0gdGhpczsg
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChhY3RpdmVDb250ZXh0LCAhIWFjdGl2ZUNvbnRleHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmxv
YXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZURpcmVjdDJELmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURl
Y29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KQEAgLTU0LDcgKzU1LDcgQEAgR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYwogCiAgICAgLy8gQ3JlYXRlIGEgREMgcmVu
ZGVyIHRhcmdldC4KICAgICBhdXRvIHRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJn
ZXRQcm9wZXJ0aWVzKEQyRDFfUkVOREVSX1RBUkdFVF9UWVBFX0RFRkFVTFQsCi0gICAgICAgIEQy
RDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCBEMkQxX0FMUEhBX01P
REVfSUdOT1JFKSwKKyAgICAgICAgRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSwKICAgICAgICAgMCwgMCwg
RDJEMV9SRU5ERVJfVEFSR0VUX1VTQUdFX05PTkUsIEQyRDFfRkVBVFVSRV9MRVZFTF9ERUZBVUxU
KTsKIAogICAgIEhSRVNVTFQgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+
Q3JlYXRlRENSZW5kZXJUYXJnZXQoJnRhcmdldFByb3BlcnRpZXMsIHJlbmRlclRhcmdldCk7CkBA
IC02Miw3ICs2MywxMiBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRj
CiAKICAgICAoKnJlbmRlclRhcmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoKnJlbmRlclRhcmdldCk7Cisg
ICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgqcmVuZGVyVGFy
Z2V0LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKK30KKworR3JhcGhp
Y3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZSByZW5kZXJlclR5
cGUpCit7CisgICAgcGxhdGZvcm1Jbml0KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCByZW5kZXJl
clR5cGUpOwogfQogCiBJRDJEMUZhY3RvcnkqIEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9y
eSgpCkBAIC0xMDYsNyArMTEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5p
dChIREMgaAogICAgIERJQlBpeGVsRGF0YSBwaXhlbERhdGEoYml0bWFwKTsKIAogICAgIGF1dG8g
dGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRhcmdldFByb3BlcnRpZXMoKTsKLSAgICB0
YXJnZXRQcm9wZXJ0aWVzLnBpeGVsRm9ybWF0ID0gRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JN
QVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9JR05PUkUpOworICAgIHRhcmdldFBy
b3BlcnRpZXMucGl4ZWxGb3JtYXQgPSBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpOwogCiAgICAgQ09NUHRy
PElEMkQxRENSZW5kZXJUYXJnZXQ+IHJlbmRlclRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gc3lz
dGVtRmFjdG9yeSgpLT5DcmVhdGVEQ1JlbmRlclRhcmdldCgmdGFyZ2V0UHJvcGVydGllcywgJnJl
bmRlclRhcmdldCk7CkBAIC0xMTgsNyArMTI0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtSW5pdChIREMgaAogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShyZW5k
ZXJUYXJnZXQuZ2V0KCkpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUocmVuZGVyVGFyZ2V0LmdldCgpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6
R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgY29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KICAgICBzZXRQbGF0Zm9y
bUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CkBAIC0xMjksMTAgKzEzNSwxNSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBoCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUluaXQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKIHsKKyAgICBwbGF0
Zm9ybUluaXQocmVuZGVyVGFyZ2V0LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVt
b3J5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChJRDJEMVJlbmRl
clRhcmdldCogcmVuZGVyVGFyZ2V0LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZSByZW5kZXJp
bmdUeXBlKQorewogICAgIGlmICghcmVuZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHJlbmRlclRhcmdl
dCk7CisgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShyZW5k
ZXJUYXJnZXQsIHJlbmRlcmluZ1R5cGUpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0
IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgogICAgIHNldFBsYXRmb3JtRmlsbENvbG9y
KGZpbGxDb2xvcigpKTsKQEAgLTE5NSw3ICsyMDYsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmVQbGF0Zm9ybVN0YQogICAgIC8vIEZJWE1FOiBtX2RhdGEtPm1fdXNlclRvRGV2aWNl
VHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJV0lDQml0bWFwPiYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQoreworICAgIENPTVB0cjxJRDJE
MUJpdG1hcD4gZGV2aWNlQml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1hcChpbWFnZS5nZXQoKSwgJmRldmljZUJpdG1hcCk7
CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBkcmF3RGV2
aWNlQml0bWFwKGRldmljZUJpdG1hcCwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3As
IGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0RldmljZUJpdG1hcChjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgxLDcgKzMwMiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKICAgICBESUJQaXhlbERhdGEgcGl4ZWxEYXRhKHNv
dXJjZUJpdG1hcC5nZXQoKSk7CiAgICAgQVNTRVJUKHBpeGVsRGF0YS5iaXRzUGVyUGl4ZWwoKSA9
PSAzMik7CiAKLSAgICBhdXRvIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBQcm9wZXJ0
aWVzKEQyRDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCBEMkQxX0FM
UEhBX01PREVfSUdOT1JFKSk7CisgICAgYXV0byBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0
bWFwUHJvcGVydGllcyhEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpKTsKIAogICAgIENPTVB0cjxJRDJEMUJp
dG1hcD4gYml0bWFwOwogICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Q3JlYXRl
Qml0bWFwKHBpeGVsRGF0YS5zaXplKCksIHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxEYXRhLmJ5
dGVzUGVyUm93KCksICZiaXRtYXBQcm9wZXJ0aWVzLCAmYml0bWFwKTsKQEAgLTMyMiwxMyArMzQz
LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW4KIHsKIH0KIAot
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKK0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVy
VGFyZ2V0KiByZW5kZXJUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29u
dGV4dFR5cGUgcmVuZGVyaW5nVHlwZSkKICAgICA6IG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdl
dCkKKyAgICAsIG1fcmVuZGVyZXJUeXBlKHJlbmRlcmluZ1R5cGUpCiB7CiAgICAgaWYgKCFtX3Jl
bmRlclRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYmVnaW5EcmF3KCk7CisgICAgaWYg
KG1fcmVuZGVyZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSkKKyAgICAgICAgYmVnaW5EcmF3KCk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpCkBA
IC0zMzYsNyArMzU5LDggQEAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3JhcGhp
YwogICAgIGlmICghbV9yZW5kZXJUYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVuZERy
YXcoKTsKKyAgICBpZiAoYmVnaW5EcmF3Q291bnQpCisgICAgICAgIGVuZERyYXcoKTsKIH0KIAog
Q09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCkBAIC00MjQsNiAr
NDQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZwogewogICAg
IEFTU0VSVChtX3JlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2lu
RHJhdygpOworICAgICsrYmVnaW5EcmF3Q291bnQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOjplbmREcmF3KCkKQEAgLTQzMyw3ICs0NTgsOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kCiAgICAgSFJFU1VMVCBociA9IG1fcmVuZGVy
VGFyZ2V0LT5FbmREcmF3KCZmaXJzdCwgJnNlY29uZCk7CiAKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZTo6ZW5kRHJhdzogaHI9JWxkLCBmaXJzdD0lbGQsIHNlY29uZD0lbGQiLCBociwg
Zmlyc3QsIHNlY29uZCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdzogaHI9JXhkLCBmaXJzdD0lbGQsIHNlY29u
ZD0lbGQiLCBociwgZmlyc3QsIHNlY29uZCk7CisKKyAgICAtLWJlZ2luRHJhd0NvdW50OwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBAIC01Nzks
NiArNjA2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAg
IC8vIElmIHdlIG9ubHkgd2FudCBhIHN1YnNldCBvZiB0aGUgYml0bWFwLCB3ZSBuZWVkIHRvIGNy
ZWF0ZSBhIGNyb3BwZWQgYml0bWFwIGltYWdlLiBBY2NvcmRpbmcgdG8gdGhlIGRvY3VtZW50YXRp
b24sCiAgICAgLy8gdGhpcyBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgYml0bWFwIG1lbW9yeS4KICAg
ICBpZiAoaW1hZ2Uud2lkdGgoKSA+IGRlc3RSZWN0LndpZHRoKCkgfHwgaW1hZ2UuaGVpZ2h0KCkg
PiBkZXN0UmVjdC5oZWlnaHQoKSkgeworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIC8qCiAg
ICAgICAgIGZsb2F0IGRwaVggPSAwOwogICAgICAgICBmbG9hdCBkcGlZID0gMDsKICAgICAgICAg
dGlsZUltYWdlLT5HZXREcGkoJmRwaVgsICZkcGlZKTsKQEAgLTU5MSwxMCArNjIwLDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYKICAgICAgICAgICAgIGlmIChT
VUNDRUVERUQoaHIpKQogICAgICAgICAgICAgICAgIHRpbGVJbWFnZSA9IHN1YkltYWdlOwogICAg
ICAgICB9CisgICAgICAgICovCiAgICAgfQogCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRt
YXA7CisgICAgSFJFU1VMVCBociA9IGNvbnRleHQtPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAo
dGlsZUltYWdlLmdldCgpLCBudWxscHRyLCAmYml0bWFwKTsKKyAgICBpZiAoIVNVQ0NFRURFRCho
cikpCisgICAgICAgIHJldHVybjsKKwogICAgIENPTVB0cjxJRDJEMUJpdG1hcEJydXNoPiBwYXR0
ZXJuQnJ1c2g7Ci0gICAgSFJFU1VMVCBociA9IGNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKHRp
bGVJbWFnZS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywg
JnBhdHRlcm5CcnVzaCk7CisgICAgaHIgPSBjb250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaChiaXRt
YXAuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0
ZXJuQnJ1c2gpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICAgICBpZiAoIVNVQ0NFRURF
RChocikpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlRGlyZWN0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShJRDJEMVJlbmRlclRhcmdldCopOworICAgIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShJRDJEMVJlbmRlclRhcmdldCosIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGUpOwogICAgIH5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUoKTsKIAogICAgIGVudW0gRGlyZWN0MkRMYXllclR5cGUgeyBBeGlzQWxpZ25lZENsaXAsIExh
eWVyQ2xpcCB9OwpAQCAtOTgsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb21wdXRl
U3Ryb2tlU3R5bGUoKTsKIAogICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9yZW5kZXJU
YXJnZXQ7CisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZSBtX3JlbmRlcmVyVHlwZTsKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDT01QdHI8SUQyRDFT
b2xpZENvbG9yQnJ1c2g+PiBtX3NvbGlkQ29sb3JlZEJydXNoQ2FjaGU7CiAgICAgQ09NUHRyPElE
MkQxU29saWRDb2xvckJydXNoPiBtX3doaXRlQnJ1c2g7CiAgICAgQ09NUHRyPElEMkQxU29saWRD
b2xvckJydXNoPiBtX3plcm9CcnVzaDsKQEAgLTEyNiw2ICsxMjcsOCBAQCBwcml2YXRlOgogICAg
IFN0cm9rZVN0eWxlIG1fc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAgIERhc2hBcnJh
eSBtX2Rhc2hlczsKIAorICAgIHVuc2lnbmVkIGJlZ2luRHJhd0NvdW50IHsgMCB9OworCiAgICAg
ZmxvYXQgbV9taXRlckxpbWl0IHsgMTAuMGYgfTsKICAgICBmbG9hdCBtX2Rhc2hPZmZzZXQgeyAw
IH07CiAgICAgZmxvYXQgbV9wYXR0ZXJuV2lkdGggeyAxLjBmIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShBbHBoYVByZW11bHRp
cGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29s
IC8qIGFjY2VsZXJhdGVSZW5kZXJpbmcgKi8sIGZsb2F0IC8qIHJlc29sdXRpb25TY2FsZSAqLykg
Y29uc3QKIHsKLSAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOwotCiAgICAgYXV0byBudW1CeXRlcyA9IHJlY3QuYXJlYTxSZWNvcmRPdmVyZmxvdz4o
KSAqIDQ7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01NSw0NyArNTMsMzEgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJ
bWFnZUJ1ZmZlckRhdAogICAgIGlmICghcmVzdWx0RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGVCb3R0
b21VcChzaXplKTsKLQotICAgIHZvaWQqIHBpeGVscyA9IG51bGxwdHI7Ci0gICAgYXV0byBiaXRt
YXAgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZURJQlNlY3Rpb24oMCwgJmJpdG1hcEluZm8sIERJ
Ql9SR0JfQ09MT1JTLCAmcGl4ZWxzLCAwLCAwKSk7Ci0KLSAgICBIV25kREMgd2luZG93REMobnVs
bHB0cik7Ci0gICAgYXV0byBiaXRtYXBEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0
aWJsZURDKHdpbmRvd0RDKSk7Ci0gICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVj
dChiaXRtYXBEQy5nZXQoKSwgYml0bWFwLmdldCgpKTsKLQotICAgIENPTVB0cjxJRDJEMUdkaUlu
dGVyb3BSZW5kZXJUYXJnZXQ+IGdkaVJlbmRlclRhcmdldDsKLSAgICBIUkVTVUxUIGhyID0gcGxh
dGZvcm1Db250ZXh0LT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJRDJEMUdkaUludGVyb3BSZW5k
ZXJUYXJnZXQpLCAodm9pZCoqKSZnZGlSZW5kZXJUYXJnZXQpOwotICAgIGlmIChGQUlMRUQoaHIp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEhEQyBoZGMgPSBudWxscHRyOwotICAg
IGhyID0gZ2RpUmVuZGVyVGFyZ2V0LT5HZXREQyhEMkQxX0RDX0lOSVRJQUxJWkVfTU9ERV9DT1BZ
LCAmaGRjKTsKKyAgICBXSUNSZWN0IHJjTG9jayA9IHsgMCwgMCwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpIH07CiAKLSAgICBCT09MIG9rID0gOjpCaXRCbHQoYml0bWFwREMuZ2V0KCksIDAs
IDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgaGRjLCByZWN0LngoKSwgcmVjdC55KCks
IFNSQ0NPUFkpOworICAgIC8vIFdlIGNhbm5vdCBhY2Nlc3MgdGhlIGRhdGEgYmFja2luZyBhbiBJ
V0lDQml0bWFwIHdoaWxlIGFuIGFjdGl2ZSBkcmF3IHNlc3Npb24gaXMgb3Blbi4KKyAgICBjb250
ZXh0LT5lbmREcmF3KCk7CiAKLSAgICBSRUNUIHVwZGF0ZVJlY3QgPSB7IDAsIDAsIDAsIDAgfTsK
LSAgICBociA9IGdkaVJlbmRlclRhcmdldC0+UmVsZWFzZURDKCZ1cGRhdGVSZWN0KTsKKyAgICBD
T01QdHI8SVdJQ0JpdG1hcExvY2s+IGJpdG1hcERhdGFMb2NrOworICAgIEhSRVNVTFQgaHIgPSBi
aXRtYXBTb3VyY2UtPkxvY2soJnJjTG9jaywgV0lDQml0bWFwTG9ja1JlYWQsICZiaXRtYXBEYXRh
TG9jayk7CisgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgVUlOVCBidWZmZXJTaXpl
ID0gMDsKKyAgICAgICAgV0lDSW5Qcm9jUG9pbnRlciBkYXRhUHRyID0gbnVsbHB0cjsKKyAgICAg
ICAgaHIgPSBiaXRtYXBEYXRhTG9jay0+R2V0RGF0YVBvaW50ZXIoJmJ1ZmZlclNpemUsICZkYXRh
UHRyKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikpCisgICAgICAgICAgICBtZW1jcHkocmVz
dWx0LT5kYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFQdHIpLCBudW1CeXRlcy51
bnNhZmVHZXQoKSk7CisgICAgfQogCi0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgLy8gT25jZSB3ZSBhcmUgZG9uZSBtb2RpZnlpbmcgdGhlIGRhdGEsIHVubG9jayB0
aGUgYml0bWFwCisgICAgYml0bWFwRGF0YUxvY2sgPSBudWxscHRyOwogCi0gICAgbWVtY3B5KHJl
c3VsdC0+ZGF0YSgpLCBwaXhlbHMsIG51bUJ5dGVzLnVuc2FmZUdldCgpKTsKKyAgICBjb250ZXh0
LT5iZWdpbkRyYXcoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gc291cmNlRm9ybWF0LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25z
dCBJbnRTaXplJiBzaXplLCBib29sIC8qIGFjY2VsZXJhdGVSZW5kZXJpbmcgKi8sIGZsb2F0IHJl
c29sdXRpb25TY2FsZSkKIHsKLSAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOwotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gcmVu
ZGVyVGFyZ2V0KFF1ZXJ5LCBwbGF0Zm9ybUNvbnRleHQpOwotICAgIGlmICghcmVuZGVyVGFyZ2V0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJpdG1hcDsKLSAg
ICBIUkVTVUxUIGhyID0gcmVuZGVyVGFyZ2V0LT5HZXRCaXRtYXAoJmJpdG1hcCk7Ci0gICAgQVNT
RVJUKFNVQ0NFRURFRChocikpOwotCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDAp
OwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CiAKQEAgLTEzMiw3ICsxMTQs
MzMgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludAogICAgIGlmICh3
aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBXZSBj
YW5ub3QgYWNjZXNzIHRoZSBkYXRhIGJhY2tpbmcgYW4gSVdJQ0JpdG1hcCB3aGlsZSBhbiBhY3Rp
dmUgZHJhdyBzZXNzaW9uIGlzIG9wZW4uCisgICAgY29udGV4dC0+ZW5kRHJhdygpOworCisgICAg
V0lDUmVjdCByY0xvY2sgPSB7IDAsIDAsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5o
ZWlnaHQoKSB9OworCisgICAgQ09NUHRyPElXSUNCaXRtYXBMb2NrPiBiaXRtYXBEYXRhTG9jazsK
KyAgICBIUkVTVUxUIGhyID0gYml0bWFwU291cmNlLT5Mb2NrKCZyY0xvY2ssIFdJQ0JpdG1hcExv
Y2tXcml0ZSwgJmJpdG1hcERhdGFMb2NrKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAg
ICAgIHJldHVybjsKKworICAgIFVJTlQgc3RyaWRlID0gMDsKKyAgICBociA9IGJpdG1hcERhdGFM
b2NrLT5HZXRTdHJpZGUoJnN0cmlkZSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBVSU5UIGJ1ZmZlclNpemUgPSAwOworICAgIFdJQ0luUHJvY1BvaW50
ZXIgZGF0YVB0ciA9IG51bGxwdHI7CisgICAgaHIgPSBiaXRtYXBEYXRhTG9jay0+R2V0RGF0YVBv
aW50ZXIoJmJ1ZmZlclNpemUsICZkYXRhUHRyKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChidWZmZXJTaXplID09IHNvdXJjZS5ieXRlTGVu
Z3RoKCkpOworCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53
aWR0aCgpOworCisgICAgQVNTRVJUKHNyY0J5dGVzUGVyUm93ID09IHN0cmlkZSk7CisKICAgICBj
b25zdCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlLmRhdGEoKSArIChvcmlnaW55ICogc3JjQnl0
ZXNQZXJSb3cgKyBvcmlnaW54ICogNCkudW5zYWZlR2V0KCk7CiAKICAgICBhdXRvIHJvdyA9IG1h
a2VVbmlxdWVBcnJheTx1aW50OF90PihzcmNCeXRlc1BlclJvdyk7CkBAIC0xNTAsMTIgKzE1OCwx
NSBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25zdCBVaW50CiAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHJvdy5nZXQoKSArIGJhc2V4KVswXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwog
ICAgICAgICB9CiAKLSAgICAgICAgRDJEMV9SRUNUX1UgZHN0UmVjdCA9IEQyRDE6OlJlY3RVKGRl
c3RQb2ludC54KCksIGRlc3RQb2ludC55KCkgKyB5LCBkZXN0UG9pbnQueCgpICsgc2l6ZS53aWR0
aCgpLCBkZXN0UG9pbnQueSgpICsgeSArIDEpOwotICAgICAgICBociA9IGJpdG1hcC0+Q29weUZy
b21NZW1vcnkoJmRzdFJlY3QsIHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwotICAgICAgICBB
U1NFUlQoU1VDQ0VFREVEKGhyKSk7CisgICAgICAgIG1lbWNweShyZWludGVycHJldF9jYXN0PGNo
YXIqPihkYXRhUHRyICsgeSAqIHNyY0J5dGVzUGVyUm93KSwgcm93LmdldCgpLCBzcmNCeXRlc1Bl
clJvdyk7CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICB9CisKKyAg
ICAvLyBPbmNlIHdlIGFyZSBkb25lIG1vZGlmeWluZyB0aGUgZGF0YSwgdW5sb2NrIHRoZSBiaXRt
YXAKKyAgICBiaXRtYXBEYXRhTG9jayA9IG51bGxwdHI7CisKKyAgICBjb250ZXh0LT5iZWdpbkRy
YXcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0
YURpcmVjdDJELmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSw5IEBAIHN0cnVjdCBJbWFnZUJ1ZmZlckRhdGEgewogICAgIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJvdzsKIAogICAgIC8vIE9ubHkgZm9yIHNv
ZnR3YXJlIEltYWdlQnVmZmVycy4KLSAgICB2b2lkKiBkYXRhIHsgbnVsbHB0ciB9OworICAgIFZl
Y3RvcjxjaGFyPiBkYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQ7Ci0gICAgSUQyRDFSZW5kZXJUYXJnZXQqIG1fY29tcGF0aWJsZVRhcmdldCB7IG51bGxw
dHIgfTsKKyAgICBDT01QdHI8SVdJQ0JpdG1hcD4gYml0bWFwU291cmNlOwogCiAgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUpIGNvbnN0OwogICAgIHZvaWQgcHV0RGF0YShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEg
KzMyLDEzIEBACiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1
ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3aW5jb2RlYy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KQEAgLTYyLDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcgogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IGNvbnRl
eHQucmVuZGVyaW5nTW9kZSgpOwogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVy
Ojpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsKICAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihuZXcgSW1h
Z2VCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgQ29sb3JTcGFjZVNSR0IsIHJlbmRlcmluZ01vZGUsIG51
bGxwdHIsICZjb250ZXh0LCBzdWNjZXNzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNjYWxlZFNpemUsIDEsIENvbG9yU3BhY2VTUkdC
LCByZW5kZXJpbmdNb2RlLCBudWxscHRyLCBzdWNjZXNzKSk7CiAKICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzIsNyArNzQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIC8qY29sb3JTcGFjZSovLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdl
dENvbnRleHQsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgLypjb2xv
clNwYWNlKi8sIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyos
IGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2xvZ2ljYWxTaXplKHNpemUpCiAgICAgLCBtX3Jlc29s
dXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCiB7CkBAIC05NywyOSArOTksMjcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogICAgIGlmIChudW1CeXRlcy5oYXNP
dmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0g
dGFyZ2V0Q29udGV4dCA/IHRhcmdldENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogbnVsbHB0
cjsKLSAgICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmVuZGVyVGFyZ2V0ID0gR3JhcGhp
Y3NDb250ZXh0OjpkZWZhdWx0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVu
ZGVyVGFyZ2V0KTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFw
Q29udGV4dDsKLSAgICBEMkQxX1NJWkVfRiBkZXNpcmVkU2l6ZSA9IEZsb2F0U2l6ZShtX2xvZ2lj
YWxTaXplKTsKLSAgICBEMkQxX1NJWkVfVSBwaXhlbFNpemUgPSBJbnRTaXplKG1fbG9naWNhbFNp
emUpOwotICAgIEhSRVNVTFQgaHIgPSByZW5kZXJUYXJnZXQtPkNyZWF0ZUNvbXBhdGlibGVSZW5k
ZXJUYXJnZXQoJmRlc2lyZWRTaXplLCAmcGl4ZWxTaXplLCBudWxscHRyLCBEMkQxX0NPTVBBVElC
TEVfUkVOREVSX1RBUkdFVF9PUFRJT05TX0dESV9DT01QQVRJQkxFLCAmYml0bWFwQ29udGV4dCk7
CisgICAgbV9kYXRhLmRhdGEgPSBWZWN0b3I8Y2hhcj4obnVtQnl0ZXMudW5zYWZlR2V0KCksIDAp
OworCisgICAgSFJFU1VMVCBociA9IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5n
RmFjdG9yeSgpLT5DcmVhdGVCaXRtYXBGcm9tTWVtb3J5KG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCksIEdVSURfV0lDUGl4ZWxGb3JtYXQzMmJwcFBCR1JBLCBzdGF0aWNfY2FzdDxVSU5U
PihtX2RhdGEuYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkpLCBzdGF0aWNfY2FzdDxVSU5UPihudW1C
eXRlcy51bnNhZmVHZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KG1fZGF0YS5kYXRhLmRh
dGEoKSksICZtX2RhdGEuYml0bWFwU291cmNlKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRl
clRhcmdldFByb3BlcnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKKyAgICAg
ICAgRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQ
SEFfTU9ERV9QUkVNVUxUSVBMSUVEKSwKKyAgICAgICAgMCwgMCwgRDJEMV9SRU5ERVJfVEFSR0VU
X1VTQUdFX05PTkUsIEQyRDFfRkVBVFVSRV9MRVZFTF9ERUZBVUxUKTsKKworICAgIENPTVB0cjxJ
RDJEMVJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dDsKKyAgICBociA9IEdyYXBoaWNzQ29udGV4
dDo6c3lzdGVtRmFjdG9yeSgpLT5DcmVhdGVXaWNCaXRtYXBSZW5kZXJUYXJnZXQobV9kYXRhLmJp
dG1hcFNvdXJjZS5nZXQoKSwgJnRhcmdldFByb3BlcnRpZXMsICZiaXRtYXBDb250ZXh0KTsKICAg
ICBpZiAoIWJpdG1hcENvbnRleHQgfHwgIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsK
IAorICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250ZXh0IGludG8gYSBsb2Nr
ZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9y
LgogICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KGJpdG1hcENvbnRleHQuZ2V0KCkpOwotICAgIG1fZGF0YS5tX2NvbXBhdGlibGVUYXJnZXQgPSBy
ZW5kZXJUYXJnZXQ7CiAKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIAotSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2VzcykKLSAgICA6IEltYWdlQnVmZmVyKHNpemUs
IHJlc29sdXRpb25TY2FsZSwgaW1hZ2VDb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBudWxscHRy
LCBudWxscHRyLCBzdWNjZXNzKQotewotfQotCiBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkg
PSBkZWZhdWx0OwogCiBGbG9hdFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNp
emUoRmxvYXRTaXplIGRlc3RpbmF0aW9uU2l6ZSkgY29uc3QKQEAgLTEzNywyMyArMTM3LDIzIEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiAgICAgY29udGV4dCgpLmZs
dXNoKCk7CiB9CiAKLXN0YXRpYyBDT01QdHI8SUQyRDFCaXRtYXA+IGNyZWF0ZUNyb3BwZWRJbWFn
ZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQor
c3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJ
V0lDQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogewotICAgIEZsb2F0U2l6
ZSBpbWFnZVNpemUgPSBpbWFnZSA/IGltYWdlLT5HZXRTaXplKCkgOiBGbG9hdFNpemUoKTsKKyAg
ICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpIDog
RmxvYXRTaXplKCk7CiAKICAgICBpZiAoaW1hZ2UgJiYgKHN0YXRpY19jYXN0PHNpemVfdD4oaW1h
Z2VTaXplLndpZHRoKCkpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYm91bmRzLndpZHRoKCkpIHx8
IHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VTaXplLmhlaWdodCgpKSAhPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGJvdW5kcy5oZWlnaHQoKSkpKSB7CiAgICAgICAgIEQyRF9QT0lOVF8yVSBvcmlnaW4g
PSB7IH07CiAgICAgICAgIEQyRDFfUkVDVF9VIGNyb3BwZWREaW1lbnN0aW9ucyA9IEludFJlY3Qo
SW50UG9pbnQoKSwgYm91bmRzKTsKICAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBjcm9wcGVk
SW1hZ2U7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBjcm9wcGVkSW1hZ2UtPkNvcHlGcm9tQml0bWFw
KCZvcmlnaW4sIGltYWdlLCAmY3JvcHBlZERpbWVuc3Rpb25zKTsKLSAgICAgICAgaWYgKFNVQ0NF
RURFRChocikpCi0gICAgICAgICAgICByZXR1cm4gY3JvcHBlZEltYWdlOworICAgICAgICAvLyBG
SVhNRTogSFJFU1VMVCBociA9IGNyb3BwZWRJbWFnZS0+Q29weUZyb21CaXRtYXAoJm9yaWdpbiwg
aW1hZ2UsICZjcm9wcGVkRGltZW5zdGlvbnMpOworICAgICAgICAvLyBpZiAoU1VDQ0VFREVEKGhy
KSkKKyAgICAgICAgLy8gICAgIHJldHVybiBjcm9wcGVkSW1hZ2U7CiAgICAgfQogCiAgICAgcmV0
dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFm
dGVyU2NhbGluZ0lmTmVlZGVkKENPTVB0cjxJRDJEMUJpdG1hcD4mJiBpbWFnZSwgSW50U2l6ZSBp
bnRlcm5hbFNpemUsIEludFNpemUgbG9naWNhbFNpemUsIEludFNpemUgYmFja2luZ1N0b3JlU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxp
bmdJZk5lZWRlZChDT01QdHI8SVdJQ0JpdG1hcD4mJiBpbWFnZSwgSW50U2l6ZSBpbnRlcm5hbFNp
emUsIEludFNpemUgbG9naWNhbFNpemUsIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQog
ewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0g
UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSk7CkBAIC0xNzAsNyArMTcw
LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZgogCiBSZWZQdHI8
SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAg
Q09NUHRyPElEMkQxQml0bWFwPiBpbWFnZTsKKyAgICBDT01QdHI8SVdJQ0JpdG1hcD4gaW1hZ2U7
CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09
IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTE5NCwzMSArMTk0LDMxIEBAIEJhY2tpbmdT
dG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW0KICAgICByZXR1cm4gRG9udENvcHlCYWNr
aW5nU3RvcmU7CiB9CiAKLUNPTVB0cjxJRDJEMUJpdG1hcD4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
TmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKK0NP
TVB0cjxJV0lDQml0bWFwPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBTZWUg
aWYgd2UgY2FuIHJldXNlIHRoZSBvbi1oYXJkd2FyZSBpbWFnZS4KICAgICByZXR1cm4gaW1hZ2VC
dWZmZXItPmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CiAKLUNPTVB0
cjxJRDJEMUJpdG1hcD4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK0NPTVB0cjxJV0lDQml0bWFwPiBJbWFnZUJ1ZmZlcjo6
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewot
ICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRl
clRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0KLSAgICBDT01QdHI8SUQy
RDFCaXRtYXA+IGltYWdlOwotICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBUYXJnZXQtPkdldEJpdG1h
cCgmaW1hZ2UpOwotICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLQogICAgIC8vIEZJWE1FOiBt
X2RhdGEuZGF0YSBpcyBudWxscHRyIGV2ZW4gd2hlbiBhc2tpbmcgdG8gY29weSBiYWNraW5nIHN0
b3JlIGxlYWRpbmcgdG8gdGVzdCBmYWlsdXJlcy4KLSAgICBpZiAoY29weUJlaGF2aW9yID09IENv
cHlCYWNraW5nU3RvcmUgJiYgIW1fZGF0YS5kYXRhKQorICAgIGlmIChjb3B5QmVoYXZpb3IgPT0g
Q29weUJhY2tpbmdTdG9yZSAmJiBtX2RhdGEuZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIGNvcHlC
ZWhhdmlvciA9IERvbnRDb3B5QmFja2luZ1N0b3JlOwogCisgICAgQ2hlY2tlZDxzaXplX3QsIFJl
Y29yZE92ZXJmbG93PiBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSkgKiBtX2RhdGEuYnl0ZXNQZXJSb3c7
CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICBDT01QdHI8SVdJQ0JpdG1hcD4gaW1h
Z2U7CiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAg
ICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0
b3JlOgorICAgICAgICAgICAgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2lu
Z0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFwRnJvbVNvdXJjZShtX2RhdGEuYml0bWFwU291cmNlLmdl
dCgpLCBXSUNCaXRtYXBOb0NhY2hlLCAmaW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIEQyRDFfUkVDVF9VIGJhY2tp
bmdTdG9yZURpbWVuc3Rpb25zID0gSW50UmVjdChJbnRQb2ludCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSk7Ci0gICAgICAgICAgICBpbWFnZS0+Q29weUZyb21NZW1vcnkoJmJhY2tpbmdTdG9y
ZURpbWVuc3Rpb25zLCBtX2RhdGEuZGF0YSwgMzIpOworICAgICAgICAgICAgaHIgPSBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFwRnJvbVNv
dXJjZShtX2RhdGEuYml0bWFwU291cmNlLmdldCgpLCBXSUNCaXRtYXBDYWNoZU9uRGVtYW5kLCAm
aW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0MCwzMCArMjQwLDE3IEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmkKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQogewotICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJ
RDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0g
ICAgYXV0byBvdXRwdXRUYXJnZXQgPSBkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAg
ICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKKyAgICBhZGp1c3RlZFNyY1Jl
Y3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gaW1hZ2U7Ci0gICAgSFJFU1VMVCBociA9IGJpdG1hcFRhcmdldC0+
R2V0Qml0bWFwKCZpbWFnZSk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1
cm47CisgICAgRmxvYXRTaXplIGN1cnJlbnRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobV9k
YXRhLmJpdG1hcFNvdXJjZSk7CiAKLSAgICAvLyBJZiB0aGUgcmVuZGVyIHRhcmdldHMgZm9yIHRo
ZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGNvbnRleHRzIGRvIG5vdCBtYXRjaCwgbW92ZSB0aGUg
aW1hZ2Ugb3Zlci4KLSAgICBpZiAoZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgIT0gbV9k
YXRhLm1fY29tcGF0aWJsZVRhcmdldCkgewotICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IHNv
dXJjZUltYWdlID0gaW1hZ2U7Ci0gICAgICAgIGltYWdlID0gbnVsbHB0cjsKLQotICAgICAgICBh
dXRvIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBQcm9wZXJ0aWVzKCk7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgpLT5HZXREZXNrdG9wRHBpKCZiaXRtYXBQ
cm9wZXJ0aWVzLmRwaVgsICZiaXRtYXBQcm9wZXJ0aWVzLmRwaVkpOwotICAgICAgICBociA9IG91
dHB1dFRhcmdldC0+Q3JlYXRlU2hhcmVkQml0bWFwKF9fdXVpZG9mKElEMkQxQml0bWFwKSwgc291
cmNlSW1hZ2UuZ2V0KCksICZiaXRtYXBQcm9wZXJ0aWVzLCAmaW1hZ2UpOwotICAgICAgICBpZiAo
IVNVQ0NFRURFRChocikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIC8vIFlvdSBj
YW4ndCBjb252ZXJ0IGEgSVdJQ0JpdG1hcCB0byBhIElEMkQxQml0bWFwIHdpdGggYW4gYWN0aXZl
IEdyYXBoaWNzQ29udGV4dCBhdHRhY2hlZCB0byBpdC4KKyAgICBtX2RhdGEuY29udGV4dC0+ZW5k
RHJhdygpOwogCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAg
YWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2Fs
ZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fZGF0YS5iaXRtYXBTb3VyY2Us
IGN1cnJlbnRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUpOwogCi0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZS0+R2V0
U2l6ZSgpLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBt
X2RhdGEuY29udGV4dC0+YmVnaW5EcmF3KCk7CiAKICAgICBkZXN0Q29udGV4dC5mbHVzaCgpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbWFnZURlY29kZXJE
aXJlY3QyRDo6c2V0VGFyZ2V0Q29udAogCiBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7Ci0gICAgaWYg
KCFtX25hdGl2ZURlY29kZXIgfHwgIW1fcmVuZGVyVGFyZ2V0KQorICAgIGlmICghbV9uYXRpdmVE
ZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENPTVB0cjxJV0lDQml0bWFw
RnJhbWVEZWNvZGU+IGZyYW1lOwpAQCAtMjQ5LDEyICsyNDksMTIgQEAgTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBociA9IGNvbnZlcnRlci0+SW5pdGlhbGl6ZShmcmFt
ZS5nZXQoKSwgR1VJRF9XSUNQaXhlbEZvcm1hdDMyYnBwUEJHUkEsIFdJQ0JpdG1hcERpdGhlclR5
cGVOb25lLCBudWxscHRyLCAwLmYsIFdJQ0JpdG1hcFBhbGV0dGVUeXBlQ3VzdG9tKTsKKyAgICBo
ciA9IGNvbnZlcnRlci0+SW5pdGlhbGl6ZShmcmFtZS5nZXQoKSwgR1VJRF9XSUNQaXhlbEZvcm1h
dDMyYnBwUFJHQkEsIFdJQ0JpdG1hcERpdGhlclR5cGVOb25lLCBudWxscHRyLCAwLmYsIFdJQ0Jp
dG1hcFBhbGV0dGVUeXBlQ3VzdG9tKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7Ci0gICAg
aHIgPSBtX3JlbmRlclRhcmdldC0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1hcChjb252ZXJ0ZXIu
Z2V0KCksIG51bGxwdHIsICZiaXRtYXApOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBiaXRtYXA7
CisgICAgaHIgPSBzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVCaXRtYXBGcm9tU291cmNl
KGNvbnZlcnRlci5nZXQoKSwgV0lDQml0bWFwQ2FjaGVPbkRlbWFuZCwgJmJpdG1hcCk7CiAgICAg
aWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVj
dDJELmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3Nyw4
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICBzaXplX3Qg
ZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVz
OyArK2kpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgp
OwotICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7Ci0gICAgICAgIGlm
IChpbWFnZSAmJiBjbGFtcFRvPHNpemVfdD4oaW1hZ2VTaXplLmhlaWdodCkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjbGFtcFRvPHNpemVfdD4oaW1hZ2VTaXpl
LndpZHRoKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAg
ICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgICAgICBpZiAo
aW1hZ2UgJiYgY2xhbXBUbzxpbnQ+KGltYWdlU2l6ZS5oZWlnaHQoKSkgPT0gc3RhdGljX2Nhc3Q8
aW50PihzcmNTaXplLmhlaWdodCgpKSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLndpZHRoKCkp
ID09IHN0YXRpY19jYXN0PGludD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6
ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3As
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZp
c2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwzNSBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdp
bmNvZGVjLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIElXSUNJbWFnaW5nRmFj
dG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3Rvcnkq
IGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdpbmdGYWN0b3J5KSB7Cisg
ICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0ltYWdpbmdGYWN0
b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdTKCZpbWFnaW5n
RmFjdG9yeSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Cit9CisKIEludFNpemUgbmF0aXZlSW1hZ2VT
aXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBJ
bnRTaXplKGltYWdlLT5HZXRTaXplKCkpIDogSW50U2l6ZSgpOworICAgIFVJTlQgd2lkdGggPSAw
OworICAgIFVJTlQgaGVpZ2h0ID0gMDsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgSFJFU1VMVCBociA9IGltYWdlLT5HZXRTaXplKCZ3aWR0aCwgJmhlaWdodCk7
CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0
dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBo
YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCkBAIC00Niw4ICs2OCwyOCBAQCBib29sIG5h
dGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hCiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBhbHBoYU1vZGUgPSBpbWFnZS0+R2V0UGl4ZWxG
b3JtYXQoKS5hbHBoYU1vZGU7Ci0gICAgcmV0dXJuIChhbHBoYU1vZGUgPj0gRDJEMV9BTFBIQV9N
T0RFX1BSRU1VTFRJUExJRUQpICYmIChhbHBoYU1vZGUgPD0gRDJEMV9BTFBIQV9NT0RFX1NUUkFJ
R0hUKTsKKyAgICBXSUNQaXhlbEZvcm1hdEdVSUQgcGl4ZWxGb3JtYXRHVUlEID0geyB9OworICAg
IEhSRVNVTFQgaHIgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoJnBpeGVsRm9ybWF0R1VJRCk7Cisg
ICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGp1c3QgY2hlY2sgdGhlIHBpeGVsRm9ybWF0R1VJRCBmb3IgcmVsZXZh
bnQgSUQncyB3ZSB1c2U/CisKKyAgICBDT01QdHI8SVdJQ0NvbXBvbmVudEluZm8+IGNvbXBvbmVu
dEluZm87CisgICAgaHIgPSBpbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVDb21wb25lbnRJbmZvKHBp
eGVsRm9ybWF0R1VJRCwgJmNvbXBvbmVudEluZm8pOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ09NUHRyPElXSUNQaXhlbEZvcm1hdEluZm8+
IHBpeGVsRm9ybWF0SW5mbyhRdWVyeSwgY29tcG9uZW50SW5mby5nZXQoKSk7CisgICAgaWYgKCFw
aXhlbEZvcm1hdEluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFVJTlQgY2hhbm5l
bENvdW50ID0gMDsKKyAgICBociA9IHBpeGVsRm9ybWF0SW5mby0+R2V0Q2hhbm5lbENvdW50KCZj
aGFubmVsQ291bnQpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGNoYW5uZWxDb3VudCA+IDM7CiB9CiAKIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKQEAg
LTc0LDcgKzExNiwxMiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gMS4wZjsKIAotICAgIHBsYXRmb3JtQ29udGV4dC0+RHJh
d0JpdG1hcChpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQyRDFfQklUTUFQX0lOVEVS
UE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNyY1JlY3QpOworICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRl
eHQtPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAoaW1hZ2UuZ2V0KCksICZiaXRtYXApOworICAg
IGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1Db250
ZXh0LT5EcmF3Qml0bWFwKGJpdG1hcC5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQyRDFfQklU
TUFQX0lOVEVSUE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNyY1JlY3Qp
OwogICAgIGNvbnRleHQuZmx1c2goKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0
NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0
MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBQYXRoOjpzdHJv
a2VDb250YWlucyhTdHJva2VTdHlsZUFwcAogCiAgICAgQVNTRVJUKGFwcGxpZXIpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJUYXJnZXQoKSk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJUYXJnZXQoKSwg
R3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsK
ICAgICBhcHBsaWVyLT5zdHJva2VTdHlsZSgmc2NyYXRjaENvbnRleHQpOwogCiAgICAgQk9PTCBj
b250YWluc1BvaW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ3
NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDE1IEBAIElEMkQxQml0bWFwQnJ1
c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3IKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1Db250
ZXh0KTsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXR0ZXJuSW1hZ2UubmF0aXZlSW1hZ2Uo
JmNvbnRleHQpOworCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7CisgICAgSFJFU1VM
VCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1hcChuYXRpdmVJ
bWFnZS5nZXQoKSwgJmJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5CcnVzaCA9IG51
bGxwdHI7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1
c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNo
UHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgaHIgPSBw
bGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKGJpdG1hcC5nZXQoKSwgJmJpdG1hcEJy
dXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNT
RVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lv
biAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw4ICszNTUsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZEZpbGVSZWFkCiAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGxpc3QtPnZh
bHVlKQogICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKICNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJlYWRlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
eyB9OworICAgIHJldHVybjsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMSwxMiArMzMxLDggQEAg
dm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogCiAgICAgSW50U2l6ZSBs
b2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBpZiAoIXNv
dXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6
ZSkgewotI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwg
ZmlsdGVyU2NhbGUoKSkpOwotI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldENvbnRl
eHQpOwogICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCByZW5kZXJpbmdNb2RlKCksIGZpbHRlclNjYWxlKCkpKTsKLSNlbmRpZgogICAgIH0KICAg
ICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDMyLDcgKzIwMzIsNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmNoZWNrRm9yUmVwYWludER1
cmluCiAKIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJFbGVtZW50OjpzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICAvLyBU
aGlzIGNhbiBvbmx5IGJlIGVuYWJsZWQgZm9yIHBvcnRzIHdoaWNoIGhvbm9yIHRoZSBvcmllbnRh
dGlvbiBmbGFnIGluIHRoZWlyIGRyYXdpbmcgY29kZS4KICAgICBpZiAoZG9jdW1lbnQoKS5pc0lt
YWdlRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDggQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdFRpbGVkQmFjawogewogICAgIGlmIChtX2lzRnJhbWVM
YXllcldpdGhUaWxlZEJhY2tpbmcpIHsKICAgICAgICAgYXV0byB0aWxlQ292ZXJhZ2UgPSBjb21w
dXRlUGFnZVRpbGVkQmFja2luZ0NvdmVyYWdlKG1fb3duaW5nTGF5ZXIpOwotICAgICAgICB0aWxl
ZEJhY2tpbmcoKS0+c2V0VGlsZUNvdmVyYWdlKHRpbGVDb3ZlcmFnZSk7CisgICAgICAgIGlmIChh
dXRvKiB0aWxlZEJhY2tpbmcgPSB0aGlzLT50aWxlZEJhY2tpbmcoKSkKKyAgICAgICAgICAgIHRp
bGVkQmFja2luZy0+c2V0VGlsZUNvdmVyYWdlKHRpbGVDb3ZlcmFnZSk7CiAgICAgfQogCiAgICAg
aWYgKG1fb3duaW5nTGF5ZXIuaGFzQ29tcG9zaXRlZFNjcm9sbGFibGVPdmVyZmxvdygpICYmIG1f
c2Nyb2xsZWRDb250ZW50c0xheWVyKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0NzQzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMiArMjQ1LDggQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBTVkdSZW5kZXJpbgogICAgIEZsb2F0U2l6ZSBzY2FsZTsKICAgICBGbG9hdFNpemUg
Y2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocGFpbnRSZWN0LnNpemUoKSwg
c2NhbGUpOwogCi0jaWYgVVNFKERJUkVDVDJEKQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0LCAxLCBj
b2xvclNwYWNlKTsKLSNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdN
b2RlLCAxLCBjb2xvclNwYWNlKTsKLSNlbmRpZgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNzIsMTIgKzI2OCw4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW4KICAgICBpZiAoY2xhbXBlZFNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotI2lmIFVTRShESVJFQ1QyRCkKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5n
TW9kZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7Ci0jZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFt
cGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSk7Ci0jZW5kaWYKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw2ICs2OCw3IEBACiAKICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCisj
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKICNpbmNsdWRlIDxkMmQxLmg+CiAjZW5k
aWYKIApAQCAtMjMyLDIyICsyMzMsMjUgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKGNvbgogICAgIGlmICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gdGFyZ2V0Q29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgQVNTRVJUKHBsYXRmb3JtQ29udGV4dCk7CisgICAg
Q09NUHRyPElXSUNCaXRtYXA+IG5hdGl2ZUltYWdlOworICAgIEhSRVNVTFQgaHIgPSBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFwKHJlY3Qo
KS53aWR0aCgpLCByZWN0KCkuaGVpZ2h0KCksIEdVSURfV0lDUGl4ZWxGb3JtYXQzMmJwcFBSR0JB
LCBXSUNCaXRtYXBDYWNoZU9uTG9hZCwgJm5hdGl2ZUltYWdlKTsKKyAgICBpZiAoIVNVQ0NFRURF
RChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0YXJnZXRQcm9wZXJ0
aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9UQVJHRVRfVFlQ
RV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAgICAwLCAwLCBE
MkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFUVVJFX0xFVkVMX0RFRkFVTFQp
OwogCiAgICAgLy8gRHJhdyB0aGUgU1ZHIGludG8gYSBiaXRtYXAuCi0gICAgQ09NUHRyPElEMkQx
Qml0bWFwUmVuZGVyVGFyZ2V0PiBuYXRpdmVJbWFnZVRhcmdldDsKLSAgICBIUkVTVUxUIGhyID0g
cGxhdGZvcm1Db250ZXh0LT5DcmVhdGVDb21wYXRpYmxlUmVuZGVyVGFyZ2V0KEludFNpemUocmVj
dCgpLnNpemUoKSksICZuYXRpdmVJbWFnZVRhcmdldCk7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbmF0aXZlSW1hZ2VUYXJnZXQ7Cisg
ICAgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlV2ljQml0bWFw
UmVuZGVyVGFyZ2V0KG5hdGl2ZUltYWdlLmdldCgpLCAmdGFyZ2V0UHJvcGVydGllcywgJm5hdGl2
ZUltYWdlVGFyZ2V0KTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlVGFyZ2V0IHx8ICFTVUNDRUVERUQo
aHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkNQVU1lbW9yeSk7CiAKICAgICBkcmF3KGxvY2FsQ29u
dGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CiAKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IG5hdGl2ZUltYWdlOwotICAgIGhyID0g
bmF0aXZlSW1hZ2VUYXJnZXQtPkdldEJpdG1hcCgmbmF0aXZlSW1hZ2UpOwotICAgIEFTU0VSVChT
VUNDRUVERUQoaHIpKTsKLQogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374824</attachid>
            <date>2019-07-24 16:08:56 -0700</date>
            <delta_ts>2019-07-24 19:53:01 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-200093-20190724160851.patch</filename>
            <type>text/plain</type>
            <size>67208</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wNy0yNCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSVdJQ0JpdG1hcCAo
cmF0aGVyIHRoYW4gSUQyRDFCaXRtYXApIGZvciBOYXRpdmVJbWFnZVB0ciBvbiBGVFcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gSSB3cm90ZSB0
aGUgb3JpZ2luYWwgRGlyZWN0MkQgY29kZSwgSSBkaWQgbm90IHJlYWxpemUgdGhhdCB0aGUgYmFj
a2luZyBtZW1vcnkgZm9yIHRoZQorICAgICAgICBJRDJEMUJpdG1hcCB3YXMgaW5hY2Nlc3NpYmxl
IHNpbmNlIGl0IGlzIGVmZmVjdGl2ZWx5IGEgcmVwcmVzZW50YXRpb24gb2YgR1BVIG1lbW9yeS4g
VGhlcmUKKyAgICAgICAgaXMgbm8gQVBJIHRvIGFjY2VzcyBvciBtb2RpZnkgdGhlIHBpeGVscy4K
KworICAgICAgICBJbnN0ZWFkLCBNU0ROIGRvY3VtZW50YXRpb24gaW5kaWNhdGVzIHRoYXQgd2Ug
c2hvdWxkIGJlIHVzaW5nIElXSUNCaXRtYXAgb2JqZWN0cywgd2hpY2ggYXJlCisgICAgICAgIGNv
bnZlcnRlZCB0byBJRDJEMUJpdG1hcCBvYmplY3RzIHdoZW4gdGhpbmdzIGFyZSByZWFkeSB0byBi
ZSByZW5kZXJlZC4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUg
VGV4dHVyZU1hcHBlciBiYWNrZW5kIHRvIGRvIGVmZmljaWVudCBjb21wb3NpdGluZyBhbmQgdGls
ZQorICAgICAgICBkcmF3aW5nLCBzaW5jZSB0aGUgZGF0YSBiYWNraW5nIHRoZSBiaXRtYXAgY2Fu
IG5vdyBiZSBhY2Nlc3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFsbG93aW5nIHVzCisgICAgICAgIHRv
IHN1cHBvcnQgZmlsdGVycyBhbmQgb3RoZXIgZWZmZWN0cy4KKworICAgICAgICAqIFBsYXRmb3Jt
RlRXLmNtYWtlOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6SW1hZ2VFeHRyYWN0b3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdM
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdEZXZpY2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6bmF0aXZlSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorCiAyMDE5LTA3LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaWx0ZXIgU0RQIGMgbGluZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRX
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIGluY2x1ZGUocGxhdGZvcm0vQ3VybC5jbWFrZSkK
IGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVycy5jbWFrZSkKLSMgRklYTUU6IEVuYWJsZQot
IyBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UpCitpbmNsdWRlKHBsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7RGlyZWN0WF9JTkNMVURFX0RJUlN9IgpAQCAtMTQsMzgg
KzEzLDE3NCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvd2luIgotICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iKQorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCispCisKK2xpc3QoQVBQRU5EIFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzIgorKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBhY2Nlc3Np
YmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAorICAgIGFjY2Vzc2liaWxpdHkvd2luL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwCisgICAgYWNjZXNzaWJpbGl0eS93aW4vQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwCisKKyAgICBlZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3Bw
CisKKyAgICBodG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcAorCisgICAgcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCisgICAgcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorICAg
IHBhZ2Uvd2luL0ZyYW1lV2luLmNwcAogICAgIHBhZ2Uvd2luL0ZyYW1lV2luRGlyZWN0MkQuY3Bw
CiAKKyAgICBwbGF0Zm9ybS9DdXJzb3IuY3BwCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKKyAgICBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorCisgICAgcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorCisgICAgcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKKworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckRpcmVjdFdyaXRlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9ESUJQaXhlbERhdGEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UG9p
bnREaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRmxvYXRSZWN0RGlyZWN0
MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0U2l6ZURpcmVjdDJELmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFdpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVEaXJl
Y3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJEaXJlY3QyRC5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbnRQb2ludFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50
UmVjdFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50U2l6ZVdpbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBs
ZUZvbnREYXRhRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFs
eXplckhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRpb25N
YXRyaXhEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRp
b25NYXRyaXhXaW4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRy
b2xsZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9DdXJsU1NMSGFuZGxlV2luLmNw
cAorICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNwcAogCisgICAgcGxh
dGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCiAKKyAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKyAgICBwbGF0Zm9ybS93aW4v
Qml0bWFwSW5mby5jcHAKKyAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0RlZldu
ZFByb2NXaW5kb3dDbGFzcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vRGVsYXlMb2FkZWRNb2R1bGVz
RW51bWVyYXRvci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxh
dGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAorICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAKKyAgICBwbGF0Zm9y
bS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVz
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9JbXBvcnRlZEZ1bmN0aW9uc0VudW1lcmF0b3IuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL0ltcG9ydGVkTW9kdWxlc0VudW1lcmF0b3IuY3BwCisgICAgcGxhdGZv
cm0vd2luL0tleUV2ZW50V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAorICAgIHBsYXRmb3JtL3dp
bi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hh
cmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BFSW1hZ2UuY3BwCisgICAgcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VF
dmVudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU1NMS2V5R2Vu
ZXJhdG9yV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKyAg
ICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisgICAgcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9TdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3Iu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCisgICAgcGxhdGZvcm0vd2luL1Vz
ZXJBZ2VudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorICAgIHBs
YXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9XZWJDb3Jl
SW5zdGFuY2VIYW5kbGUuY3BwCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2lu
L1dpZGdldFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV2luZG93TWVzc2FnZUJyb2FkY2FzdGVy
LmNwcAorCisgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKQorCitsaXN0KEFQUEVO
RCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKKyAgICBhY2Nlc3NpYmlsaXR5L3dp
bi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oCisKKyAgICBwYWdlL3dpbi9GcmFtZVdp
bi5oCisKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudC5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaGFyZWRHRElPYmplY3QuaAorCisgICAgcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorICAg
IHBsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vQ09NUHRyLmgKKyAg
ICBwbGF0Zm9ybS93aW4vRGVmV25kUHJvY1dpbmRvd0NsYXNzLmgKKyAgICBwbGF0Zm9ybS93aW4v
R0RJT2JqZWN0Q291bnRlci5oCisgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5oCisgICAg
cGxhdGZvcm0vd2luL0hXbmREQy5oCisgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisg
ICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKKyAgICBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuaAorICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAor
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2Jq
ZWN0LmgKKyAgICBwbGF0Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5oCisgICAgcGxhdGZvcm0v
d2luL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuaAorICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaAor
ICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaAorICAgIHBsYXRmb3JtL3dp
bi9XaW5kb3dzVG91Y2guaAorKQorCitsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTCisgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3RoZW1lV2luLmNzcworICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKICkKIAogbGlzdChBUFBFTkQgV2ViQ29y
ZV9MSUJSQVJJRVMKQEAgLTY1LDQgKzIwMCwyNCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1
cHBvcnRfTElCUkFSSUVTCiAgICAgc2hsd2FwaQogKQogCitmaWxlKENPUFkKKyAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5jc3MiCisg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBw
bGUuanMiCisgICAgREVTVElOQVRJT04KKyAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vV2ViS2l0LnJlc291cmNlcworKQorCitpZiAoRVhJU1RTICR7V0VCS0lUX0xJQlJBUklF
U19ESVJ9L2V0Yy9zc2wvY2VydC5wZW0pCisgICAgbWFrZV9kaXJlY3RvcnkoJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzKQorICAg
IGZpbGUoQ09QWQorICAgICAgICAke1dFQktJVF9MSUJSQVJJRVNfRElSfS9ldGMvc3NsL2NlcnQu
cGVtCisgICAgICAgIERFU1RJTkFUSU9OCisgICAgICAgICR7Q01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZfS9XZWJLaXQucmVzb3VyY2VzL2NlcnRpZmljYXRlcworICAgICkKKyAgICBmaWxl
KFJFTkFNRQorICAgICAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0
LnJlc291cmNlcy9jZXJ0aWZpY2F0ZXMvY2VydC5wZW0KKyAgICAgICAgJHtDTUFLRV9SVU5USU1F
X09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzL2NhY2VydC5w
ZW0KKyAgICApCitlbmRpZiAoKQorCiBzZXQoV2ViQ29yZV9PVVRQVVRfTkFNRSBXZWJDb3JlJHtE
RUJVR19TVUZGSVh9KQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDc3ODUpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDctMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIElXSUNCaXRtYXAgKHJhdGhlciB0aGFuIElEMkQxQml0bWFwKSBmb3IgTmF0
aXZlSW1hZ2VQdHIgb24gRlRXCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhbC9QbGF0Zm9ybUZUVy5jbWFrZToKKwogMjAxOS0wNy0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgY29u
c3RydWN0b3JzIGV4cGxpY2l0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
RlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1G
VFcuY21ha2UJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSwxOCBAQCBsaXN0KEFQUEVO
RCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3Bw
CiAKICAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKworICAgIHN5c3RlbS9DbG9j
a0dlbmVyaWMuY3BwCisKKyAgICBzeXN0ZW0vd2luL1NvdW5kV2luLmNwcAorCisgICAgdGV4dC9L
aWxsUmluZy5jcHAKKworICAgIHdpbi9Mb2dnaW5nV2luLmNwcAogKQogCiBsaXN0KEFQUEVORCBQ
QUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0xJQlJBUklFU19E
SVJ9L2luY2x1ZGUiCiApCisKK3NldChQQUxfT1VUUFVUX05BTUUgUEFMJHtERUJVR19TVUZGSVh9
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJ
KHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbgogICAgIH0oKSk7CiAjZWxzZQogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Pj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewotI2lmIFVTRShDRykKKyNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkK
ICAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9y
dGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxp
YWJseSBpcyBmb3VuZC4KICAgICAgICAgLy8gRm9yIG5vdywgb25seSBzdXBwb3J0IFBORywgSlBF
RyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgogICAgICAgICAiaW1hZ2Uv
cG5nIl9zLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw2ICs1OSwxMSBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAorLy8g
RklYTUUKKyNkZWZpbmUgR0xfVkVSVEVYX1NIQURFUiAweDhCMzEKKyNkZWZpbmUgR0xfRlJBR01F
TlRfU0hBREVSIDB4OEIzMAorLy8KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEFOR0xF
U2hhZGVyVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4NCw2ICsyODQsMTQgQEAgcHVibGljOgogICAgIH07CiAgICAgR3JhcGhpY3NDb250ZXh0KFBh
aW50SW52YWxpZGF0aW9uUmVhc29ucyk7CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgZW51bSBj
bGFzcyBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBDUFVN
ZW1vcnksCisgICAgICAgIEdQVU1lbW9yeQorICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29u
dGV4dFR5cGUpOworI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3Jt
Q29udGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKIApAQCAtMzM5LDYgKzM0NywxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElSRUNU
MkQpCisgICAgdm9pZCBkcmF3RGV2aWNlQml0bWFwKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4m
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24g
PSBJbWFnZU9yaWVudGF0aW9uKCkpOworI2VuZGlmCisKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJF
Q1QyRCkKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxs
UGF0dGVybigpOwpAQCAtNjA3LDYgKzYxOSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNU
MkQpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoSERDLCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNU
LCBib29sIGhhc0FscGhhID0gZmFsc2UpOworICAgIHZvaWQgcGxhdGZvcm1Jbml0KFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUpOwogICAgIHZvaWQg
ZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogICAgIHZvaWQgZHJhd1dp
dGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAy
NDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0Nyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXIKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi0jaWYgVVNFKERJ
UkVDVDJEKQotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewot
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHJlbmRlcmluZ01vZGUsIGhvc3RXaW5kb3csIHRhcmdldENvbnRleHQsIHN1Y2Nlc3MpKTsK
LSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBi
dWZmZXI7Ci19Ci0jZW5kaWYKLQogYm9vbCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTIy
NywxMSArMjE2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcgog
CiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
LSNpZiBVU0UoRElSRUNUMkQpCi0gICAgcmV0dXJuIGNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRl
cmluZ01vZGUoKSwgJmNvbnRleHQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Ci0jZWxz
ZQogICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Ci0jZW5kaWYKIH0KIAogSW50U2l6ZSBJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDkgKzY3LDYgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0
dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JT
cGFjZSA9IENvbG9yU3BhY2VTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotI2lm
IFVTRShESVJFQ1QyRCkKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFj
ZSA9IENvbG9yU3BhY2VTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotI2VuZGlm
CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29u
dGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtMTQ0LDgg
KzE0MSw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzaW5r
SW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwogICAgIHZvaWQg
Zmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZWxpZiBVU0UoRElSRUNUMkQpCi0gICAgQ09NUHRyPElE
MkQxQml0bWFwPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0OwotICAgIHN0YXRpYyBDT01QdHI8SUQyRDFCaXRtYXA+IHNpbmtJbnRvTmF0
aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgQ09NUHRyPElXSUNC
aXRtYXA+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSkgY29uc3Q7CisgICAgc3RhdGljIENPTVB0cjxJV0lDQml0bWFwPiBzaW5rSW50b05hdGl2ZUlt
YWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwogICAgIHZvaWQgZmx1c2hDb250ZXh0
KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKQEAgLTE3NSw4ICsxNzIsNiBAQCBwcml2YXRlOgogI2lm
IFVTRShDRykKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRv
dyosIGJvb2wmIHN1Y2Nlc3MpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVS
ZXNvbHV0aW9uKSBjb25zdDsKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSAgICBJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
JiBzdWNjZXNzKTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjaWYg
VVNFKERJUkVDVDJEKQogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgPGQyZDEuaD4KKyNp
bmNsdWRlIDx3aW5jb2RlYy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0
LDcgKzU1LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogI2lmIFVTRShDRykKIHR5cGVkZWYg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKERJUkVDVDJE
KQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBD
T01QdHI8SVdJQ0JpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBl
ZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJ
TkdESSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdM
U2hpbXMuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTMgQEAKICNp
Zm5kZWYgT3BlbkdMU2hpbXNfaAogI2RlZmluZSBPcGVuR0xTaGltc19oCiAKKyNpZiBPUyhXSU5E
T1dTKQorI2luY2x1ZGUgPEdML2dsLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjZWxzZQog
I2luY2x1ZGUgPEdML2dsLmg+CiAjaW5jbHVkZSA8R0wvZ2xleHQuaD4KKyNlbmRpZgogCiAjaWYg
ZGVmaW5lZChHTF9FU19WRVJTSU9OXzJfMCkKIC8vIFNvbWUgb3BlbkdMIEVTIHN5c3RlbXMgbWlz
cyB0aGlzIHR5cGVkZWYuCkBAIC0zNyw2ICs0Miw3IEBAIE9wZW5HTEZ1bmN0aW9uVGFibGUqIG9w
ZW5HTEZ1bmN0aW9uVGFibGUKIAogI2lmIE9TKFdJTkRPV1MpCiAjZGVmaW5lIEdMQVBJRU5UUlkg
X19zdGRjYWxsCit0eXBlZGVmIGNoYXIgR0xjaGFyOwogI2Vsc2UKICNkZWZpbmUgR0xBUElFTlRS
WQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
CShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
OSw3ICsyNDksNyBAQCBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlCiB9
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShDQUlSTykKKyNpZiBQTEFURk9S
TShXSU4pICYmIFVTRShDQSkKIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRl
clN0eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkg
c3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmUuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJl
LmgiCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCkBAIC01NCw2ICs1NSwxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRz
KFRleHR1CiAKICAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29u
dGV4dCwgc291cmNlUmVjdCk7CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgLy8gV2UgY2FuJ3Qg
YWNjZXNzIHRoZSBiaXRzIGluIHRoZSBpbWFnZSBidWZmZXIgd2l0aCBhbiBhY3RpdmUgYmVnaW5E
cmF3LgorICAgIGNvbnRleHQuZW5kRHJhdygpOworI2VuZGlmCisKICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQyLDYgKzQzLDExIEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoRElSRUNUMkQpCisjaW5j
bHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWIDB4ODM2NwogI2VuZGlm
CkBAIC0xNTYsNiArMTYyLDI5IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50
cyhJbWEKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLmdldCgpOwog
ICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAg
ICAvLyBXZSBjYW4ndCBhY2Nlc3MgdGhlIGJpdG1hcCdzIG1lbW9yeSB3aGVuIGl0IGlzIGluIHRo
ZSBtaWRkbGUgb2YgYSBCZWdpbkRyYXcvRW5kRHJhdworICAgIFdJQ1JlY3QgcmNMb2NrID0geyAw
LCAwLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCkgfTsKKworICAgIENP
TVB0cjxJV0lDQml0bWFwTG9jaz4gYml0bWFwRGF0YTsKKyAgICBIUkVTVUxUIGhyID0gZnJhbWVJ
bWFnZS0+TG9jaygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrUmVhZCwgJmJpdG1hcERhdGEpOworICAg
IGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUlOVCBzdHJpZGUg
PSAwOworICAgIGhyID0gYml0bWFwRGF0YS0+R2V0U3RyaWRlKCZzdHJpZGUpOworICAgIGlmICgh
U1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYnl0ZXNQZXJMaW5lID0gc3Ry
aWRlOworCisgICAgVUlOVCBidWZmZXJTaXplID0gMDsKKyAgICBXSUNJblByb2NQb2ludGVyIGRh
dGFQdHIgPSBudWxscHRyOworICAgIGhyID0gYml0bWFwRGF0YS0+R2V0RGF0YVBvaW50ZXIoJmJ1
ZmZlclNpemUsICZkYXRhUHRyKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJl
dHVybjsKKworICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFQdHIp
OwogI2VuZGlmCiAKICAgICB1cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIHRhcmdldFJlY3QsIG9m
ZnNldCwgYnl0ZXNQZXJMaW5lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHQzRFRleHR1cmVNYXBwZXIuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDggKzI1NywxMCBAQCBHcmFwaGljc0NvbnRleHQz
RDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7CiAjZW5kaWYKIAorI2lmIFVTRShDQUlSTykKICAgICBpZiAobV92
YW8pCiAgICAgICAgIGRlbGV0ZVZlcnRleEFycmF5KG1fdmFvKTsKKyNlbmRpZgogCiAgICAgYXV0
byogYWN0aXZlQ29udGV4dCA9IGFjdGl2ZUNvbnRleHRzKCkudGFrZUxhc3QoW3RoaXNdKGF1dG8q
IGl0KSB7IHJldHVybiBpdCA9PSB0aGlzOyB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFjdGl2ZUNv
bnRleHQsICEhYWN0aXZlQ29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dDNERGly
ZWN0MkQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgor
CisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpICYmIFVTRShESVJFQ1QyRCkKKworI2lu
Y2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8
ZDJkMS5oPgorI2luY2x1ZGUgPGQyZDFlZmZlY3RzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjp+SW1hZ2VFeHRyYWN0b3IoKSA9
IGRlZmF1bHQ7CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRy
YWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlKQoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4
ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoIWltYWdlUGl4ZWxzIHx8IGlt
YWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKSAmJiBVU0UoRElSRUNUMkQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJG
bG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlRGlyZWN0MkQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkltYWdl
RGVjb2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgpAQCAtNTQsNyArNTUsNyBAQCBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjCiAKICAgICAvLyBDcmVhdGUgYSBEQyBy
ZW5kZXIgdGFyZ2V0LgogICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRh
cmdldFByb3BlcnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKLSAgICAgICAg
RDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFf
TU9ERV9JR05PUkUpLAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAogICAgICAgICAwLCAw
LCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFUVVJFX0xFVkVMX0RFRkFV
TFQpOwogCiAgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgp
LT5DcmVhdGVEQ1JlbmRlclRhcmdldCgmdGFyZ2V0UHJvcGVydGllcywgcmVuZGVyVGFyZ2V0KTsK
QEAgLTYyLDcgKzYzLDEyIEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBo
ZGMKIAogICAgICgqcmVuZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0gICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgqcmVuZGVyVGFyZ2V0KTsK
KyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCpyZW5kZXJU
YXJnZXQsIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworfQorCitHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxh
dGZvcm1HcmFwaGljc0NvbnRleHQsIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlIHJlbmRlcmVy
VHlwZSkKK3sKKyAgICBwbGF0Zm9ybUluaXQocGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIHJlbmRl
cmVyVHlwZSk7CiB9CiAKIElEMkQxRmFjdG9yeSogR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0
b3J5KCkKQEAgLTEwNiw3ICsxMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1J
bml0KEhEQyBoCiAgICAgRElCUGl4ZWxEYXRhIHBpeGVsRGF0YShiaXRtYXApOwogCiAgICAgYXV0
byB0YXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcygpOwotICAg
IHRhcmdldFByb3BlcnRpZXMucGl4ZWxGb3JtYXQgPSBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX0lHTk9SRSk7CisgICAgdGFyZ2V0
UHJvcGVydGllcy5waXhlbEZvcm1hdCA9IEQyRDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNLCBEMkQxX0FMUEhBX01PREVfUFJFTVVMVElQTElFRCk7CiAKICAgICBDT01Q
dHI8SUQyRDFEQ1JlbmRlclRhcmdldD4gcmVuZGVyVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBz
eXN0ZW1GYWN0b3J5KCktPkNyZWF0ZURDUmVuZGVyVGFyZ2V0KCZ0YXJnZXRQcm9wZXJ0aWVzLCAm
cmVuZGVyVGFyZ2V0KTsKQEAgLTExOCw3ICsxMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1Jbml0KEhEQyBoCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHJl
bmRlclRhcmdldC5nZXQoKSk7CisgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShyZW5kZXJUYXJnZXQuZ2V0KCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBl
OjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiAgICAgLy8gTWFrZSBzdXJl
IHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgogICAgIHNldFBsYXRm
b3JtRmlsbENvbG9yKGZpbGxDb2xvcigpKTsKQEAgLTEyOSwxMCArMTM1LDE1IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGgKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtSW5pdChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogeworICAgIHBs
YXRmb3JtSW5pdChyZW5kZXJUYXJnZXQsIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVN
ZW1vcnkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlIHJlbmRl
cmluZ1R5cGUpCit7CiAgICAgaWYgKCFyZW5kZXJUYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocmVuZGVyVGFy
Z2V0KTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHJl
bmRlclRhcmdldCwgcmVuZGVyaW5nVHlwZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRl
eHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAgICAgc2V0UGxhdGZvcm1GaWxsQ29s
b3IoZmlsbENvbG9yKCkpOwpAQCAtMTk1LDcgKzIwNiwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhCiAgICAgLy8gRklYTUU6IG1fZGF0YS0+bV91c2VyVG9EZXZp
Y2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElXSUNCaXRtYXA+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgQ09NUHRyPElE
MkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4
dCgpLT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKGltYWdlLmdldCgpLCAmZGV2aWNlQml0bWFw
KTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybjsKKworICAgIGRyYXdE
ZXZpY2VCaXRtYXAoZGV2aWNlQml0bWFwLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3RGV2aWNlQml0bWFwKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yODEsNyArMzAyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udAogICAgIERJQlBpeGVsRGF0YSBwaXhlbERhdGEo
c291cmNlQml0bWFwLmdldCgpKTsKICAgICBBU1NFUlQocGl4ZWxEYXRhLmJpdHNQZXJQaXhlbCgp
ID09IDMyKTsKIAotICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFByb3Bl
cnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFf
QUxQSEFfTU9ERV9JR05PUkUpKTsKKyAgICBhdXRvIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpC
aXRtYXBQcm9wZXJ0aWVzKEQyRDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VO
T1JNLCBEMkQxX0FMUEhBX01PREVfUFJFTVVMVElQTElFRCkpOwogCiAgICAgQ09NUHRyPElEMkQx
Qml0bWFwPiBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dCgpLT5DcmVh
dGVCaXRtYXAocGl4ZWxEYXRhLnNpemUoKSwgcGl4ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEu
Ynl0ZXNQZXJSb3coKSwgJmJpdG1hcFByb3BlcnRpZXMsICZiaXRtYXApOwpAQCAtMzIyLDEzICsz
NDMsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdEb3RzRm9yRG9jdW1lbgogewogfQog
Ci1HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZShJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQorR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdD
b250ZXh0VHlwZSByZW5kZXJpbmdUeXBlKQogICAgIDogbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFy
Z2V0KQorICAgICwgbV9yZW5kZXJlclR5cGUocmVuZGVyaW5nVHlwZSkKIHsKICAgICBpZiAoIW1f
cmVuZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICBiZWdpbkRyYXcoKTsKKyAgICBp
ZiAobV9yZW5kZXJlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KQorICAgICAgICBiZWdpbkRyYXcoKTsKIH0KIAogR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCkK
QEAgLTMzNiw3ICszNTksOCBAQCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFw
aGljCiAgICAgaWYgKCFtX3JlbmRlclRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5k
RHJhdygpOworICAgIGlmIChiZWdpbkRyYXdDb3VudCkKKyAgICAgICAgZW5kRHJhdygpOwogfQog
CiBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6YnJ1c2hXaXRoQ29sb3IoY29uc3QgRDJEMV9DT0xPUl9GJiBjb2xvcikKQEAgLTQyNCw2
ICs0NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnCiB7CiAg
ICAgQVNTRVJUKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX3JlbmRlclRhcmdldC0+QmVn
aW5EcmF3KCk7CisgICAgKytiZWdpbkRyYXdDb3VudDsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXcoKQpAQCAtNDMzLDcgKzQ1OCw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjplbmQKICAgICBIUkVTVUxUIGhyID0gbV9yZW5k
ZXJUYXJnZXQtPkVuZERyYXcoJmZpcnN0LCAmc2Vjb25kKTsKIAogICAgIGlmICghU1VDQ0VFREVE
KGhyKSkKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgaW4gR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjplbmREcmF3OiBocj0lbGQsIGZpcnN0PSVsZCwgc2Vjb25kPSVsZCIsIGhy
LCBmaXJzdCwgc2Vjb25kKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgaW4gR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjplbmREcmF3OiBocj0leGQsIGZpcnN0PSVsZCwgc2Vj
b25kPSVsZCIsIGhyLCBmaXJzdCwgc2Vjb25kKTsKKworICAgIC0tYmVnaW5EcmF3Q291bnQ7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpyZXN0b3JlKCkKQEAgLTU3
OSw2ICs2MDYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAg
ICAgLy8gSWYgd2Ugb25seSB3YW50IGEgc3Vic2V0IG9mIHRoZSBiaXRtYXAsIHdlIG5lZWQgdG8g
Y3JlYXRlIGEgY3JvcHBlZCBiaXRtYXAgaW1hZ2UuIEFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRh
dGlvbiwKICAgICAvLyB0aGlzIGRvZXMgbm90IGFsbG9jYXRlIG5ldyBiaXRtYXAgbWVtb3J5Lgog
ICAgIGlmIChpbWFnZS53aWR0aCgpID4gZGVzdFJlY3Qud2lkdGgoKSB8fCBpbWFnZS5oZWlnaHQo
KSA+IGRlc3RSZWN0LmhlaWdodCgpKSB7CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgLyoK
ICAgICAgICAgZmxvYXQgZHBpWCA9IDA7CiAgICAgICAgIGZsb2F0IGRwaVkgPSAwOwogICAgICAg
ICB0aWxlSW1hZ2UtPkdldERwaSgmZHBpWCwgJmRwaVkpOwpAQCAtNTkxLDEwICs2MjAsMTYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChocikpCiAgICAgICAgICAgICAgICAgdGlsZUltYWdlID0gc3ViSW1hZ2U7CiAg
ICAgICAgIH0KKyAgICAgICAgKi8KICAgICB9CiAKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJp
dG1hcDsKKyAgICBIUkVTVUxUIGhyID0gY29udGV4dC0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1h
cCh0aWxlSW1hZ2UuZ2V0KCksIG51bGxwdHIsICZiaXRtYXApOworICAgIGlmICghU1VDQ0VFREVE
KGhyKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ09NUHRyPElEMkQxQml0bWFwQnJ1c2g+IHBh
dHRlcm5CcnVzaDsKLSAgICBIUkVTVUxUIGhyID0gY29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2go
dGlsZUltYWdlLmdldCgpLCAmYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLCAmYnJ1c2hQcm9wZXJ0aWVz
LCAmcGF0dGVybkJydXNoKTsKKyAgICBociA9IGNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKGJp
dG1hcC5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBh
dHRlcm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIGlmICghU1VDQ0VF
REVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGVEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0Kik7CisgICAgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiwgR3JhcGhpY3NDb250ZXh0OjpCaXRt
YXBSZW5kZXJpbmdDb250ZXh0VHlwZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZSgpOwogCiAgICAgZW51bSBEaXJlY3QyRExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwg
TGF5ZXJDbGlwIH07CkBAIC05OCw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvbXB1
dGVTdHJva2VTdHlsZSgpOwogCiAgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRl
clRhcmdldDsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlIG1fcmVuZGVyZXJUeXBlOwogICAgIEhhc2hNYXA8dWludDMyX3QsIENPTVB0cjxJRDJE
MVNvbGlkQ29sb3JCcnVzaD4+IG1fc29saWRDb2xvcmVkQnJ1c2hDYWNoZTsKICAgICBDT01QdHI8
SUQyRDFTb2xpZENvbG9yQnJ1c2g+IG1fd2hpdGVCcnVzaDsKICAgICBDT01QdHI8SUQyRDFTb2xp
ZENvbG9yQnJ1c2g+IG1femVyb0JydXNoOwpAQCAtMTI2LDYgKzEyNyw4IEBAIHByaXZhdGU6CiAg
ICAgU3Ryb2tlU3R5bGUgbV9zdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07CiAgICAgRGFzaEFy
cmF5IG1fZGFzaGVzOwogCisgICAgdW5zaWduZWQgYmVnaW5EcmF3Q291bnQgeyAwIH07CisKICAg
ICBmbG9hdCBtX21pdGVyTGltaXQgeyAxMC4wZiB9OwogICAgIGZsb2F0IG1fZGFzaE9mZnNldCB7
IDAgfTsKICAgICBmbG9hdCBtX3BhdHRlcm5XaWR0aCB7IDEuMGYgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGF0YURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgLyogYWNjZWxlcmF0ZVJlbmRlcmluZyAqLywgZmxvYXQgLyogcmVzb2x1dGlvblNjYWxlICov
KSBjb25zdAogewotICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7Ci0KICAgICBhdXRvIG51bUJ5dGVzID0gcmVjdC5hcmVhPFJlY29yZE92ZXJmbG93
PigpICogNDsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTU1LDQ3ICs1MywzMSBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEltYWdlQnVmZmVyRGF0CiAgICAgaWYgKCFyZXN1bHREYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIEJpdG1hcEluZm8gYml0bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJv
dHRvbVVwKHNpemUpOwotCi0gICAgdm9pZCogcGl4ZWxzID0gbnVsbHB0cjsKLSAgICBhdXRvIGJp
dG1hcCA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlRElCU2VjdGlvbigwLCAmYml0bWFwSW5mbywg
RElCX1JHQl9DT0xPUlMsICZwaXhlbHMsIDAsIDApKTsKLQotICAgIEhXbmREQyB3aW5kb3dEQyhu
dWxscHRyKTsKLSAgICBhdXRvIGJpdG1hcERDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21w
YXRpYmxlREMod2luZG93REMpKTsKLSAgICBIR0RJT0JKIG9sZEJpdG1hcCA9IDo6U2VsZWN0T2Jq
ZWN0KGJpdG1hcERDLmdldCgpLCBiaXRtYXAuZ2V0KCkpOwotCi0gICAgQ09NUHRyPElEMkQxR2Rp
SW50ZXJvcFJlbmRlclRhcmdldD4gZ2RpUmVuZGVyVGFyZ2V0OwotICAgIEhSRVNVTFQgaHIgPSBw
bGF0Zm9ybUNvbnRleHQtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVpZG9mKElEMkQxR2RpSW50ZXJvcFJl
bmRlclRhcmdldCksICh2b2lkKiopJmdkaVJlbmRlclRhcmdldCk7Ci0gICAgaWYgKEZBSUxFRCho
cikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSERDIGhkYyA9IG51bGxwdHI7Ci0g
ICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPkdldERDKEQyRDFfRENfSU5JVElBTElaRV9NT0RFX0NP
UFksICZoZGMpOworICAgIFdJQ1JlY3QgcmNMb2NrID0geyAwLCAwLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkgfTsKIAotICAgIEJPT0wgb2sgPSA6OkJpdEJsdChiaXRtYXBEQy5nZXQoKSwg
MCwgMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBoZGMsIHJlY3QueCgpLCByZWN0Lnko
KSwgU1JDQ09QWSk7CisgICAgLy8gV2UgY2Fubm90IGFjY2VzcyB0aGUgZGF0YSBiYWNraW5nIGFu
IElXSUNCaXRtYXAgd2hpbGUgYW4gYWN0aXZlIGRyYXcgc2Vzc2lvbiBpcyBvcGVuLgorICAgIGNv
bnRleHQtPmVuZERyYXcoKTsKIAotICAgIFJFQ1QgdXBkYXRlUmVjdCA9IHsgMCwgMCwgMCwgMCB9
OwotICAgIGhyID0gZ2RpUmVuZGVyVGFyZ2V0LT5SZWxlYXNlREMoJnVwZGF0ZVJlY3QpOworICAg
IENPTVB0cjxJV0lDQml0bWFwTG9jaz4gYml0bWFwRGF0YUxvY2s7CisgICAgSFJFU1VMVCBociA9
IGJpdG1hcFNvdXJjZS0+TG9jaygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrUmVhZCwgJmJpdG1hcERh
dGFMb2NrKTsKKyAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICBVSU5UIGJ1ZmZlclNp
emUgPSAwOworICAgICAgICBXSUNJblByb2NQb2ludGVyIGRhdGFQdHIgPSBudWxscHRyOworICAg
ICAgICBociA9IGJpdG1hcERhdGFMb2NrLT5HZXREYXRhUG9pbnRlcigmYnVmZmVyU2l6ZSwgJmRh
dGFQdHIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgIG1lbWNweShy
ZXN1bHQtPmRhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YVB0ciksIG51bUJ5dGVz
LnVuc2FmZUdldCgpKTsKKyAgICB9CiAKLSAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAvLyBPbmNlIHdlIGFyZSBkb25lIG1vZGlmeWluZyB0aGUgZGF0YSwgdW5sb2Nr
IHRoZSBiaXRtYXAKKyAgICBiaXRtYXBEYXRhTG9jayA9IG51bGxwdHI7CiAKLSAgICBtZW1jcHko
cmVzdWx0LT5kYXRhKCksIHBpeGVscywgbnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIGNvbnRl
eHQtPmJlZ2luRHJhdygpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBJbWFnZUJ1
ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNv
bnN0IEludFNpemUmIHNpemUsIGJvb2wgLyogYWNjZWxlcmF0ZVJlbmRlcmluZyAqLywgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKQogewotICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBy
ZW5kZXJUYXJnZXQoUXVlcnksIHBsYXRmb3JtQ29udGV4dCk7Ci0gICAgaWYgKCFyZW5kZXJUYXJn
ZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOwot
ICAgIEhSRVNVTFQgaHIgPSByZW5kZXJUYXJnZXQtPkdldEJpdG1hcCgmYml0bWFwKTsKLSAgICBB
U1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0KICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4g
MCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIApAQCAtMTMyLDcgKzEx
NCwzMyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25zdCBVaW50CiAgICAgaWYg
KHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIFdl
IGNhbm5vdCBhY2Nlc3MgdGhlIGRhdGEgYmFja2luZyBhbiBJV0lDQml0bWFwIHdoaWxlIGFuIGFj
dGl2ZSBkcmF3IHNlc3Npb24gaXMgb3Blbi4KKyAgICBjb250ZXh0LT5lbmREcmF3KCk7CisKKyAg
ICBXSUNSZWN0IHJjTG9jayA9IHsgMCwgMCwgc291cmNlU2l6ZS53aWR0aCgpLCBzb3VyY2VTaXpl
LmhlaWdodCgpIH07CisKKyAgICBDT01QdHI8SVdJQ0JpdG1hcExvY2s+IGJpdG1hcERhdGFMb2Nr
OworICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBTb3VyY2UtPkxvY2soJnJjTG9jaywgV0lDQml0bWFw
TG9ja1dyaXRlLCAmYml0bWFwRGF0YUxvY2spOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVUlOVCBzdHJpZGUgPSAwOworICAgIGhyID0gYml0bWFwRGF0
YUxvY2stPkdldFN0cmlkZSgmc3RyaWRlKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAg
ICAgIHJldHVybjsKKworICAgIFVJTlQgYnVmZmVyU2l6ZSA9IDA7CisgICAgV0lDSW5Qcm9jUG9p
bnRlciBkYXRhUHRyID0gbnVsbHB0cjsKKyAgICBociA9IGJpdG1hcERhdGFMb2NrLT5HZXREYXRh
UG9pbnRlcigmYnVmZmVyU2l6ZSwgJmRhdGFQdHIpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGJ1ZmZlclNpemUgPT0gc291cmNlLmJ5dGVM
ZW5ndGgoKSk7CisKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VTaXpl
LndpZHRoKCk7CisKKyAgICBBU1NFUlQoc3JjQnl0ZXNQZXJSb3cgPT0gc3RyaWRlKTsKKwogICAg
IGNvbnN0IHVpbnQ4X3QqIHNyY1Jvd3MgPSBzb3VyY2UuZGF0YSgpICsgKG9yaWdpbnkgKiBzcmNC
eXRlc1BlclJvdyArIG9yaWdpbnggKiA0KS51bnNhZmVHZXQoKTsKIAogICAgIGF1dG8gcm93ID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHNyY0J5dGVzUGVyUm93KTsKQEAgLTE1MCwxMiArMTU4
LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQKICAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4ocm93LmdldCgpICsgYmFzZXgpWzBd
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07
CiAgICAgICAgIH0KIAotICAgICAgICBEMkQxX1JFQ1RfVSBkc3RSZWN0ID0gRDJEMTo6UmVjdFUo
ZGVzdFBvaW50LngoKSwgZGVzdFBvaW50LnkoKSArIHksIGRlc3RQb2ludC54KCkgKyBzaXplLndp
ZHRoKCksIGRlc3RQb2ludC55KCkgKyB5ICsgMSk7Ci0gICAgICAgIGhyID0gYml0bWFwLT5Db3B5
RnJvbU1lbW9yeSgmZHN0UmVjdCwgcm93LmdldCgpLCBzcmNCeXRlc1BlclJvdyk7Ci0gICAgICAg
IEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICAgICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGRhdGFQdHIgKyB5ICogc3JjQnl0ZXNQZXJSb3cpLCByb3cuZ2V0KCksIHNyY0J5dGVz
UGVyUm93KTsKIAogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KKwor
ICAgIC8vIE9uY2Ugd2UgYXJlIGRvbmUgbW9kaWZ5aW5nIHRoZSBkYXRhLCB1bmxvY2sgdGhlIGJp
dG1hcAorICAgIGJpdG1hcERhdGFMb2NrID0gbnVsbHB0cjsKKworICAgIGNvbnRleHQtPmJlZ2lu
RHJhdygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
YXRhRGlyZWN0MkQuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDkgKzQxLDkgQEAgc3RydWN0IEltYWdlQnVmZmVyRGF0YSB7CiAgICAgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGJ5dGVzUGVyUm93OwogCiAgICAgLy8gT25seSBmb3Ig
c29mdHdhcmUgSW1hZ2VCdWZmZXJzLgotICAgIHZvaWQqIGRhdGEgeyBudWxscHRyIH07CisgICAg
VmVjdG9yPGNoYXI+IGRhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
Y29udGV4dDsKLSAgICBJRDJEMVJlbmRlclRhcmdldCogbV9jb21wYXRpYmxlVGFyZ2V0IHsgbnVs
bHB0ciB9OworICAgIENPTVB0cjxJV0lDQml0bWFwPiBiaXRtYXBTb3VyY2U7CiAKICAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7CiAgICAgdm9pZCBwdXREYXRhKGNvbnN0IFVpbnQ4
Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlRm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRl
UmVuZGVyaW5nLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
MSArMzIsMTMgQEAKICNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJl
Y3QyRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5j
bHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpAQCAtNjIsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gY29u
dGV4dC5yZW5kZXJpbmdNb2RlKCk7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZm
ZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKG5ldyBJ
bWFnZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlU1JHQiwgcmVuZGVyaW5nTW9kZSwg
bnVsbHB0ciwgJmNvbnRleHQsIHN1Y2Nlc3MpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgQ29sb3JTcGFjZVNS
R0IsIHJlbmRlcmluZ01vZGUsIG51bGxwdHIsIHN1Y2Nlc3MpKTsKIAogICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03Miw3ICs3NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXIKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1J
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgLypjb2xvclNwYWNlKi8sIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFy
Z2V0Q29udGV4dCwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSAvKmNv
bG9yU3BhY2UqLywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93
KiwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fbG9naWNhbFNpemUoc2l6ZSkKICAgICAsIG1fcmVz
b2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKIHsKQEAgLTk3LDI5ICs5OSwyNyBAQCBJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplCiAgICAgaWYgKG51bUJ5dGVzLmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZW5kZXJUYXJnZXQg
PSB0YXJnZXRDb250ZXh0ID8gdGFyZ2V0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBudWxs
cHRyOwotICAgIGlmICghcmVuZGVyVGFyZ2V0KQotICAgICAgICByZW5kZXJUYXJnZXQgPSBHcmFw
aGljc0NvbnRleHQ6OmRlZmF1bHRSZW5kZXJUYXJnZXQoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChy
ZW5kZXJUYXJnZXQpOwotCi0gICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRt
YXBDb250ZXh0OwotICAgIEQyRDFfU0laRV9GIGRlc2lyZWRTaXplID0gRmxvYXRTaXplKG1fbG9n
aWNhbFNpemUpOwotICAgIEQyRDFfU0laRV9VIHBpeGVsU2l6ZSA9IEludFNpemUobV9sb2dpY2Fs
U2l6ZSk7Ci0gICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+Q3JlYXRlQ29tcGF0aWJsZVJl
bmRlclRhcmdldCgmZGVzaXJlZFNpemUsICZwaXhlbFNpemUsIG51bGxwdHIsIEQyRDFfQ09NUEFU
SUJMRV9SRU5ERVJfVEFSR0VUX09QVElPTlNfR0RJX0NPTVBBVElCTEUsICZiaXRtYXBDb250ZXh0
KTsKKyAgICBtX2RhdGEuZGF0YSA9IFZlY3RvcjxjaGFyPihudW1CeXRlcy51bnNhZmVHZXQoKSwg
MCk7CisKKyAgICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdp
bmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21NZW1vcnkobV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSwgR1VJRF9XSUNQaXhlbEZvcm1hdDMyYnBwUEJHUkEsIHN0YXRpY19jYXN0PFVJ
TlQ+KG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PFVJTlQ+KG51
bUJ5dGVzLnVuc2FmZUdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4obV9kYXRhLmRhdGEu
ZGF0YSgpKSwgJm1fZGF0YS5iaXRtYXBTb3VyY2UpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVu
ZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9UQVJHRVRfVFlQRV9ERUZBVUxULAorICAg
ICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9B
TFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAgICAwLCAwLCBEMkQxX1JFTkRFUl9UQVJH
RVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFUVVJFX0xFVkVMX0RFRkFVTFQpOworCisgICAgQ09NUHRy
PElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0OworICAgIGhyID0gR3JhcGhpY3NDb250
ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZVdpY0JpdG1hcFJlbmRlclRhcmdldChtX2RhdGEu
Yml0bWFwU291cmNlLmdldCgpLCAmdGFyZ2V0UHJvcGVydGllcywgJmJpdG1hcENvbnRleHQpOwog
ICAgIGlmICghYml0bWFwQ29udGV4dCB8fCAhU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgLy8gTm90ZTogVGhpcyBwbGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBhIGxv
Y2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3RydWN0
b3IuCiAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29tcGF0aWJsZVRhcmdldCA9
IHJlbmRlclRhcmdldDsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCi1JbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEhvc3RXaW5kb3cqLCBib29sJiBzdWNjZXNzKQotICAgIDogSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBpbWFnZUNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIG51bGxw
dHIsIG51bGxwdHIsIHN1Y2Nlc3MpCi17Ci19Ci0KIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIo
KSA9IGRlZmF1bHQ7CiAKIEZsb2F0U2l6ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9u
U2l6ZShGbG9hdFNpemUgZGVzdGluYXRpb25TaXplKSBjb25zdApAQCAtMTM3LDIzICsxMzcsMzEg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKICAgICBjb250ZXh0KCku
Zmx1c2goKTsKIH0KIAotc3RhdGljIENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CitzdGF0aWMgQ09NUHRyPElXSUNCaXRtYXA+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5
KElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiB7Ci0gICAgRmxvYXRT
aXplIGltYWdlU2l6ZSA9IGltYWdlID8gaW1hZ2UtPkdldFNpemUoKSA6IEZsb2F0U2l6ZSgpOwor
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkg
OiBGbG9hdFNpemUoKTsKIAogICAgIGlmIChpbWFnZSAmJiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihp
bWFnZVNpemUud2lkdGgoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMud2lkdGgoKSkg
fHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KCkpICE9IHN0YXRpY19jYXN0
PHNpemVfdD4oYm91bmRzLmhlaWdodCgpKSkpIHsKICAgICAgICAgRDJEX1BPSU5UXzJVIG9yaWdp
biA9IHsgfTsKLSAgICAgICAgRDJEMV9SRUNUX1UgY3JvcHBlZERpbWVuc3Rpb25zID0gSW50UmVj
dChJbnRQb2ludCgpLCBib3VuZHMpOwotICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNyb3Bw
ZWRJbWFnZTsKLSAgICAgICAgSFJFU1VMVCBociA9IGNyb3BwZWRJbWFnZS0+Q29weUZyb21CaXRt
YXAoJm9yaWdpbiwgaW1hZ2UsICZjcm9wcGVkRGltZW5zdGlvbnMpOwotICAgICAgICBpZiAoU1VD
Q0VFREVEKGhyKSkKLSAgICAgICAgICAgIHJldHVybiBjcm9wcGVkSW1hZ2U7CisgICAgICAgIFdJ
Q1JlY3QgY3JvcHBlZERpbWVuc2lvbnMgPSB7IDAsIDAsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMu
aGVpZ2h0KCkgfTsKKworICAgICAgICBDT01QdHI8SVdJQ0JpdG1hcENsaXBwZXI+IGJpdG1hcENs
aXBwZXI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVt
SW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFwQ2xpcHBlcigmYml0bWFwQ2xpcHBlcik7Cisg
ICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBociA9IGJpdG1hcENsaXBw
ZXItPkluaXRpYWxpemUoaW1hZ2UsICZjcm9wcGVkRGltZW5zaW9ucyk7CisgICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgIENPTVB0cjxJV0lDQml0bWFwPiBj
cm9wcGVkQml0bWFwOworICAgICAgICAgICAgICAgIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21Tb3VyY2UoaW1hZ2UsIFdJ
Q0JpdG1hcE5vQ2FjaGUsICZjcm9wcGVkQml0bWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoU1VD
Q0VFREVEKGhyKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyb3BwZWRCaXRtYXA7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
LXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoQ09NUHRyPElEMkQxQml0bWFwPiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6ZSwgSW50
U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMg
UmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKENPTVB0
cjxJV0lDQml0bWFwPiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6ZSwgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYgKHJlc29s
dXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShp
bWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKQEAgLTE3MCw3ICsxNzgsNyBAQCBzdGF0aWMgUmVm
UHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZm
ZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBDT01QdHI8SUQyRDFCaXRt
YXA+IGltYWdlOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBpZiAobV9yZXNv
bHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
CiAgICAgZWxzZQpAQCAtMTk0LDMxICsyMDIsMzEgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1
ZmZlcjo6ZmFzdENvcHlJbQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAot
Q09NUHRyPElEMkQxQml0bWFwPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQorQ09NUHRyPElXSUNCaXRtYXA+
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFNlZSBpZiB3ZSBjYW4gcmV1c2Ug
dGhlIG9uLWhhcmR3YXJlIGltYWdlLgogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIH0KIAotQ09NUHRyPElEMkQxQml0bWFwPiBJ
bWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
KSBjb25zdAorQ09NUHRyPElXSUNCaXRtYXA+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgYXV0byBiaXRtYXBU
YXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gaW1hZ2U7
Ci0gICAgSFJFU1VMVCBociA9IGJpdG1hcFRhcmdldC0+R2V0Qml0bWFwKCZpbWFnZSk7Ci0gICAg
QVNTRVJUKFNVQ0NFRURFRChocikpOwotCiAgICAgLy8gRklYTUU6IG1fZGF0YS5kYXRhIGlzIG51
bGxwdHIgZXZlbiB3aGVuIGFza2luZyB0byBjb3B5IGJhY2tpbmcgc3RvcmUgbGVhZGluZyB0byB0
ZXN0IGZhaWx1cmVzLgotICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSAm
JiAhbV9kYXRhLmRhdGEpCisgICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3Jl
ICYmIG1fZGF0YS5kYXRhLmlzRW1wdHkoKSkKICAgICAgICAgY29weUJlaGF2aW9yID0gRG9udENv
cHlCYWNraW5nU3RvcmU7CiAKKyAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51
bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5n
U3RvcmVTaXplLmhlaWdodCgpKSAqIG1fZGF0YS5ieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEhSRVNV
TFQgaHIgPSBTX09LOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBpZiAoIWNv
bnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJl
aGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgICAg
ICBociA9IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVh
dGVCaXRtYXBGcm9tU291cmNlKG1fZGF0YS5iaXRtYXBTb3VyY2UuZ2V0KCksIFdJQ0JpdG1hcE5v
Q2FjaGUsICZpbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFj
a2luZ1N0b3JlOgotICAgICAgICAgICAgRDJEMV9SRUNUX1UgYmFja2luZ1N0b3JlRGltZW5zdGlv
bnMgPSBJbnRSZWN0KEludFBvaW50KCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplKTsKLSAgICAg
ICAgICAgIGltYWdlLT5Db3B5RnJvbU1lbW9yeSgmYmFja2luZ1N0b3JlRGltZW5zdGlvbnMsIG1f
ZGF0YS5kYXRhLCAzMik7CisgICAgICAgICAgICBociA9IEltYWdlRGVjb2RlckRpcmVjdDJEOjpz
eXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVCaXRtYXBGcm9tU291cmNlKG1fZGF0YS5iaXRt
YXBTb3VyY2UuZ2V0KCksIFdJQ0JpdG1hcENhY2hlT25EZW1hbmQsICZpbWFnZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMjQwLDMwICsyNDgsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyhzdGQ6OnVuaQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0g
ICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVy
VGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBhdXRvIG91dHB1dFRh
cmdldCA9IGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgQ09NUHRyPElEMkQxQml0bWFw
PiBpbWFnZTsKLSAgICBIUkVTVUxUIGhyID0gYml0bWFwVGFyZ2V0LT5HZXRCaXRtYXAoJmltYWdl
KTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybjsKKyAgICBGbG9hdFNp
emUgY3VycmVudEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShtX2RhdGEuYml0bWFwU291cmNl
KTsKIAotICAgIC8vIElmIHRoZSByZW5kZXIgdGFyZ2V0cyBmb3IgdGhlIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24gY29udGV4dHMgZG8gbm90IG1hdGNoLCBtb3ZlIHRoZSBpbWFnZSBvdmVyLgotICAg
IGlmIChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSAhPSBtX2RhdGEubV9jb21wYXRpYmxl
VGFyZ2V0KSB7Ci0gICAgICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gc291cmNlSW1hZ2UgPSBpbWFn
ZTsKLSAgICAgICAgaW1hZ2UgPSBudWxscHRyOwotCi0gICAgICAgIGF1dG8gYml0bWFwUHJvcGVy
dGllcyA9IEQyRDE6OkJpdG1hcFByb3BlcnRpZXMoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
OjpzeXN0ZW1GYWN0b3J5KCktPkdldERlc2t0b3BEcGkoJmJpdG1hcFByb3BlcnRpZXMuZHBpWCwg
JmJpdG1hcFByb3BlcnRpZXMuZHBpWSk7Ci0gICAgICAgIGhyID0gb3V0cHV0VGFyZ2V0LT5DcmVh
dGVTaGFyZWRCaXRtYXAoX191dWlkb2YoSUQyRDFCaXRtYXApLCBzb3VyY2VJbWFnZS5nZXQoKSwg
JmJpdG1hcFByb3BlcnRpZXMsICZpbWFnZSk7Ci0gICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gWW91IGNhbid0IGNvbnZlcnQgYSBJ
V0lDQml0bWFwIHRvIGEgSUQyRDFCaXRtYXAgd2l0aCBhbiBhY3RpdmUgR3JhcGhpY3NDb250ZXh0
IGF0dGFjaGVkIHRvIGl0LgorICAgIG1fZGF0YS5jb250ZXh0LT5lbmREcmF3KCk7CiAKLSAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBkZXN0Q29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9kYXRhLmJpdG1hcFNvdXJjZSwgY3VycmVudEltYWdlU2l6
ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiAKLSAgICBkZXN0
Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlLT5HZXRTaXplKCksIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIG1fZGF0YS5jb250ZXh0LT5i
ZWdpbkRyYXcoKTsKIAogICAgIGRlc3RDb250ZXh0LmZsdXNoKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJn
ZXRDb250CiAKIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBpZiAoIW1fbmF0aXZlRGVjb2Rl
ciB8fCAhbV9yZW5kZXJUYXJnZXQpCisgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgQ09NUHRyPElXSUNCaXRtYXBGcmFtZURlY29kZT4gZnJh
bWU7CkBAIC0yNDksMTIgKzI0OSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6Y3JlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGhyID0gY29udmVydGVyLT5Jbml0aWFsaXplKGZyYW1lLmdldCgpLCBHVUlEX1dJ
Q1BpeGVsRm9ybWF0MzJicHBQQkdSQSwgV0lDQml0bWFwRGl0aGVyVHlwZU5vbmUsIG51bGxwdHIs
IDAuZiwgV0lDQml0bWFwUGFsZXR0ZVR5cGVDdXN0b20pOworICAgIGhyID0gY29udmVydGVyLT5J
bml0aWFsaXplKGZyYW1lLmdldCgpLCBHVUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQUkdCQSwgV0lD
Qml0bWFwRGl0aGVyVHlwZU5vbmUsIG51bGxwdHIsIDAuZiwgV0lDQml0bWFwUGFsZXR0ZVR5cGVD
dXN0b20pOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJpdG1hcDsKLSAgICBociA9IG1fcmVuZGVyVGFy
Z2V0LT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKGNvbnZlcnRlci5nZXQoKSwgbnVsbHB0ciwg
JmJpdG1hcCk7CisgICAgQ09NUHRyPElXSUNCaXRtYXA+IGJpdG1hcDsKKyAgICBociA9IHN5c3Rl
bUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21Tb3VyY2UoY29udmVydGVyLmdldCgp
LCBXSUNCaXRtYXBDYWNoZU9uRGVtYW5kLCAmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
aXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNv
dW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewogICAgICAg
ICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGF1dG8g
aW1hZ2VTaXplID0gaW1hZ2UtPkdldFNpemUoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIGNsYW1w
VG88c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1Np
emUuaGVpZ2h0KCkpICYmIGNsYW1wVG88c2l6ZV90PihpbWFnZVNpemUud2lkdGgpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgeworICAgICAgICBhdXRvIGltYWdlU2l6
ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBjbGFtcFRv
PGludD4oaW1hZ2VTaXplLmhlaWdodCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUuaGVp
Z2h0KCkpICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUud2lkdGgoKSkgPT0gc3RhdGljX2Nhc3Q8
aW50PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1l
ID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAg
ICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXpl
LndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3Jt
YWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDMzIEBACiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgorI2lu
Y2x1ZGUgPHdpbmNvZGVjLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIElXSUNJ
bWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lDSW1hZ2lu
Z0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdpbmdGYWN0
b3J5KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0lt
YWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdT
KCZpbWFnaW5nRmFjdG9yeSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Cit9CisKIEludFNpemUgbmF0
aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4g
aW1hZ2UgPyBJbnRTaXplKGltYWdlLT5HZXRTaXplKCkpIDogSW50U2l6ZSgpOworICAgIFVJTlQg
d2lkdGggPSAwOworICAgIFVJTlQgaGVpZ2h0ID0gMDsKKyAgICBpZiAoIWltYWdlKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgSFJFU1VMVCBociA9IGltYWdlLT5HZXRTaXplKCZ3aWR0aCwg
JmhlaWdodCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKIGJvb2wgbmF0aXZlSW1h
Z2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCkBAIC00Niw4ICs2NywyOCBA
QCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hCiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBhbHBoYU1vZGUgPSBpbWFnZS0+
R2V0UGl4ZWxGb3JtYXQoKS5hbHBoYU1vZGU7Ci0gICAgcmV0dXJuIChhbHBoYU1vZGUgPj0gRDJE
MV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpICYmIChhbHBoYU1vZGUgPD0gRDJEMV9BTFBIQV9N
T0RFX1NUUkFJR0hUKTsKKyAgICBXSUNQaXhlbEZvcm1hdEdVSUQgcGl4ZWxGb3JtYXRHVUlEID0g
eyB9OworICAgIEhSRVNVTFQgaHIgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoJnBpeGVsRm9ybWF0
R1VJRCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGp1c3QgY2hlY2sgdGhlIHBpeGVsRm9ybWF0R1VJRCBm
b3IgcmVsZXZhbnQgSUQncyB3ZSB1c2U/CisKKyAgICBDT01QdHI8SVdJQ0NvbXBvbmVudEluZm8+
IGNvbXBvbmVudEluZm87CisgICAgaHIgPSBpbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVDb21wb25l
bnRJbmZvKHBpeGVsRm9ybWF0R1VJRCwgJmNvbXBvbmVudEluZm8pOworICAgIGlmICghU1VDQ0VF
REVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ09NUHRyPElXSUNQaXhlbEZv
cm1hdEluZm8+IHBpeGVsRm9ybWF0SW5mbyhRdWVyeSwgY29tcG9uZW50SW5mby5nZXQoKSk7Cisg
ICAgaWYgKCFwaXhlbEZvcm1hdEluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFVJ
TlQgY2hhbm5lbENvdW50ID0gMDsKKyAgICBociA9IHBpeGVsRm9ybWF0SW5mby0+R2V0Q2hhbm5l
bENvdW50KCZjaGFubmVsQ291bnQpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNoYW5uZWxDb3VudCA+IDM7CiB9CiAKIENvbG9y
IG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKQEAgLTc0LDcgKzExNSwxMiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gMS4wZjsKIAotICAgIHBsYXRmb3JtQ29u
dGV4dC0+RHJhd0JpdG1hcChpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQyRDFfQklU
TUFQX0lOVEVSUE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNyY1JlY3Qp
OworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBwbGF0
Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAoaW1hZ2UuZ2V0KCksICZiaXRt
YXApOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxh
dGZvcm1Db250ZXh0LT5EcmF3Qml0bWFwKGJpdG1hcC5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHks
IEQyRDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3Rl
ZFNyY1JlY3QpOwogICAgIGNvbnRleHQuZmx1c2goKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHJl
dmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
YXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBQ
YXRoOjpzdHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcAogCiAgICAgQVNTRVJUKGFwcGxpZXIp
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJUYXJn
ZXQoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJU
YXJnZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BV
TWVtb3J5KTsKICAgICBhcHBsaWVyLT5zdHJva2VTdHlsZSgmc2NyYXRjaENvbnRleHQpOwogCiAg
ICAgQk9PTCBjb250YWluc1BvaW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAkocmV2
aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bh
dHRlcm5EaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDE1IEBAIElEMkQx
Qml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3IKICAgICBhdXRvIHBsYXRmb3JtQ29u
dGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocGxh
dGZvcm1Db250ZXh0KTsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXR0ZXJuSW1hZ2UubmF0
aXZlSW1hZ2UoJmNvbnRleHQpOworCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7Cisg
ICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1h
cChuYXRpdmVJbWFnZS5nZXQoKSwgJmJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5C
cnVzaCA9IG51bGxwdHI7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRl
Qml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJp
dG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7Cisg
ICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKGJpdG1hcC5nZXQoKSwg
JmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7
CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw4ICszNTUsOSBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkCiAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6
IGxpc3QtPnZhbHVlKQogICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKICNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4geyB9OworICAgIHJldHVybjsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMSwxMiAr
MzMxLDggQEAgdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogCiAgICAg
SW50U2l6ZSBsb2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAg
ICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBs
b2dpY2FsU2l6ZSkgewotI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2Uo
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0
Q29udGV4dCwgZmlsdGVyU2NhbGUoKSkpOwotI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRh
cmdldENvbnRleHQpOwogICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksIGZpbHRlclNjYWxlKCkpKTsKLSNlbmRpZgog
ICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ3NDMy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmNoZWNrRm9y
UmVwYWludER1cmluCiAKIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJFbGVtZW50
OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkK
ICAgICAvLyBUaGlzIGNhbiBvbmx5IGJlIGVuYWJsZWQgZm9yIHBvcnRzIHdoaWNoIGhvbm9yIHRo
ZSBvcmllbnRhdGlvbiBmbGFnIGluIHRoZWlyIGRyYXdpbmcgY29kZS4KICAgICBpZiAoZG9jdW1l
bnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDgg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdFRpbGVkQmFjawogewogICAgIGlmICht
X2lzRnJhbWVMYXllcldpdGhUaWxlZEJhY2tpbmcpIHsKICAgICAgICAgYXV0byB0aWxlQ292ZXJh
Z2UgPSBjb21wdXRlUGFnZVRpbGVkQmFja2luZ0NvdmVyYWdlKG1fb3duaW5nTGF5ZXIpOwotICAg
ICAgICB0aWxlZEJhY2tpbmcoKS0+c2V0VGlsZUNvdmVyYWdlKHRpbGVDb3ZlcmFnZSk7CisgICAg
ICAgIGlmIChhdXRvKiB0aWxlZEJhY2tpbmcgPSB0aGlzLT50aWxlZEJhY2tpbmcoKSkKKyAgICAg
ICAgICAgIHRpbGVkQmFja2luZy0+c2V0VGlsZUNvdmVyYWdlKHRpbGVDb3ZlcmFnZSk7CiAgICAg
fQogCiAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaGFzQ29tcG9zaXRlZFNjcm9sbGFibGVPdmVyZmxv
dygpICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMiArMjQ1LDggQEAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbgogICAgIEZsb2F0U2l6ZSBzY2FsZTsKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocGFpbnRSZWN0
LnNpemUoKSwgc2NhbGUpOwogCi0jaWYgVVNFKERJUkVDVDJEKQotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBjb250
ZXh0LCAxLCBjb2xvclNwYWNlKTsKLSNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwog
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBy
ZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlKTsKLSNlbmRpZgogICAgIGlmICghaW1hZ2VCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNzIsMTIgKzI2OCw4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW4KICAgICBpZiAoY2xhbXBlZFNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotI2lmIFVTRShESVJFQ1QyRCkK
LSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
cmVuZGVyaW5nTW9kZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7Ci0jZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSk7Ci0jZW5kaWYK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDc0MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw2ICs2OCw3IEBACiAKICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09N
UHRyLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKICNpbmNsdWRlIDxkMmQx
Lmg+CiAjZW5kaWYKIApAQCAtMjMyLDIyICsyMzMsMjUgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIGlmICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gdGFy
Z2V0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgQVNTRVJUKHBsYXRmb3JtQ29udGV4
dCk7CisgICAgQ09NUHRyPElXSUNCaXRtYXA+IG5hdGl2ZUltYWdlOworICAgIEhSRVNVTFQgaHIg
PSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0
bWFwKHJlY3QoKS53aWR0aCgpLCByZWN0KCkuaGVpZ2h0KCksIEdVSURfV0lDUGl4ZWxGb3JtYXQz
MmJwcFBSR0JBLCBXSUNCaXRtYXBDYWNoZU9uTG9hZCwgJm5hdGl2ZUltYWdlKTsKKyAgICBpZiAo
IVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0YXJn
ZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9U
QVJHRVRfVFlQRV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAg
ICAwLCAwLCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFUVVJFX0xFVkVM
X0RFRkFVTFQpOwogCiAgICAgLy8gRHJhdyB0aGUgU1ZHIGludG8gYSBiaXRtYXAuCi0gICAgQ09N
UHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBuYXRpdmVJbWFnZVRhcmdldDsKLSAgICBIUkVT
VUxUIGhyID0gcGxhdGZvcm1Db250ZXh0LT5DcmVhdGVDb21wYXRpYmxlUmVuZGVyVGFyZ2V0KElu
dFNpemUocmVjdCgpLnNpemUoKSksICZuYXRpdmVJbWFnZVRhcmdldCk7Ci0gICAgQVNTRVJUKFNV
Q0NFRURFRChocikpOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbmF0aXZlSW1hZ2VU
YXJnZXQ7CisgICAgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRl
V2ljQml0bWFwUmVuZGVyVGFyZ2V0KG5hdGl2ZUltYWdlLmdldCgpLCAmdGFyZ2V0UHJvcGVydGll
cywgJm5hdGl2ZUltYWdlVGFyZ2V0KTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlVGFyZ2V0IHx8ICFT
VUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOworICAgIEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCksIEdyYXBoaWNzQ29u
dGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkNQVU1lbW9yeSk7CiAKICAgICBkcmF3
KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CiAKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IG5hdGl2ZUltYWdlOwot
ICAgIGhyID0gbmF0aXZlSW1hZ2VUYXJnZXQtPkdldEJpdG1hcCgmbmF0aXZlSW1hZ2UpOwotICAg
IEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLQogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KICNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374851</attachid>
            <date>2019-07-24 19:53:02 -0700</date>
            <delta_ts>2019-07-24 20:02:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200093-20190724195256.patch</filename>
            <type>text/plain</type>
            <size>61749</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wNy0yNCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSVdJQ0JpdG1hcCAo
cmF0aGVyIHRoYW4gSUQyRDFCaXRtYXApIGZvciBOYXRpdmVJbWFnZVB0ciBvbiBGVFcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gSSB3cm90ZSB0
aGUgb3JpZ2luYWwgRGlyZWN0MkQgY29kZSwgSSBkaWQgbm90IHJlYWxpemUgdGhhdCB0aGUgYmFj
a2luZyBtZW1vcnkgZm9yIHRoZQorICAgICAgICBJRDJEMUJpdG1hcCB3YXMgaW5hY2Nlc3NpYmxl
IHNpbmNlIGl0IGlzIGVmZmVjdGl2ZWx5IGEgcmVwcmVzZW50YXRpb24gb2YgR1BVIG1lbW9yeS4g
VGhlcmUKKyAgICAgICAgaXMgbm8gQVBJIHRvIGFjY2VzcyBvciBtb2RpZnkgdGhlIHBpeGVscy4K
KworICAgICAgICBJbnN0ZWFkLCBNU0ROIGRvY3VtZW50YXRpb24gaW5kaWNhdGVzIHRoYXQgd2Ug
c2hvdWxkIGJlIHVzaW5nIElXSUNCaXRtYXAgb2JqZWN0cywgd2hpY2ggYXJlCisgICAgICAgIGNv
bnZlcnRlZCB0byBJRDJEMUJpdG1hcCBvYmplY3RzIHdoZW4gdGhpbmdzIGFyZSByZWFkeSB0byBi
ZSByZW5kZXJlZC4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUg
VGV4dHVyZU1hcHBlciBiYWNrZW5kIHRvIGRvIGVmZmljaWVudCBjb21wb3NpdGluZyBhbmQgdGls
ZQorICAgICAgICBkcmF3aW5nLCBzaW5jZSB0aGUgZGF0YSBiYWNraW5nIHRoZSBiaXRtYXAgY2Fu
IG5vdyBiZSBhY2Nlc3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFsbG93aW5nIHVzCisgICAgICAgIHRv
IHN1cHBvcnQgZmlsdGVycyBhbmQgb3RoZXIgZWZmZWN0cy4KKworICAgICAgICAqIFBsYXRmb3Jt
RlRXLmNtYWtlOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6SW1hZ2VFeHRyYWN0b3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdM
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdEZXZpY2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6bmF0aXZlSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorCiAyMDE5LTA3LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaWx0ZXIgU0RQIGMgbGluZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRX
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIGluY2x1ZGUocGxhdGZvcm0vQ3VybC5jbWFrZSkK
IGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVycy5jbWFrZSkKLSMgRklYTUU6IEVuYWJsZQot
IyBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UpCitpbmNsdWRlKHBsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7RGlyZWN0WF9JTkNMVURFX0RJUlN9IgpAQCAtMTQsMzgg
KzEzLDE3NCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvd2luIgotICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iKQorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCispCisKK2xpc3QoQVBQRU5EIFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzIgorKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBhY2Nlc3Np
YmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAorICAgIGFjY2Vzc2liaWxpdHkvd2luL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwCisgICAgYWNjZXNzaWJpbGl0eS93aW4vQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwCisKKyAgICBlZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3Bw
CisKKyAgICBodG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcAorCisgICAgcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCisgICAgcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorICAg
IHBhZ2Uvd2luL0ZyYW1lV2luLmNwcAogICAgIHBhZ2Uvd2luL0ZyYW1lV2luRGlyZWN0MkQuY3Bw
CiAKKyAgICBwbGF0Zm9ybS9DdXJzb3IuY3BwCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKKyAgICBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorCisgICAgcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorCisgICAgcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKKworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckRpcmVjdFdyaXRlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9ESUJQaXhlbERhdGEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UG9p
bnREaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRmxvYXRSZWN0RGlyZWN0
MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0U2l6ZURpcmVjdDJELmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFdpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVEaXJl
Y3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJEaXJlY3QyRC5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbnRQb2ludFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50
UmVjdFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50U2l6ZVdpbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBs
ZUZvbnREYXRhRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFs
eXplckhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRpb25N
YXRyaXhEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRp
b25NYXRyaXhXaW4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRy
b2xsZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9DdXJsU1NMSGFuZGxlV2luLmNw
cAorICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0ZU5vdGlmaWVyV2luLmNwcAogCisgICAgcGxh
dGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCiAKKyAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKyAgICBwbGF0Zm9ybS93aW4v
Qml0bWFwSW5mby5jcHAKKyAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0RlZldu
ZFByb2NXaW5kb3dDbGFzcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vRGVsYXlMb2FkZWRNb2R1bGVz
RW51bWVyYXRvci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxh
dGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAorICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0V2ZW50TG9vcFdpbi5jcHAKKyAgICBwbGF0Zm9y
bS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKKyAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVz
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9JbXBvcnRlZEZ1bmN0aW9uc0VudW1lcmF0b3IuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL0ltcG9ydGVkTW9kdWxlc0VudW1lcmF0b3IuY3BwCisgICAgcGxhdGZv
cm0vd2luL0tleUV2ZW50V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAorICAgIHBsYXRmb3JtL3dp
bi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hh
cmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1BFSW1hZ2UuY3BwCisgICAgcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VF
dmVudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU1NMS2V5R2Vu
ZXJhdG9yV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKyAg
ICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisgICAgcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9TdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3Iu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCisgICAgcGxhdGZvcm0vd2luL1Vz
ZXJBZ2VudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorICAgIHBs
YXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9XZWJDb3Jl
SW5zdGFuY2VIYW5kbGUuY3BwCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCisgICAgcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2lu
L1dpZGdldFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vV2luZG93TWVzc2FnZUJyb2FkY2FzdGVy
LmNwcAorCisgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKQorCitsaXN0KEFQUEVO
RCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKKyAgICBhY2Nlc3NpYmlsaXR5L3dp
bi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oCisKKyAgICBwYWdlL3dpbi9GcmFtZVdp
bi5oCisKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudC5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaGFyZWRHRElPYmplY3QuaAorCisgICAgcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorICAg
IHBsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vQ09NUHRyLmgKKyAg
ICBwbGF0Zm9ybS93aW4vRGVmV25kUHJvY1dpbmRvd0NsYXNzLmgKKyAgICBwbGF0Zm9ybS93aW4v
R0RJT2JqZWN0Q291bnRlci5oCisgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5oCisgICAg
cGxhdGZvcm0vd2luL0hXbmREQy5oCisgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisg
ICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKKyAgICBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuaAorICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAor
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmgKKyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2Jq
ZWN0LmgKKyAgICBwbGF0Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5oCisgICAgcGxhdGZvcm0v
d2luL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuaAorICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaAor
ICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaAorICAgIHBsYXRmb3JtL3dp
bi9XaW5kb3dzVG91Y2guaAorKQorCitsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTCisgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3RoZW1lV2luLmNzcworICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy90aGVtZVdpblF1aXJrcy5jc3MKICkKIAogbGlzdChBUFBFTkQgV2ViQ29y
ZV9MSUJSQVJJRVMKQEAgLTY1LDQgKzIwMCwyNCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1
cHBvcnRfTElCUkFSSUVTCiAgICAgc2hsd2FwaQogKQogCitmaWxlKENPUFkKKyAgICAiJHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5jc3MiCisg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBw
bGUuanMiCisgICAgREVTVElOQVRJT04KKyAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vV2ViS2l0LnJlc291cmNlcworKQorCitpZiAoRVhJU1RTICR7V0VCS0lUX0xJQlJBUklF
U19ESVJ9L2V0Yy9zc2wvY2VydC5wZW0pCisgICAgbWFrZV9kaXJlY3RvcnkoJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzKQorICAg
IGZpbGUoQ09QWQorICAgICAgICAke1dFQktJVF9MSUJSQVJJRVNfRElSfS9ldGMvc3NsL2NlcnQu
cGVtCisgICAgICAgIERFU1RJTkFUSU9OCisgICAgICAgICR7Q01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZfS9XZWJLaXQucmVzb3VyY2VzL2NlcnRpZmljYXRlcworICAgICkKKyAgICBmaWxl
KFJFTkFNRQorICAgICAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0
LnJlc291cmNlcy9jZXJ0aWZpY2F0ZXMvY2VydC5wZW0KKyAgICAgICAgJHtDTUFLRV9SVU5USU1F
X09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNvdXJjZXMvY2VydGlmaWNhdGVzL2NhY2VydC5w
ZW0KKyAgICApCitlbmRpZiAoKQorCiBzZXQoV2ViQ29yZV9PVVRQVVRfTkFNRSBXZWJDb3JlJHtE
RUJVR19TVUZGSVh9KQpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDc3ODUpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDctMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIElXSUNCaXRtYXAgKHJhdGhlciB0aGFuIElEMkQxQml0bWFwKSBmb3IgTmF0
aXZlSW1hZ2VQdHIgb24gRlRXCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDAwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhbC9QbGF0Zm9ybUZUVy5jbWFrZToKKwogMjAxOS0wNy0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgY29u
c3RydWN0b3JzIGV4cGxpY2l0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
RlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1G
VFcuY21ha2UJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSwxOCBAQCBsaXN0KEFQUEVO
RCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3Bw
CiAKICAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKworICAgIHN5c3RlbS9DbG9j
a0dlbmVyaWMuY3BwCisKKyAgICBzeXN0ZW0vd2luL1NvdW5kV2luLmNwcAorCisgICAgdGV4dC9L
aWxsUmluZy5jcHAKKworICAgIHdpbi9Mb2dnaW5nV2luLmNwcAogKQogCiBsaXN0KEFQUEVORCBQ
QUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0xJQlJBUklFU19E
SVJ9L2luY2x1ZGUiCiApCisKK3NldChQQUxfT1VUUFVUX05BTUUgUEFMJHtERUJVR19TVUZGSVh9
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJ
KHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbgogICAgIH0oKSk7CiAjZWxzZQogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Pj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewotI2lmIFVTRShDRykKKyNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkK
ICAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9y
dGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxp
YWJseSBpcyBmb3VuZC4KICAgICAgICAgLy8gRm9yIG5vdywgb25seSBzdXBwb3J0IFBORywgSlBF
RyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgogICAgICAgICAiaW1hZ2Uv
cG5nIl9zLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw2ICs1OSwxMSBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAorLy8g
RklYTUUKKyNkZWZpbmUgR0xfVkVSVEVYX1NIQURFUiAweDhCMzEKKyNkZWZpbmUgR0xfRlJBR01F
TlRfU0hBREVSIDB4OEIzMAorLy8KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEFOR0xF
U2hhZGVyVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4NCw2ICsyODQsMTQgQEAgcHVibGljOgogICAgIH07CiAgICAgR3JhcGhpY3NDb250ZXh0KFBh
aW50SW52YWxpZGF0aW9uUmVhc29ucyk7CiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgZW51bSBj
bGFzcyBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBDUFVN
ZW1vcnksCisgICAgICAgIEdQVU1lbW9yeQorICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29u
dGV4dFR5cGUpOworI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3Jt
Q29udGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKIApAQCAtMzM5LDYgKzM0NywxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCiAKKyNpZiBVU0UoRElSRUNU
MkQpCisgICAgdm9pZCBkcmF3RGV2aWNlQml0bWFwKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4m
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24g
PSBJbWFnZU9yaWVudGF0aW9uKCkpOworI2VuZGlmCisKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJF
Q1QyRCkKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxs
UGF0dGVybigpOwpAQCAtNjA3LDYgKzYxOSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNU
MkQpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoSERDLCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNU
LCBib29sIGhhc0FscGhhID0gZmFsc2UpOworICAgIHZvaWQgcGxhdGZvcm1Jbml0KFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUpOwogICAgIHZvaWQg
ZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogICAgIHZvaWQgZHJhd1dp
dGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI0NzQz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+KTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIGNvbnN0OwogI2VsaWYgVVNFKERJ
UkVDVDJEKQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKLSAgICBzdGF0aWMgQ09NUHRyPElE
MkQxQml0bWFwPiBzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4pOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OworICAgIHN0YXRpYyBDT01QdHI8SVdJQ0Jp
dG1hcD4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsK
ICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIGNvbnN0OwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgJKHJldmlzaW9u
IDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTUsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAj
aWYgVVNFKENHKQogdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7
CiAjZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Cit0eXBlZGVmIENPTVB0cjxJV0lDQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKICNl
bGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1h
Z2VQdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvT3BlbkdMU2hpbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw4ICsyMCwxMyBAQAogI2lmbmRlZiBPcGVuR0xTaGltc19oCiAjZGVmaW5lIE9wZW5HTFNo
aW1zX2gKIAorI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVkZSA8R0wvZ2wuaD4KKyNpbmNsdWRlIDxH
TEVTMi9nbDIuaD4KKyNlbHNlCiAjaW5jbHVkZSA8R0wvZ2wuaD4KICNpbmNsdWRlIDxHTC9nbGV4
dC5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEdMX0VTX1ZFUlNJT05fMl8wKQogLy8gU29tZSBv
cGVuR0wgRVMgc3lzdGVtcyBtaXNzIHRoaXMgdHlwZWRlZi4KQEAgLTM3LDYgKzQyLDcgQEAgT3Bl
bkdMRnVuY3Rpb25UYWJsZSogb3BlbkdMRnVuY3Rpb25UYWJsZQogCiAjaWYgT1MoV0lORE9XUykK
ICNkZWZpbmUgR0xBUElFTlRSWSBfX3N0ZGNhbGwKK3R5cGVkZWYgY2hhciBHTGNoYXI7CiAjZWxz
ZQogI2RlZmluZSBHTEFQSUVOVFJZCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEV4dGUKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNF
KENBSVJPKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENBKQogUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7CiAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlv
biBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgSG9z
dFdpbmRvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkJpdG1hcFRleHR1cmUuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKQEAgLTU0LDYgKzU1LDExIEBAIHZvaWQgQml0bWFwVGV4
dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHUKIAogICAgIHNvdXJjZUxheWVyLT5wYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3VyY2VSZWN0KTsKIAorI2lmIFVTRShESVJFQ1Qy
RCkKKyAgICAvLyBXZSBjYW4ndCBhY2Nlc3MgdGhlIGJpdHMgaW4gdGhlIGltYWdlIGJ1ZmZlciB3
aXRoIGFuIGFjdGl2ZSBiZWdpbkRyYXcuCisgICAgY29udGV4dC5lbmREcmF3KCk7CisjZW5kaWYK
KwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDIs
NiArNDMsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjZW5kaWYKIAorI2lm
IFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4K
KyNlbmRpZgorCiAjaWYgT1MoREFSV0lOKQogI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfOF84Xzhf
OF9SRVYgMHg4MzY3CiAjZW5kaWYKQEAgLTE1Niw2ICsxNjIsMjkgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYQogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9
IGZyYW1lSW1hZ2UuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0
ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworI2Vs
aWYgVVNFKERJUkVDVDJEKQorICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0aGUgYml0bWFwJ3MgbWVt
b3J5IHdoZW4gaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIEJlZ2luRHJhdy9FbmREcmF3CisgICAg
V0lDUmVjdCByY0xvY2sgPSB7IDAsIDAsIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5o
ZWlnaHQoKSB9OworCisgICAgQ09NUHRyPElXSUNCaXRtYXBMb2NrPiBiaXRtYXBEYXRhOworICAg
IEhSRVNVTFQgaHIgPSBmcmFtZUltYWdlLT5Mb2NrKCZyY0xvY2ssIFdJQ0JpdG1hcExvY2tSZWFk
LCAmYml0bWFwRGF0YSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47
CisKKyAgICBVSU5UIHN0cmlkZSA9IDA7CisgICAgaHIgPSBiaXRtYXBEYXRhLT5HZXRTdHJpZGUo
JnN0cmlkZSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBieXRlc1BlckxpbmUgPSBzdHJpZGU7CisKKyAgICBVSU5UIGJ1ZmZlclNpemUgPSAwOworICAg
IFdJQ0luUHJvY1BvaW50ZXIgZGF0YVB0ciA9IG51bGxwdHI7CisgICAgaHIgPSBiaXRtYXBEYXRh
LT5HZXREYXRhUG9pbnRlcigmYnVmZmVyU2l6ZSwgJmRhdGFQdHIpOworICAgIGlmICghU1VDQ0VF
REVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZGF0YVB0cik7CiAjZW5kaWYKIAogICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdl
RGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRlc1BlckxpbmUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1h
cHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAJKHJldmlzaW9uIDI0NzQz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsOCArMjU3LDEw
IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogICAgIDo6Z2xEZWxl
dGVUZXh0dXJlcygxLCAmbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKICNlbmRpZgogCisjaWYgVVNF
KENBSVJPKQogICAgIGlmIChtX3ZhbykKICAgICAgICAgZGVsZXRlVmVydGV4QXJyYXkobV92YW8p
OworI2VuZGlmCiAKICAgICBhdXRvKiBhY3RpdmVDb250ZXh0ID0gYWN0aXZlQ29udGV4dHMoKS50
YWtlTGFzdChbdGhpc10oYXV0byogaXQpIHsgcmV0dXJuIGl0ID09IHRoaXM7IH0pOwogICAgIEFT
U0VSVF9VTlVTRUQoYWN0aXZlQ29udGV4dCwgISFhY3RpdmVDb250ZXh0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRERpcmVjdDJE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dDNERGlyZWN0MkQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYg
VVNFKERJUkVDVDJEKQorCisjaW5jbHVkZSAiQ09NUHRyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8ZDJkMWVmZmVjdHMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
On5JbWFnZUV4dHJhY3RvcigpID0gZGVmYXVsdDsKKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlm
ICghaW1hZ2VQaXhlbHMgfHwgaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBjYW52YXNTaXplLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
M0QpICYmIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxkMmQxLmg+CkBAIC01
NCw3ICs1NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMKIAog
ICAgIC8vIENyZWF0ZSBhIERDIHJlbmRlciB0YXJnZXQuCiAgICAgYXV0byB0YXJnZXRQcm9wZXJ0
aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9UQVJHRVRfVFlQ
RV9ERUZBVUxULAotICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX0lHTk9SRSksCisgICAgICAgIEQyRDE6OlBpeGVsRm9y
bWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCBEMkQxX0FMUEhBX01PREVfUFJFTVVMVElQ
TElFRCksCiAgICAgICAgIDAsIDAsIEQyRDFfUkVOREVSX1RBUkdFVF9VU0FHRV9OT05FLCBEMkQx
X0ZFQVRVUkVfTEVWRUxfREVGQVVMVCk7CiAKICAgICBIUkVTVUxUIGhyID0gR3JhcGhpY3NDb250
ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZURDUmVuZGVyVGFyZ2V0KCZ0YXJnZXRQcm9wZXJ0
aWVzLCByZW5kZXJUYXJnZXQpOwpAQCAtNjIsNyArNjMsMTIgQEAgR3JhcGhpY3NDb250ZXh0OjpH
cmFwaGljc0NvbnRleHQoSERDIGhkYwogCiAgICAgKCpyZW5kZXJUYXJnZXQpLT5CaW5kREMoaGRj
LCAmcmVjdCk7CiAKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKCpyZW5kZXJUYXJnZXQpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGUoKnJlbmRlclRhcmdldCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSk7Cit9CisKK0dyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgQml0bWFwUmVuZGVyaW5n
Q29udGV4dFR5cGUgcmVuZGVyZXJUeXBlKQoreworICAgIHBsYXRmb3JtSW5pdChwbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dCwgcmVuZGVyZXJUeXBlKTsKIH0KIAogSUQyRDFGYWN0b3J5KiBHcmFwaGlj
c0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKQpAQCAtMTA2LDcgKzExMiw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGgKICAgICBESUJQaXhlbERhdGEgcGl4ZWxEYXRh
KGJpdG1hcCk7CiAKICAgICBhdXRvIHRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJn
ZXRQcm9wZXJ0aWVzKCk7Ci0gICAgdGFyZ2V0UHJvcGVydGllcy5waXhlbEZvcm1hdCA9IEQyRDE6
OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCBEMkQxX0FMUEhBX01PREVf
SUdOT1JFKTsKKyAgICB0YXJnZXRQcm9wZXJ0aWVzLnBpeGVsRm9ybWF0ID0gRDJEMTo6UGl4ZWxG
b3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxU
SVBMSUVEKTsKIAogICAgIENPTVB0cjxJRDJEMURDUmVuZGVyVGFyZ2V0PiByZW5kZXJUYXJnZXQ7
CiAgICAgSFJFU1VMVCBociA9IHN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlRENSZW5kZXJUYXJnZXQo
JnRhcmdldFByb3BlcnRpZXMsICZyZW5kZXJUYXJnZXQpOwpAQCAtMTE4LDcgKzEyNCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGgKICAgICBpZiAoIVNVQ0NFRURF
RChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUocmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBtX2RhdGEgPSBuZXcg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHJlbmRlclRhcmdldC5nZXQoKSwgQml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhk
YzsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIg
c3RhdGUuCiAgICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOwpAQCAtMTI5LDEw
ICsxMzUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgaAogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5k
ZXJUYXJnZXQpCiB7CisgICAgcGxhdGZvcm1Jbml0KHJlbmRlclRhcmdldCwgQml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUluaXQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgQml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGUgcmVuZGVyaW5nVHlwZSkKK3sKICAgICBpZiAoIXJlbmRlclRhcmdldCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShyZW5kZXJUYXJnZXQpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUocmVuZGVyVGFyZ2V0LCByZW5kZXJpbmdUeXBlKTsKIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KICAg
ICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CkBAIC0xOTUsNyArMjA2LDE3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICAvLyBGSVhNRTog
bV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRy
PElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8
SVdJQ0JpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK3sKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKKyAgICBIUkVTVUxU
IGhyID0gcGxhdGZvcm1Db250ZXh0KCktPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAoaW1hZ2Uu
Z2V0KCksICZkZXZpY2VCaXRtYXApOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZHJhd0RldmljZUJpdG1hcChkZXZpY2VCaXRtYXAsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdEZXZpY2VCaXRtYXAoY29uc3QgQ09NUHRyPElEMkQxQml0
bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MSw3ICsz
MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250CiAgICAgRElC
UGl4ZWxEYXRhIHBpeGVsRGF0YShzb3VyY2VCaXRtYXAuZ2V0KCkpOwogICAgIEFTU0VSVChwaXhl
bERhdGEuYml0c1BlclBpeGVsKCkgPT0gMzIpOwogCi0gICAgYXV0byBiaXRtYXBQcm9wZXJ0aWVz
ID0gRDJEMTo6Qml0bWFwUHJvcGVydGllcyhEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX0lHTk9SRSkpOworICAgIGF1dG8gYml0bWFw
UHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFByb3BlcnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhH
SV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSk7
CiAKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gcGxh
dGZvcm1Db250ZXh0KCktPkNyZWF0ZUJpdG1hcChwaXhlbERhdGEuc2l6ZSgpLCBwaXhlbERhdGEu
YnVmZmVyKCksIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCAmYml0bWFwUHJvcGVydGllcywgJmJp
dG1hcCk7CkBAIC0zMjIsMTMgKzM0MywxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Rv
dHNGb3JEb2N1bWVuCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQpCitHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBHcmFwaGljc0NvbnRl
eHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlIHJlbmRlcmluZ1R5cGUpCiAgICAgOiBtX3Jl
bmRlclRhcmdldChyZW5kZXJUYXJnZXQpCisgICAgLCBtX3JlbmRlcmVyVHlwZShyZW5kZXJpbmdU
eXBlKQogewogICAgIGlmICghbV9yZW5kZXJUYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJlZ2luRHJhdygpOworICAgIGlmIChtX3JlbmRlcmVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHQ6
OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpCisgICAgICAgIGJlZ2luRHJh
dygpOwogfQogCiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoKQpAQCAtMzM2LDcgKzM1OSw4IEBAIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWMKICAgICBpZiAoIW1fcmVuZGVyVGFyZ2V0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBlbmREcmF3KCk7CisgICAgaWYgKGJlZ2luRHJhd0NvdW50KQorICAg
ICAgICBlbmREcmF3KCk7CiB9CiAKIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpicnVzaFdpdGhDb2xvcihjb25zdCBEMkQxX0NPTE9S
X0YmIGNvbG9yKQpAQCAtNDI0LDYgKzQ0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlOjpiZWcKIHsKICAgICBBU1NFUlQobV9yZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAg
IG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKyAgICArK2JlZ2luRHJhd0NvdW50OwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdygpCkBAIC00MzMs
NyArNDU4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogICAg
IEhSRVNVTFQgaHIgPSBtX3JlbmRlclRhcmdldC0+RW5kRHJhdygmZmlyc3QsICZzZWNvbmQpOwog
CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBp
biBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9
JWxkLCBzZWNvbmQ9JWxkIiwgaHIsIGZpcnN0LCBzZWNvbmQpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCBpbiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhy
PSV4ZCwgZmlyc3Q9JWxkLCBzZWNvbmQ9JWxkIiwgaHIsIGZpcnN0LCBzZWNvbmQpOworCisgICAg
LS1iZWdpbkRyYXdDb3VudDsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OnJlc3RvcmUoKQpAQCAtNTc5LDYgKzYwNiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0dGVybihJbWFnZSYKICAgICAvLyBJZiB3ZSBvbmx5IHdhbnQgYSBzdWJzZXQgb2YgdGhl
IGJpdG1hcCwgd2UgbmVlZCB0byBjcmVhdGUgYSBjcm9wcGVkIGJpdG1hcCBpbWFnZS4gQWNjb3Jk
aW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLAogICAgIC8vIHRoaXMgZG9lcyBub3QgYWxsb2NhdGUg
bmV3IGJpdG1hcCBtZW1vcnkuCiAgICAgaWYgKGltYWdlLndpZHRoKCkgPiBkZXN0UmVjdC53aWR0
aCgpIHx8IGltYWdlLmhlaWdodCgpID4gZGVzdFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgQVNT
RVJUKDApOworICAgICAgICAvKgogICAgICAgICBmbG9hdCBkcGlYID0gMDsKICAgICAgICAgZmxv
YXQgZHBpWSA9IDA7CiAgICAgICAgIHRpbGVJbWFnZS0+R2V0RHBpKCZkcGlYLCAmZHBpWSk7CkBA
IC01OTEsMTAgKzYyMCwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1h
Z2UmCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAgICAgICAgICAgICAgICB0aWxl
SW1hZ2UgPSBzdWJJbWFnZTsKICAgICAgICAgfQorICAgICAgICAqLwogICAgIH0KIAorICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0LT5DcmVh
dGVCaXRtYXBGcm9tV2ljQml0bWFwKHRpbGVJbWFnZS5nZXQoKSwgbnVsbHB0ciwgJmJpdG1hcCk7
CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKICAgICBDT01QdHI8
SUQyRDFCaXRtYXBCcnVzaD4gcGF0dGVybkJydXNoOwotICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0
LT5DcmVhdGVCaXRtYXBCcnVzaCh0aWxlSW1hZ2UuZ2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRp
ZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIGhyID0gY29udGV4dC0+
Q3JlYXRlQml0bWFwQnJ1c2goYml0bWFwLmdldCgpLCAmYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLCAm
YnJ1c2hQcm9wZXJ0aWVzLCAmcGF0dGVybkJydXNoKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhy
KSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlRGlyZWN0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAkocmV2
aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqKTsK
KyAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqLCBH
cmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlKTsKICAgICB+R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCk7CiAKICAgICBlbnVtIERpcmVjdDJETGF5ZXJUeXBl
IHsgQXhpc0FsaWduZWRDbGlwLCBMYXllckNsaXAgfTsKQEAgLTk4LDYgKzk4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlY29tcHV0ZVN0cm9rZVN0eWxlKCk7CiAKICAgICBDT01QdHI8SUQyRDFS
ZW5kZXJUYXJnZXQ+IG1fcmVuZGVyVGFyZ2V0OworICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgbV9yZW5kZXJlclR5cGU7CiAgICAgSGFzaE1hcDx1
aW50MzJfdCwgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPj4gbV9zb2xpZENvbG9yZWRCcnVz
aENhY2hlOwogICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gbV93aGl0ZUJydXNoOwog
ICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gbV96ZXJvQnJ1c2g7CkBAIC0xMjYsNiAr
MTI3LDggQEAgcHJpdmF0ZToKICAgICBTdHJva2VTdHlsZSBtX3N0cm9rZVN0eWxlIHsgU29saWRT
dHJva2UgfTsKICAgICBEYXNoQXJyYXkgbV9kYXNoZXM7CiAKKyAgICB1bnNpZ25lZCBiZWdpbkRy
YXdDb3VudCB7IDAgfTsKKwogICAgIGZsb2F0IG1fbWl0ZXJMaW1pdCB7IDEwLjBmIH07CiAgICAg
ZmxvYXQgbV9kYXNoT2Zmc2V0IHsgMCB9OwogICAgIGZsb2F0IG1fcGF0dGVybldpZHRoIHsgMS4w
ZiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGF0YURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
YXRhRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6
OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCAvKiBhY2NlbGVyYXRlUmVuZGVyaW5nICovLCBmbG9hdCAv
KiByZXNvbHV0aW9uU2NhbGUgKi8pIGNvbnN0CiB7Ci0gICAgYXV0byBwbGF0Zm9ybUNvbnRleHQg
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQogICAgIGF1dG8gbnVtQnl0ZXMgPSByZWN0
LmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTUsNDcgKzUzLDMxIEBAIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXQKICAgICBpZiAoIXJlc3VsdERhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQml0bWFwSW5mbyBiaXRtYXBJbmZvID0g
Qml0bWFwSW5mbzo6Y3JlYXRlQm90dG9tVXAoc2l6ZSk7Ci0KLSAgICB2b2lkKiBwaXhlbHMgPSBu
dWxscHRyOwotICAgIGF1dG8gYml0bWFwID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVESUJTZWN0
aW9uKDAsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgMCwgMCkpOwotCi0g
ICAgSFduZERDIHdpbmRvd0RDKG51bGxwdHIpOwotICAgIGF1dG8gYml0bWFwREMgPSBhZG9wdEdE
SU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOwotICAgIEhHRElPQkogb2xk
Qml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIGJpdG1hcC5nZXQoKSk7Ci0K
LSAgICBDT01QdHI8SUQyRDFHZGlJbnRlcm9wUmVuZGVyVGFyZ2V0PiBnZGlSZW5kZXJUYXJnZXQ7
Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+UXVlcnlJbnRlcmZhY2UoX191dWlk
b2YoSUQyRDFHZGlJbnRlcm9wUmVuZGVyVGFyZ2V0KSwgKHZvaWQqKikmZ2RpUmVuZGVyVGFyZ2V0
KTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBI
REMgaGRjID0gbnVsbHB0cjsKLSAgICBociA9IGdkaVJlbmRlclRhcmdldC0+R2V0REMoRDJEMV9E
Q19JTklUSUFMSVpFX01PREVfQ09QWSwgJmhkYyk7CisgICAgV0lDUmVjdCByY0xvY2sgPSB7IDAs
IDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSB9OwogCi0gICAgQk9PTCBvayA9IDo6Qml0
Qmx0KGJpdG1hcERDLmdldCgpLCAwLCAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIGhk
YywgcmVjdC54KCksIHJlY3QueSgpLCBTUkNDT1BZKTsKKyAgICAvLyBXZSBjYW5ub3QgYWNjZXNz
IHRoZSBkYXRhIGJhY2tpbmcgYW4gSVdJQ0JpdG1hcCB3aGlsZSBhbiBhY3RpdmUgZHJhdyBzZXNz
aW9uIGlzIG9wZW4uCisgICAgY29udGV4dC0+ZW5kRHJhdygpOwogCi0gICAgUkVDVCB1cGRhdGVS
ZWN0ID0geyAwLCAwLCAwLCAwIH07Ci0gICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPlJlbGVhc2VE
QygmdXBkYXRlUmVjdCk7CisgICAgQ09NUHRyPElXSUNCaXRtYXBMb2NrPiBiaXRtYXBEYXRhTG9j
azsKKyAgICBIUkVTVUxUIGhyID0gYml0bWFwU291cmNlLT5Mb2NrKCZyY0xvY2ssIFdJQ0JpdG1h
cExvY2tSZWFkLCAmYml0bWFwRGF0YUxvY2spOworICAgIGlmIChTVUNDRUVERUQoaHIpKSB7Cisg
ICAgICAgIFVJTlQgYnVmZmVyU2l6ZSA9IDA7CisgICAgICAgIFdJQ0luUHJvY1BvaW50ZXIgZGF0
YVB0ciA9IG51bGxwdHI7CisgICAgICAgIGhyID0gYml0bWFwRGF0YUxvY2stPkdldERhdGFQb2lu
dGVyKCZidWZmZXJTaXplLCAmZGF0YVB0cik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKQor
ICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLCByZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhUHRyKSwgbnVtQnl0ZXMudW5zYWZlR2V0KCkpOworICAgIH0KIAotICAgIGlmICghb2sp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIE9uY2Ugd2UgYXJlIGRvbmUgbW9kaWZ5
aW5nIHRoZSBkYXRhLCB1bmxvY2sgdGhlIGJpdG1hcAorICAgIGJpdG1hcERhdGFMb2NrID0gbnVs
bHB0cjsKIAotICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKSwgcGl4ZWxzLCBudW1CeXRlcy51bnNh
ZmVHZXQoKSk7CisgICAgY29udGV4dC0+YmVnaW5EcmF3KCk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25zdCBVaW50OENsYW1wZWRB
cnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwgY29uc3Qg
SW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCAvKiBhY2NlbGVyYXRl
UmVuZGVyaW5nICovLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCiB7Ci0gICAgYXV0byBwbGF0Zm9y
bUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDT01QdHI8SUQyRDFC
aXRtYXBSZW5kZXJUYXJnZXQ+IHJlbmRlclRhcmdldChRdWVyeSwgcGxhdGZvcm1Db250ZXh0KTsK
LSAgICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElE
MkQxQml0bWFwPiBiaXRtYXA7Ci0gICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+R2V0Qml0
bWFwKCZiaXRtYXApOwotICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLQogICAgIEFTU0VSVChz
b3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+
IDApOwogCkBAIC0xMzIsNyArMTE0LDMzIEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRh
KGNvbnN0IFVpbnQKICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKICAgICAgICAg
cmV0dXJuOwogCisgICAgLy8gV2UgY2Fubm90IGFjY2VzcyB0aGUgZGF0YSBiYWNraW5nIGFuIElX
SUNCaXRtYXAgd2hpbGUgYW4gYWN0aXZlIGRyYXcgc2Vzc2lvbiBpcyBvcGVuLgorICAgIGNvbnRl
eHQtPmVuZERyYXcoKTsKKworICAgIFdJQ1JlY3QgcmNMb2NrID0geyAwLCAwLCBzb3VyY2VTaXpl
LndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkgfTsKKworICAgIENPTVB0cjxJV0lDQml0bWFw
TG9jaz4gYml0bWFwRGF0YUxvY2s7CisgICAgSFJFU1VMVCBociA9IGJpdG1hcFNvdXJjZS0+TG9j
aygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrV3JpdGUsICZiaXRtYXBEYXRhTG9jayk7CisgICAgaWYg
KCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBVSU5UIHN0cmlkZSA9IDA7
CisgICAgaHIgPSBiaXRtYXBEYXRhTG9jay0+R2V0U3RyaWRlKCZzdHJpZGUpOworICAgIGlmICgh
U1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUlOVCBidWZmZXJTaXplID0g
MDsKKyAgICBXSUNJblByb2NQb2ludGVyIGRhdGFQdHIgPSBudWxscHRyOworICAgIGhyID0gYml0
bWFwRGF0YUxvY2stPkdldERhdGFQb2ludGVyKCZidWZmZXJTaXplLCAmZGF0YVB0cik7CisgICAg
aWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoYnVmZmVy
U2l6ZSA9PSBzb3VyY2UuYnl0ZUxlbmd0aCgpKTsKKwogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVy
Um93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKKworICAgIEFTU0VSVChzcmNCeXRlc1BlclJv
dyA9PSBzdHJpZGUpOworCiAgICAgY29uc3QgdWludDhfdCogc3JjUm93cyA9IHNvdXJjZS5kYXRh
KCkgKyAob3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQpLnVuc2FmZUdldCgp
OwogCiAgICAgYXV0byByb3cgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oc3JjQnl0ZXNQZXJS
b3cpOwpAQCAtMTUwLDEyICsxNTgsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEo
Y29uc3QgVWludAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihy
b3cuZ2V0KCkgKyBiYXNleClbMF0gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
c3JjUm93cyArIGJhc2V4KVswXTsKICAgICAgICAgfQogCi0gICAgICAgIEQyRDFfUkVDVF9VIGRz
dFJlY3QgPSBEMkQxOjpSZWN0VShkZXN0UG9pbnQueCgpLCBkZXN0UG9pbnQueSgpICsgeSwgZGVz
dFBvaW50LngoKSArIHNpemUud2lkdGgoKSwgZGVzdFBvaW50LnkoKSArIHkgKyAxKTsKLSAgICAg
ICAgaHIgPSBiaXRtYXAtPkNvcHlGcm9tTWVtb3J5KCZkc3RSZWN0LCByb3cuZ2V0KCksIHNyY0J5
dGVzUGVyUm93KTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgICAgICBtZW1j
cHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YVB0ciArIHkgKiBzcmNCeXRlc1BlclJvdyks
IHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwogCiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0
ZXNQZXJSb3c7CiAgICAgfQorCisgICAgLy8gT25jZSB3ZSBhcmUgZG9uZSBtb2RpZnlpbmcgdGhl
IGRhdGEsIHVubG9jayB0aGUgYml0bWFwCisgICAgYml0bWFwRGF0YUxvY2sgPSBudWxscHRyOwor
CisgICAgY29udGV4dC0+YmVnaW5EcmF3KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRh
dGFEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0
MkQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQCBzdHJ1Y3QgSW1hZ2VCdWZmZXJE
YXRhIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3c7
CiAKICAgICAvLyBPbmx5IGZvciBzb2Z0d2FyZSBJbWFnZUJ1ZmZlcnMuCi0gICAgdm9pZCogZGF0
YSB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OwotICAgIElEMkQxUmVuZGVyVGFyZ2V0KiBtX2Nv
bXBhdGlibGVUYXJnZXQgeyBudWxscHRyIH07CisgICAgQ09NUHRyPElXSUNCaXRtYXA+IGJpdG1h
cFNvdXJjZTsKIAogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0RGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNj
ZWxlcmF0ZVJlbmRlcmluZywgZmxvYXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdDsKICAgICB2b2lk
IHB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNp
emUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1
ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03Miw3ICs3NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXIKICAgICByZXR1cm4gYnVmZmVy
OwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgLypjb2xvclNwYWNlKi8sIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSAvKmNvbG9yU3BhY2UqLywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBI
b3N0V2luZG93KiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCYgc3VjY2VzcykKICAgICA6
IG1fbG9naWNhbFNpemUoc2l6ZSkKICAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25T
Y2FsZSkKIHsKQEAgLTk3LDIwICs5OSwyMyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplCiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byByZW5kZXJUYXJnZXQgPSB0YXJnZXRDb250ZXh0ID8gdGFyZ2V0
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBudWxscHRyOwotICAgIGlmICghcmVuZGVyVGFy
Z2V0KQotICAgICAgICByZW5kZXJUYXJnZXQgPSBHcmFwaGljc0NvbnRleHQ6OmRlZmF1bHRSZW5k
ZXJUYXJnZXQoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZW5kZXJUYXJnZXQpOwotCi0gICAgQ09N
UHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0OwotICAgIEQyRDFfU0la
RV9GIGRlc2lyZWRTaXplID0gRmxvYXRTaXplKG1fbG9naWNhbFNpemUpOwotICAgIEQyRDFfU0la
RV9VIHBpeGVsU2l6ZSA9IEludFNpemUobV9sb2dpY2FsU2l6ZSk7Ci0gICAgSFJFU1VMVCBociA9
IHJlbmRlclRhcmdldC0+Q3JlYXRlQ29tcGF0aWJsZVJlbmRlclRhcmdldCgmZGVzaXJlZFNpemUs
ICZwaXhlbFNpemUsIG51bGxwdHIsIEQyRDFfQ09NUEFUSUJMRV9SRU5ERVJfVEFSR0VUX09QVElP
TlNfR0RJX0NPTVBBVElCTEUsICZiaXRtYXBDb250ZXh0KTsKKyAgICBtX2RhdGEuZGF0YSA9IFZl
Y3RvcjxjaGFyPihudW1CeXRlcy51bnNhZmVHZXQoKSwgMCk7CisKKyAgICBIUkVTVUxUIGhyID0g
SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1h
cEZyb21NZW1vcnkobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgR1VJRF9XSUNQaXhl
bEZvcm1hdDMyYnBwUEJHUkEsIHN0YXRpY19jYXN0PFVJTlQ+KG1fZGF0YS5ieXRlc1BlclJvdy51
bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PFVJTlQ+KG51bUJ5dGVzLnVuc2FmZUdldCgpKSwgcmVp
bnRlcnByZXRfY2FzdDxCWVRFKj4obV9kYXRhLmRhdGEuZGF0YSgpKSwgJm1fZGF0YS5iaXRtYXBT
b3VyY2UpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byB0YXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQx
X1JFTkRFUl9UQVJHRVRfVFlQRV9ERUZBVUxULAorICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChE
WEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQp
LAorICAgICAgICAwLCAwLCBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFU
VVJFX0xFVkVMX0RFRkFVTFQpOworCisgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRt
YXBDb250ZXh0OworICAgIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNy
ZWF0ZVdpY0JpdG1hcFJlbmRlclRhcmdldChtX2RhdGEuYml0bWFwU291cmNlLmdldCgpLCAmdGFy
Z2V0UHJvcGVydGllcywgJmJpdG1hcENvbnRleHQpOwogICAgIGlmICghYml0bWFwQ29udGV4dCB8
fCAhU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gTm90ZTogVGhpcyBw
bGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRo
ZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgbV9kYXRhLmNvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7
Ci0gICAgbV9kYXRhLm1fY29tcGF0aWJsZVRhcmdldCA9IHJlbmRlclRhcmdldDsKIAogICAgIHN1
Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTM3LDIzICsxNDIsMzEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6
Zmx1c2hDb250ZXh0KCkgY29uc3QKICAgICBjb250ZXh0KCkuZmx1c2goKTsKIH0KIAotc3RhdGlj
IENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFC
aXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgQ09NUHRyPElXSUNC
aXRtYXA+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElXSUNCaXRtYXAqIGltYWdlLCBj
b25zdCBJbnRTaXplJiBib3VuZHMpCiB7Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdl
ID8gaW1hZ2UtPkdldFNpemUoKSA6IEZsb2F0U2l6ZSgpOworICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgOiBGbG9hdFNpemUoKTsKIAogICAg
IGlmIChpbWFnZSAmJiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZVNpemUud2lkdGgoKSkgIT0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMud2lkdGgoKSkgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbWFnZVNpemUuaGVpZ2h0KCkpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYm91bmRzLmhlaWdo
dCgpKSkpIHsKICAgICAgICAgRDJEX1BPSU5UXzJVIG9yaWdpbiA9IHsgfTsKLSAgICAgICAgRDJE
MV9SRUNUX1UgY3JvcHBlZERpbWVuc3Rpb25zID0gSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMp
OwotICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNyb3BwZWRJbWFnZTsKLSAgICAgICAgSFJF
U1VMVCBociA9IGNyb3BwZWRJbWFnZS0+Q29weUZyb21CaXRtYXAoJm9yaWdpbiwgaW1hZ2UsICZj
cm9wcGVkRGltZW5zdGlvbnMpOwotICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKLSAgICAgICAg
ICAgIHJldHVybiBjcm9wcGVkSW1hZ2U7CisgICAgICAgIFdJQ1JlY3QgY3JvcHBlZERpbWVuc2lv
bnMgPSB7IDAsIDAsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkgfTsKKworICAgICAg
ICBDT01QdHI8SVdJQ0JpdG1hcENsaXBwZXI+IGJpdG1hcENsaXBwZXI7CisgICAgICAgIEhSRVNV
TFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3Jl
YXRlQml0bWFwQ2xpcHBlcigmYml0bWFwQ2xpcHBlcik7CisgICAgICAgIGlmIChTVUNDRUVERUQo
aHIpKSB7CisgICAgICAgICAgICBociA9IGJpdG1hcENsaXBwZXItPkluaXRpYWxpemUoaW1hZ2Us
ICZjcm9wcGVkRGltZW5zaW9ucyk7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgewor
ICAgICAgICAgICAgICAgIENPTVB0cjxJV0lDQml0bWFwPiBjcm9wcGVkQml0bWFwOworICAgICAg
ICAgICAgICAgIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5
KCktPkNyZWF0ZUJpdG1hcEZyb21Tb3VyY2UoaW1hZ2UsIFdJQ0JpdG1hcE5vQ2FjaGUsICZjcm9w
cGVkQml0bWFwKTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyb3BwZWRCaXRtYXA7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoQ09NUHRyPElEMkQxQml0bWFw
PiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50
U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVz
b2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVC
aXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKENPTVB0cjxJV0lDQml0bWFwPiYmIGltYWdl
LCBJbnRTaXplIGludGVybmFsU2l6ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNr
aW5nU3RvcmVTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1h
Z2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgaW50ZXJuYWxT
aXplKTsKQEAgLTE3MCw3ICsxODMsNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRt
YXBJbWFnZUFmCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3QKIHsKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGltYWdlOworICAgIENPTVB0
cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGlt
YWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTk0LDMx
ICsyMDcsMzEgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbQogICAg
IHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAotQ09NUHRyPElEMkQxQml0bWFwPiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyKQorQ09NUHRyPElXSUNCaXRtYXA+IEltYWdlQnVmZmVyOjpzaW5rSW50
b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7
CiAgICAgLy8gRklYTUU6IFNlZSBpZiB3ZSBjYW4gcmV1c2UgdGhlIG9uLWhhcmR3YXJlIGltYWdl
LgogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKIH0KIAotQ09NUHRyPElEMkQxQml0bWFwPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorQ09NUHRyPElXSUNC
aXRtYXA+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9j
YXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
KTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gaW1hZ2U7Ci0gICAgSFJFU1VMVCBociA9IGJp
dG1hcFRhcmdldC0+R2V0Qml0bWFwKCZpbWFnZSk7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChocikp
OwotCiAgICAgLy8gRklYTUU6IG1fZGF0YS5kYXRhIGlzIG51bGxwdHIgZXZlbiB3aGVuIGFza2lu
ZyB0byBjb3B5IGJhY2tpbmcgc3RvcmUgbGVhZGluZyB0byB0ZXN0IGZhaWx1cmVzLgotICAgIGlm
IChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSAmJiAhbV9kYXRhLmRhdGEpCisgICAg
aWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlICYmIG1fZGF0YS5kYXRhLmlzRW1w
dHkoKSkKICAgICAgICAgY29weUJlaGF2aW9yID0gRG9udENvcHlCYWNraW5nU3RvcmU7CiAKKyAg
ICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSAq
IG1fZGF0YS5ieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgIENP
TVB0cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNh
c2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgICAgICBociA9IEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVCaXRtYXBGcm9tU291cmNlKG1f
ZGF0YS5iaXRtYXBTb3VyY2UuZ2V0KCksIFdJQ0JpdG1hcE5vQ2FjaGUsICZpbWFnZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAg
ICAgRDJEMV9SRUNUX1UgYmFja2luZ1N0b3JlRGltZW5zdGlvbnMgPSBJbnRSZWN0KEludFBvaW50
KCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplKTsKLSAgICAgICAgICAgIGltYWdlLT5Db3B5RnJv
bU1lbW9yeSgmYmFja2luZ1N0b3JlRGltZW5zdGlvbnMsIG1fZGF0YS5kYXRhLCAzMik7CisgICAg
ICAgICAgICBociA9IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgp
LT5DcmVhdGVCaXRtYXBGcm9tU291cmNlKG1fZGF0YS5iaXRtYXBTb3VyY2UuZ2V0KCksIFdJQ0Jp
dG1hcENhY2hlT25EZW1hbmQsICZpbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjQwLDMwICsy
NTMsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaQogCiB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXV0byBiaXRtYXBUYXJnZXQg
PSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpKTsKLSAgICBhdXRvIG91dHB1dFRhcmdldCA9IGRlc3RDb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpOworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0
OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBpbWFnZTsKLSAgICBIUkVTVUxU
IGhyID0gYml0bWFwVGFyZ2V0LT5HZXRCaXRtYXAoJmltYWdlKTsKLSAgICBpZiAoIVNVQ0NFRURF
RChocikpCi0gICAgICAgIHJldHVybjsKKyAgICBGbG9hdFNpemUgY3VycmVudEltYWdlU2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShtX2RhdGEuYml0bWFwU291cmNlKTsKIAotICAgIC8vIElmIHRoZSBy
ZW5kZXIgdGFyZ2V0cyBmb3IgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gY29udGV4dHMgZG8g
bm90IG1hdGNoLCBtb3ZlIHRoZSBpbWFnZSBvdmVyLgotICAgIGlmIChkZXN0Q29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSAhPSBtX2RhdGEubV9jb21wYXRpYmxlVGFyZ2V0KSB7Ci0gICAgICAgIENP
TVB0cjxJRDJEMUJpdG1hcD4gc291cmNlSW1hZ2UgPSBpbWFnZTsKLSAgICAgICAgaW1hZ2UgPSBu
dWxscHRyOwotCi0gICAgICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFBy
b3BlcnRpZXMoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkdl
dERlc2t0b3BEcGkoJmJpdG1hcFByb3BlcnRpZXMuZHBpWCwgJmJpdG1hcFByb3BlcnRpZXMuZHBp
WSk7Ci0gICAgICAgIGhyID0gb3V0cHV0VGFyZ2V0LT5DcmVhdGVTaGFyZWRCaXRtYXAoX191dWlk
b2YoSUQyRDFCaXRtYXApLCBzb3VyY2VJbWFnZS5nZXQoKSwgJmJpdG1hcFByb3BlcnRpZXMsICZp
bWFnZSk7Ci0gICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgLy8gWW91IGNhbid0IGNvbnZlcnQgYSBJV0lDQml0bWFwIHRvIGEgSUQyRDFC
aXRtYXAgd2l0aCBhbiBhY3RpdmUgR3JhcGhpY3NDb250ZXh0IGF0dGFjaGVkIHRvIGl0LgorICAg
IG1fZGF0YS5jb250ZXh0LT5lbmREcmF3KCk7CiAKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNS
ZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2Nh
bGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
bV9kYXRhLmJpdG1hcFNvdXJjZSwgY3VycmVudEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiAKLSAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlLT5HZXRTaXplKCksIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
LCBibGVuZE1vZGUpOworICAgIG1fZGF0YS5jb250ZXh0LT5iZWdpbkRyYXcoKTsKIAogICAgIGRl
c3RDb250ZXh0LmZsdXNoKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHJl
dmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBA
QCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250CiAKIE5hdGl2ZUltYWdl
UHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikKIHsKLSAgICBpZiAoIW1fbmF0aXZlRGVjb2RlciB8fCAhbV9yZW5kZXJUYXJnZXQp
CisgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgQ09NUHRyPElXSUNCaXRtYXBGcmFtZURlY29kZT4gZnJhbWU7CkBAIC0yNDksMTIgKzI0OSwx
MiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlCiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGhyID0gY29udmVy
dGVyLT5Jbml0aWFsaXplKGZyYW1lLmdldCgpLCBHVUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQQkdS
QSwgV0lDQml0bWFwRGl0aGVyVHlwZU5vbmUsIG51bGxwdHIsIDAuZiwgV0lDQml0bWFwUGFsZXR0
ZVR5cGVDdXN0b20pOworICAgIGhyID0gY29udmVydGVyLT5Jbml0aWFsaXplKGZyYW1lLmdldCgp
LCBHVUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQUkdCQSwgV0lDQml0bWFwRGl0aGVyVHlwZU5vbmUs
IG51bGxwdHIsIDAuZiwgV0lDQml0bWFwUGFsZXR0ZVR5cGVDdXN0b20pOwogICAgIGlmICghU1VD
Q0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDT01QdHI8SUQyRDFC
aXRtYXA+IGJpdG1hcDsKLSAgICBociA9IG1fcmVuZGVyVGFyZ2V0LT5DcmVhdGVCaXRtYXBGcm9t
V2ljQml0bWFwKGNvbnZlcnRlci5nZXQoKSwgbnVsbHB0ciwgJmJpdG1hcCk7CisgICAgQ09NUHRy
PElXSUNCaXRtYXA+IGJpdG1hcDsKKyAgICBociA9IHN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNy
ZWF0ZUJpdG1hcEZyb21Tb3VyY2UoY29udmVydGVyLmdldCgpLCBXSUNCaXRtYXBDYWNoZU9uRGVt
YW5kLCAmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyYwogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJ
bWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPkdl
dFNpemUoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIGNsYW1wVG88c2l6ZV90PihpbWFnZVNpemUu
aGVpZ2h0KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNsYW1w
VG88c2l6ZV90PihpbWFnZVNpemUud2lkdGgpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6
ZS53aWR0aCgpKSkgeworICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShp
bWFnZSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLmhlaWdo
dCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNsYW1wVG88aW50
PihpbWFnZVNpemUud2lkdGgoKSkgPT0gc3RhdGljX2Nhc3Q8aW50PihzcmNTaXplLndpZHRoKCkp
KSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRz
dFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVp
Z2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTIgKzMzLDMzIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2lu
Z0ZhY3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0
b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdpbmdGYWN0b3J5KSB7CisgICAgICAgIEhSRVNV
TFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0ltYWdpbmdGYWN0b3J5LCBudWxscHRy
LCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdTKCZpbWFnaW5nRmFjdG9yeSkpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gaW1hZ2luZ0ZhY3Rvcnk7Cit9CisKIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKGltYWdl
LT5HZXRTaXplKCkpIDogSW50U2l6ZSgpOworICAgIFVJTlQgd2lkdGggPSAwOworICAgIFVJTlQg
aGVpZ2h0ID0gMDsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
SFJFU1VMVCBociA9IGltYWdlLT5HZXRTaXplKCZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIEludFNpemUo
d2lkdGgsIGhlaWdodCk7CiB9CiAKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCkBAIC00Niw4ICs2NywyOCBAQCBib29sIG5hdGl2ZUltYWdlSGFz
QWxwaGEoY29uc3QgTmF0aXZlSW1hCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBhbHBoYU1vZGUgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKS5hbHBo
YU1vZGU7Ci0gICAgcmV0dXJuIChhbHBoYU1vZGUgPj0gRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJ
UExJRUQpICYmIChhbHBoYU1vZGUgPD0gRDJEMV9BTFBIQV9NT0RFX1NUUkFJR0hUKTsKKyAgICBX
SUNQaXhlbEZvcm1hdEdVSUQgcGl4ZWxGb3JtYXRHVUlEID0geyB9OworICAgIEhSRVNVTFQgaHIg
PSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoJnBpeGVsRm9ybWF0R1VJRCk7CisgICAgaWYgKCFTVUND
RUVERUQoaHIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogU2hvdWxk
IHdlIGp1c3QgY2hlY2sgdGhlIHBpeGVsRm9ybWF0R1VJRCBmb3IgcmVsZXZhbnQgSUQncyB3ZSB1
c2U/CisKKyAgICBDT01QdHI8SVdJQ0NvbXBvbmVudEluZm8+IGNvbXBvbmVudEluZm87CisgICAg
aHIgPSBpbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVDb21wb25lbnRJbmZvKHBpeGVsRm9ybWF0R1VJ
RCwgJmNvbXBvbmVudEluZm8pOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgQ09NUHRyPElXSUNQaXhlbEZvcm1hdEluZm8+IHBpeGVsRm9ybWF0
SW5mbyhRdWVyeSwgY29tcG9uZW50SW5mby5nZXQoKSk7CisgICAgaWYgKCFwaXhlbEZvcm1hdElu
Zm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFVJTlQgY2hhbm5lbENvdW50ID0gMDsK
KyAgICBociA9IHBpeGVsRm9ybWF0SW5mby0+R2V0Q2hhbm5lbENvdW50KCZjaGFubmVsQ291bnQp
OworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIGNoYW5uZWxDb3VudCA+IDM7CiB9CiAKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKQEAgLTc0LDcgKzExNSwx
MiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0CiAKICAgICBmbG9h
dCBvcGFjaXR5ID0gMS4wZjsKIAotICAgIHBsYXRmb3JtQ29udGV4dC0+RHJhd0JpdG1hcChpbWFn
ZS5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQyRDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9E
RV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNyY1JlY3QpOworICAgIENPTVB0cjxJRDJEMUJp
dG1hcD4gYml0bWFwOworICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJp
dG1hcEZyb21XaWNCaXRtYXAoaW1hZ2UuZ2V0KCksICZiaXRtYXApOworICAgIGlmICghU1VDQ0VF
REVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1Db250ZXh0LT5EcmF3Qml0
bWFwKGJpdG1hcC5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQyRDFfQklUTUFQX0lOVEVSUE9M
QVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNyY1JlY3QpOwogICAgIGNvbnRl
eHQuZmx1c2goKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBQYXRoOjpzdHJva2VDb250YWlucyhT
dHJva2VTdHlsZUFwcAogCiAgICAgQVNTRVJUKGFwcGxpZXIpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJUYXJnZXQoKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5kZXJUYXJnZXQoKSwgR3JhcGhpY3NDb250
ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBhcHBsaWVy
LT5zdHJva2VTdHlsZSgmc2NyYXRjaENvbnRleHQpOwogCiAgICAgQk9PTCBjb250YWluc1BvaW50
ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0
dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDE1IEBAIElEMkQxQml0bWFwQnJ1c2gqIFBhdHRlcm46
OmNyZWF0ZVBsYXRmb3IKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocGxhdGZvcm1Db250ZXh0KTsKIAorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXR0ZXJuSW1hZ2UubmF0aXZlSW1hZ2UoJmNvbnRleHQpOwor
CisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7CisgICAgSFJFU1VMVCBociA9IHBsYXRm
b3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwRnJvbVdpY0JpdG1hcChuYXRpdmVJbWFnZS5nZXQoKSwg
JmJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKwogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBhdHRlcm5CcnVzaCA9IG51bGxwdHI7Ci0gICAg
SFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybklt
YWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywg
JmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CisgICAgaHIgPSBwbGF0Zm9ybUNvbnRl
eHQtPkNyZWF0ZUJpdG1hcEJydXNoKGJpdG1hcC5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGll
cywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURF
RChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lvbiAyNDc0MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1NSw4ICszNTUsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZEZpbGVSZWFkCiAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGxpc3QtPnZhbHVlKQogICAgICAg
ICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHJlYWRlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9OworICAgIHJl
dHVybjsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzIsNyArMjAzMiw3IEBA
IGJvb2wgUmVuZGVyRWxlbWVudDo6Y2hlY2tGb3JSZXBhaW50RHVyaW4KIAogUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKKyNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIC8vIFRoaXMgY2FuIG9ubHkgYmUgZW5h
YmxlZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhlIG9yaWVudGF0aW9uIGZsYWcgaW4gdGhlaXIg
ZHJhd2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50YXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjQ3NDMy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwMSw3ICs0MDEsOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
YWRqdXN0VGlsZWRCYWNrCiB7CiAgICAgaWYgKG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2lu
ZykgewogICAgICAgICBhdXRvIHRpbGVDb3ZlcmFnZSA9IGNvbXB1dGVQYWdlVGlsZWRCYWNraW5n
Q292ZXJhZ2UobV9vd25pbmdMYXllcik7Ci0gICAgICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxl
Q292ZXJhZ2UodGlsZUNvdmVyYWdlKTsKKyAgICAgICAgaWYgKGF1dG8qIHRpbGVkQmFja2luZyA9
IHRoaXMtPnRpbGVkQmFja2luZygpKQorICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxl
Q292ZXJhZ2UodGlsZUNvdmVyYWdlKTsKICAgICB9CiAKICAgICBpZiAobV9vd25pbmdMYXllci5o
YXNDb21wb3NpdGVkU2Nyb2xsYWJsZU92ZXJmbG93KCkgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAogCiAjaWYgVVNFKERJUkVDVDJEKQog
I2luY2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgogI2VuZGlmCiAKQEAgLTIzMiwyMiArMjMzLDI1IEBAIE5hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb24KICAgICBpZiAoIW1fcGFnZSB8fCAhdGFy
Z2V0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHBsYXRmb3Jt
Q29udGV4dCA9IHRhcmdldENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIEFTU0VSVChw
bGF0Zm9ybUNvbnRleHQpOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBuYXRpdmVJbWFnZTsKKyAg
ICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5
KCktPkNyZWF0ZUJpdG1hcChyZWN0KCkud2lkdGgoKSwgcmVjdCgpLmhlaWdodCgpLCBHVUlEX1dJ
Q1BpeGVsRm9ybWF0MzJicHBQUkdCQSwgV0lDQml0bWFwQ2FjaGVPbkxvYWQsICZuYXRpdmVJbWFn
ZSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6OlJlbmRlclRhcmdldFByb3BlcnRpZXMo
RDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVMVCwKKyAgICAgICAgRDJEMTo6UGl4ZWxGb3Jt
YXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBM
SUVEKSwKKyAgICAgICAgMCwgMCwgRDJEMV9SRU5ERVJfVEFSR0VUX1VTQUdFX05PTkUsIEQyRDFf
RkVBVFVSRV9MRVZFTF9ERUZBVUxUKTsKIAogICAgIC8vIERyYXcgdGhlIFNWRyBpbnRvIGEgYml0
bWFwLgotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gbmF0aXZlSW1hZ2VUYXJn
ZXQ7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQ29tcGF0aWJsZVJl
bmRlclRhcmdldChJbnRTaXplKHJlY3QoKS5zaXplKCkpLCAmbmF0aXZlSW1hZ2VUYXJnZXQpOwot
ICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+
IG5hdGl2ZUltYWdlVGFyZ2V0OworICAgIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0
b3J5KCktPkNyZWF0ZVdpY0JpdG1hcFJlbmRlclRhcmdldChuYXRpdmVJbWFnZS5nZXQoKSwgJnRh
cmdldFByb3BlcnRpZXMsICZuYXRpdmVJbWFnZVRhcmdldCk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZVRhcmdldCB8fCAhU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsK
KyAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgp
LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpDUFVNZW1vcnkp
OwogCiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCi0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBu
YXRpdmVJbWFnZTsKLSAgICBociA9IG5hdGl2ZUltYWdlVGFyZ2V0LT5HZXRCaXRtYXAoJm5hdGl2
ZUltYWdlKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0KICAgICByZXR1cm4gbmF0aXZl
SW1hZ2U7CiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374855</attachid>
            <date>2019-07-24 20:02:43 -0700</date>
            <delta_ts>2019-07-25 15:02:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200093-20190724200237.patch</filename>
            <type>text/plain</type>
            <size>61149</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDE5LTA3LTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBJV0lDQml0bWFwIChy
YXRoZXIgdGhhbiBJRDJEMUJpdG1hcCkgZm9yIE5hdGl2ZUltYWdlUHRyIG9uIEZUVworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBJIHdyb3RlIHRo
ZSBvcmlnaW5hbCBEaXJlY3QyRCBjb2RlLCBJIGRpZCBub3QgcmVhbGl6ZSB0aGF0IHRoZSBiYWNr
aW5nIG1lbW9yeSBmb3IgdGhlCisgICAgICAgIElEMkQxQml0bWFwIHdhcyBpbmFjY2Vzc2libGUg
c2luY2UgaXQgaXMgZWZmZWN0aXZlbHkgYSByZXByZXNlbnRhdGlvbiBvZiBHUFUgbWVtb3J5LiBU
aGVyZQorICAgICAgICBpcyBubyBBUEkgdG8gYWNjZXNzIG9yIG1vZGlmeSB0aGUgcGl4ZWxzLgor
CisgICAgICAgIEluc3RlYWQsIE1TRE4gZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCB3ZSBz
aG91bGQgYmUgdXNpbmcgSVdJQ0JpdG1hcCBvYmplY3RzLCB3aGljaCBhcmUKKyAgICAgICAgY29u
dmVydGVkIHRvIElEMkQxQml0bWFwIG9iamVjdHMgd2hlbiB0aGluZ3MgYXJlIHJlYWR5IHRvIGJl
IHJlbmRlcmVkLgorCisgICAgICAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIHRoZSBU
ZXh0dXJlTWFwcGVyIGJhY2tlbmQgdG8gZG8gZWZmaWNpZW50IGNvbXBvc2l0aW5nIGFuZCB0aWxl
CisgICAgICAgIGRyYXdpbmcsIHNpbmNlIHRoZSBkYXRhIGJhY2tpbmcgdGhlIGJpdG1hcCBjYW4g
bm93IGJlIGFjY2Vzc2VkIGFuZCBtYW5pcHVsYXRlZCwgYWxsb3dpbmcgdXMKKyAgICAgICAgdG8g
c3VwcG9ydCBmaWx0ZXJzIGFuZCBvdGhlciBlZmZlY3RzLgorCisgICAgICAgICogUGxhdGZvcm1G
VFcuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZUdMOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdEZXZpY2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOjp+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnaW5EcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3QyRC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFn
aW5nRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJh
Z2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorCiAyMDE5LTA3LTE1ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWx0ZXIgU0RQIGMgbGluZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUZUVy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIGlu
Y2x1ZGUocGxhdGZvcm0vQ3VybC5jbWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVy
cy5jbWFrZSkKLSMgRklYTUU6IEVuYWJsZQotIyBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2UpCitpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UpCiAKIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7RGlyZWN0
WF9JTkNMVURFX0RJUlN9IgpAQCAtMTQsMzggKzEzLDE3NCBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfSU5DTFVERV9ESVJFCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL3dpbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvd2luIgotICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS93aW4iKQorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4i
CispCisKK2xpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0RF
UklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzIgorKQogCiBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKKyAgICBhY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNw
cAorICAgIGFjY2Vzc2liaWxpdHkvd2luL0FjY2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwCisgICAg
YWNjZXNzaWJpbGl0eS93aW4vQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwCisKKyAg
ICBlZGl0aW5nL3dpbi9FZGl0b3JXaW4uY3BwCisKKyAgICBodG1sL0hUTUxTZWxlY3RFbGVtZW50
V2luLmNwcAorCisgICAgcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisgICAgcGFnZS93
aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorICAgIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcAogICAgIHBh
Z2Uvd2luL0ZyYW1lV2luRGlyZWN0MkQuY3BwCiAKKyAgICBwbGF0Zm9ybS9DdXJzb3IuY3BwCisg
ICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKyAgICBwbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmNwcAorCisgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAorCisgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAor
ICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKworICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmNwcAorCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKKwor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xFUy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0
dGluZy5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcAorCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbXBsZXhUZXh0Q29udHJvbGxlckRpcmVjdFdyaXRl
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Zsb2F0UG9pbnREaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRmxvYXRSZWN0RGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0Zsb2F0U2l6ZURpcmVjdDJELmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0
MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFEaXJlY3QyRC5j
cHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR2x5cGhQYWdlVHJlZU5vZGVEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzTGF5ZXJEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0V2luLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbnRQb2ludFdpbi5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW50UmVjdFdpbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW50U2l6ZVdpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRo
RGlyZWN0MkQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdHRlcm5EaXJlY3QyRC5j
cHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhRGlyZWN0MkQuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFseXplckhlbHBlci5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vVHJhbnNmb3JtYXRpb25NYXRyaXhEaXJlY3QyRC5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vVHJhbnNmb3JtYXRpb25NYXRyaXhXaW4uY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL3dpbi9DdXJsU1NMSGFuZGxlV2luLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL0Rv
d25sb2FkQnVuZGxlV2luLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvd2luL05ldHdvcmtTdGF0
ZU5vdGlmaWVyV2luLmNwcAogCisgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCiAKKyAgICBwbGF0Zm9ybS93aW4vQlN0
cmluZy5jcHAKKyAgICBwbGF0Zm9ybS93aW4vQml0bWFwSW5mby5jcHAKKyAgICBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9DdXJzb3JXaW4u
Y3BwCisgICAgcGxhdGZvcm0vd2luL0RlZlduZFByb2NXaW5kb3dDbGFzcy5jcHAKICAgICBwbGF0
Zm9ybS93aW4vRGVsYXlMb2FkZWRNb2R1bGVzRW51bWVyYXRvci5jcHAKKyAgICBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNw
cAorICAgIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL0V2
ZW50TG9vcFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKKyAg
ICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL3dpbi9JbXBvcnRl
ZEZ1bmN0aW9uc0VudW1lcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vd2luL0ltcG9ydGVkTW9kdWxl
c0VudW1lcmF0b3IuY3BwCisgICAgcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorICAgIHBs
YXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9Mb2dn
aW5nV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorICAg
IHBsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0v
d2luL1BFSW1hZ2UuY3BwCisgICAgcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4v
UGxhdGZvcm1TY3JlZW5XaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAK
KyAgICBwbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAorICAgIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKyAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
REIuY3BwCisgICAgcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKyAgICBwbGF0
Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorICAgIHBsYXRmb3JtL3dpbi9TdHJ1Y3R1cmVk
RXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3IuY3BwCisgICAgcGxhdGZvcm0vd2luL1N5c3RlbUlu
Zm8uY3BwCisgICAgcGxhdGZvcm0vd2luL1VzZXJBZ2VudFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93
aW4vV0NEYXRhT2JqZWN0LmNwcAorICAgIHBsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNw
cAorICAgIHBsYXRmb3JtL3dpbi9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuY3BwCisgICAgcGxhdGZv
cm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisgICAgcGxhdGZvcm0vd2luL1doZWVsRXZl
bnRXaW4uY3BwCisgICAgcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKKyAgICBwbGF0Zm9ybS93
aW4vV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmNwcAorCisgICAgcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcAorKQorCitsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKKyAgICBhY2Nlc3NpYmlsaXR5L3dpbi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldp
bi5oCisKKyAgICBwYWdlL3dpbi9GcmFtZVdpbi5oCisKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRElCUGl4ZWxEYXRhLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNv
bnRyb2xsZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxl
ckNsaWVudC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVj
dDJELmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3cuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaAorCisgICAg
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAorICAgIHBsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmgKKyAg
ICBwbGF0Zm9ybS93aW4vQ09NUHRyLmgKKyAgICBwbGF0Zm9ybS93aW4vRGVmV25kUHJvY1dpbmRv
d0NsYXNzLmgKKyAgICBwbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5oCisgICAgcGxhdGZv
cm0vd2luL0dESVV0aWxpdGllcy5oCisgICAgcGxhdGZvcm0vd2luL0hXbmREQy5oCisgICAgcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisgICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
V2luLmgKKyAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuaAorICAgIHBsYXRmb3Jt
L3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmgK
KyAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmgKKyAgICBwbGF0Zm9ybS93aW4vV2ViQ29y
ZUJ1bmRsZVdpbi5oCisgICAgcGxhdGZvcm0vd2luL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oCisg
ICAgcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuaAorICAgIHBsYXRmb3JtL3dpbi9X
aW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaAorICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dNZXNzYWdl
TGlzdGVuZXIuaAorICAgIHBsYXRmb3JtL3dpbi9XaW5kb3dzVG91Y2guaAorKQorCitsaXN0KEFQ
UEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCisgICAgJHtXRUJDT1JFX0RJUn0v
Y3NzL3RoZW1lV2luLmNzcworICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy90aGVtZVdpblF1aXJrcy5j
c3MKICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKQEAgLTY1LDQgKzIwMCwyNCBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiAgICAgc2hsd2FwaQog
KQogCitmaWxlKENPUFkKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNBcHBsZS5jc3MiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVk
aWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMiCisgICAgREVTVElOQVRJT04KKyAgICAk
e0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0LnJlc291cmNlcworKQorCitp
ZiAoRVhJU1RTICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L2V0Yy9zc2wvY2VydC5wZW0pCisgICAg
bWFrZV9kaXJlY3RvcnkoJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5y
ZXNvdXJjZXMvY2VydGlmaWNhdGVzKQorICAgIGZpbGUoQ09QWQorICAgICAgICAke1dFQktJVF9M
SUJSQVJJRVNfRElSfS9ldGMvc3NsL2NlcnQucGVtCisgICAgICAgIERFU1RJTkFUSU9OCisgICAg
ICAgICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9XZWJLaXQucmVzb3VyY2VzL2Nl
cnRpZmljYXRlcworICAgICkKKyAgICBmaWxlKFJFTkFNRQorICAgICAgICAke0NNQUtFX1JVTlRJ
TUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0LnJlc291cmNlcy9jZXJ0aWZpY2F0ZXMvY2VydC5w
ZW0KKyAgICAgICAgJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdC5yZXNv
dXJjZXMvY2VydGlmaWNhdGVzL2NhY2VydC5wZW0KKyAgICApCitlbmRpZiAoKQorCiBzZXQoV2Vi
Q29yZV9PVVRQVVRfTkFNRSBXZWJDb3JlJHtERUJVR19TVUZGSVh9KQpJbmRleDogU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDc3ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDctMjQgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIElXSUNCaXRtYXAgKHJhdGhl
ciB0aGFuIElEMkQxQml0bWFwKSBmb3IgTmF0aXZlSW1hZ2VQdHIgb24gRlRXCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwOTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9QbGF0Zm9ybUZUVy5j
bWFrZToKKwogMjAxOS0wNy0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHNvbWUgY29uc3RydWN0b3JzIGV4cGxpY2l0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI0NzQzMikKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTUsOCArNSwxOCBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9vcGVu
c3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCiAKICAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKKworICAgIHN5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCisKKyAgICBzeXN0ZW0vd2lu
L1NvdW5kV2luLmNwcAorCisgICAgdGV4dC9LaWxsUmluZy5jcHAKKworICAgIHdpbi9Mb2dnaW5n
V2luLmNwcAogKQogCiBsaXN0KEFQUEVORCBQQUxfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L2luY2x1ZGUiCiApCisKK3NldChQQUxfT1VU
UFVUX05BTUUgUEFMJHtERUJVR19TVUZGSVh9KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODMsNyArMTgzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbgog
ICAgIH0oKSk7CiAjZWxzZQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewotI2lmIFVTRShDRykKKyNp
ZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKICAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dz
IHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVy
dCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KICAgICAgICAgLy8gRm9y
IG5vdywgb25seSBzdXBwb3J0IFBORywgSlBFRyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzYwOTUyODY+LgogICAgICAgICAiaW1hZ2UvcG5nIl9zLApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCShyZXZpc2lv
biAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMSBAQAogI2luY2x1ZGUgIk9w
ZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAorLy8gRklYTUUKKyNkZWZpbmUgR0xfVkVSVEVYX1NIQURF
UiAweDhCMzEKKyNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSIDB4OEIzMAorLy8KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIEFOR0xFU2hhZGVyVHlwZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNp
b24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw2ICsyODQsMTQgQEAgcHVibGljOgogICAg
IH07CiAgICAgR3JhcGhpY3NDb250ZXh0KFBhaW50SW52YWxpZGF0aW9uUmVhc29ucyk7CiAKKyNp
ZiBVU0UoRElSRUNUMkQpCisgICAgZW51bSBjbGFzcyBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlw
ZSA6IHVpbnQ4X3QgeworICAgICAgICBDUFVNZW1vcnksCisgICAgICAgIEdQVU1lbW9yeQorICAg
IH07CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUpOworI2VuZGlmCisKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsK
IApAQCAtMzM5LDYgKzM0NywxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkp
OwogI2VuZGlmCiAKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgdm9pZCBkcmF3RGV2aWNlQml0bWFw
KGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOworI2VuZGlm
CisKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0
dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwpAQCAtNjA3LDYgKzYxOSw3IEBA
IHByaXZhdGU6CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoSERD
LCBJRDJEMVJlbmRlclRhcmdldCoqLCBSRUNULCBib29sIGhhc0FscGhhID0gZmFsc2UpOworICAg
IHZvaWQgcGxhdGZvcm1Jbml0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgQml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGUpOwogICAgIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRh
cmdldCopPiYpOwogICAgIHZvaWQgZHJhd1dpdGhTaGFkb3coY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2lua0ludG9OYXRp
dmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIGNvbnN0OwogI2VsaWYgVVNFKERJUkVDVDJEKQotICAgIENPTVB0cjxJRDJEMUJpdG1h
cD4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdDsKLSAgICBzdGF0aWMgQ09NUHRyPElEMkQxQml0bWFwPiBzaW5rSW50b05hdGl2ZUltYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
OworICAgIHN0YXRpYyBDT01QdHI8SVdJQ0JpdG1hcD4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIGNvbnN0
OwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKICNpZiBVU0UoRElSRUNU
MkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdp
bmNvZGVjLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTUsNyBA
QCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAjaWYgVVNFKENHKQogdHlwZWRlZiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVm
IENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIENPTVB0cjxJV0lD
Qml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVu
R0xTaGltcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCwxMyBAQAogI2lmbmRlZiBPcGVu
R0xTaGltc19oCiAjZGVmaW5lIE9wZW5HTFNoaW1zX2gKIAorI2lmIE9TKFdJTkRPV1MpCisjaW5j
bHVkZSA8R0wvZ2wuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNlbHNlCiAjaW5jbHVkZSA8
R0wvZ2wuaD4KICNpbmNsdWRlIDxHTC9nbGV4dC5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEdM
X0VTX1ZFUlNJT05fMl8wKQogLy8gU29tZSBvcGVuR0wgRVMgc3lzdGVtcyBtaXNzIHRoaXMgdHlw
ZWRlZi4KQEAgLTM3LDYgKzQyLDcgQEAgT3BlbkdMRnVuY3Rpb25UYWJsZSogb3BlbkdMRnVuY3Rp
b25UYWJsZQogCiAjaWYgT1MoV0lORE9XUykKICNkZWZpbmUgR0xBUElFTlRSWSBfX3N0ZGNhbGwK
K3R5cGVkZWYgY2hhciBHTGNoYXI7CiAjZWxzZQogI2RlZmluZSBHTEFQSUVOVFJZCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAJKHJldmlzaW9u
IDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3
IEBAIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGUKIH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNFKENBSVJPKQorI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKENBKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBo
b3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7
CiAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJl
bmRlcmluZyBkaXJlY3RseSB0byB0aGUgSG9zdFdpbmRvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5j
cHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmUuaCIKIAorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKQEAgLTU0
LDYgKzU1LDExIEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHUKIAog
ICAgIHNvdXJjZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3Vy
Y2VSZWN0KTsKIAorI2lmIFVTRShESVJFQ1QyRCkKKyAgICAvLyBXZSBjYW4ndCBhY2Nlc3MgdGhl
IGJpdHMgaW4gdGhlIGltYWdlIGJ1ZmZlciB3aXRoIGFuIGFjdGl2ZSBiZWdpbkRyYXcuCisgICAg
Y29udGV4dC5lbmREcmF3KCk7CisjZW5kaWYKKwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBp
bWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAkocmV2aXNp
b24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJM
ZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCIK
ICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDIsNiArNDMsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjZW5kaWYKIAorI2lmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlIDxkMmQx
Lmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFSV0lOKQogI2Rl
ZmluZSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYgMHg4MzY3CiAjZW5kaWYKQEAgLTE1Niw2
ICsxNjIsMjkgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYQogICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UuZ2V0KCk7CiAgICAgaW1hZ2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIC8vIFdlIGNh
bid0IGFjY2VzcyB0aGUgYml0bWFwJ3MgbWVtb3J5IHdoZW4gaXQgaXMgaW4gdGhlIG1pZGRsZSBv
ZiBhIEJlZ2luRHJhdy9FbmREcmF3CisgICAgV0lDUmVjdCByY0xvY2sgPSB7IDAsIDAsIHRhcmdl
dFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSB9OworCisgICAgQ09NUHRyPElXSUNC
aXRtYXBMb2NrPiBiaXRtYXBEYXRhOworICAgIEhSRVNVTFQgaHIgPSBmcmFtZUltYWdlLT5Mb2Nr
KCZyY0xvY2ssIFdJQ0JpdG1hcExvY2tSZWFkLCAmYml0bWFwRGF0YSk7CisgICAgaWYgKCFTVUND
RUVERUQoaHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBVSU5UIHN0cmlkZSA9IDA7CisgICAg
aHIgPSBiaXRtYXBEYXRhLT5HZXRTdHJpZGUoJnN0cmlkZSk7CisgICAgaWYgKCFTVUNDRUVERUQo
aHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBieXRlc1BlckxpbmUgPSBzdHJpZGU7CisKKyAg
ICBVSU5UIGJ1ZmZlclNpemUgPSAwOworICAgIFdJQ0luUHJvY1BvaW50ZXIgZGF0YVB0ciA9IG51
bGxwdHI7CisgICAgaHIgPSBiaXRtYXBEYXRhLT5HZXREYXRhUG9pbnRlcigmYnVmZmVyU2l6ZSwg
JmRhdGFQdHIpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YVB0cik7CiAjZW5kaWYK
IAogICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBieXRl
c1BlckxpbmUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVy
ZU1hcHBlci5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTcsOCArMjU3LDEwIEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhp
Y3NDb250ZXh0M0QoKQogICAgIDo6Z2xEZWxldGVUZXh0dXJlcygxLCAmbV9pbnRlcm1lZGlhdGVU
ZXh0dXJlKTsKICNlbmRpZgogCisjaWYgVVNFKENBSVJPKQogICAgIGlmIChtX3ZhbykKICAgICAg
ICAgZGVsZXRlVmVydGV4QXJyYXkobV92YW8pOworI2VuZGlmCiAKICAgICBhdXRvKiBhY3RpdmVD
b250ZXh0ID0gYWN0aXZlQ29udGV4dHMoKS50YWtlTGFzdChbdGhpc10oYXV0byogaXQpIHsgcmV0
dXJuIGl0ID09IHRoaXM7IH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWN0aXZlQ29udGV4dCwgISFh
Y3RpdmVDb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHQzRERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0REaXJlY3QyRC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dDNERGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNpZiBFTkFC
TEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYgVVNFKERJUkVDVDJEKQorCisjaW5jbHVkZSAiQ09N
UHRyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxkMmQxLmg+Cisj
aW5jbHVkZSA8ZDJkMWVmZmVjdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpID0gZGVmYXVsdDsK
KworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCit7
CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0
IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQoreworICAgIGlmICghaW1hZ2VQaXhlbHMgfHwgaW1hZ2VTaXplLmlz
RW1wdHkoKSB8fCBjYW52YXNTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpICYmIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0Um91bmRl
ZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3Qy
RC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlIDxkMmQxLmg+CkBAIC01NCw3ICs1NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6
R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMKIAogICAgIC8vIENyZWF0ZSBhIERDIHJlbmRlciB0YXJn
ZXQuCiAgICAgYXV0byB0YXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVy
dGllcyhEMkQxX1JFTkRFUl9UQVJHRVRfVFlQRV9ERUZBVUxULAotICAgICAgICBEMkQxOjpQaXhl
bEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RFX0lHTk9S
RSksCisgICAgICAgIEQyRDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
LCBEMkQxX0FMUEhBX01PREVfUFJFTVVMVElQTElFRCksCiAgICAgICAgIDAsIDAsIEQyRDFfUkVO
REVSX1RBUkdFVF9VU0FHRV9OT05FLCBEMkQxX0ZFQVRVUkVfTEVWRUxfREVGQVVMVCk7CiAKICAg
ICBIUkVTVUxUIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZURD
UmVuZGVyVGFyZ2V0KCZ0YXJnZXRQcm9wZXJ0aWVzLCByZW5kZXJUYXJnZXQpOwpAQCAtNjIsNyAr
NjMsMTIgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYwogCiAgICAg
KCpyZW5kZXJUYXJnZXQpLT5CaW5kREMoaGRjLCAmcmVjdCk7CiAKLSAgICBtX2RhdGEgPSBuZXcg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCpyZW5kZXJUYXJnZXQpOworICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoKnJlbmRlclRhcmdldCwgQml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7Cit9CisKK0dyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgcmVuZGVyZXJUeXBlKQorewor
ICAgIHBsYXRmb3JtSW5pdChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCwgcmVuZGVyZXJUeXBlKTsK
IH0KIAogSUQyRDFGYWN0b3J5KiBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKQpAQCAt
MTA2LDcgKzExMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGgK
ICAgICBESUJQaXhlbERhdGEgcGl4ZWxEYXRhKGJpdG1hcCk7CiAKICAgICBhdXRvIHRhcmdldFBy
b3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKCk7Ci0gICAgdGFyZ2V0UHJv
cGVydGllcy5waXhlbEZvcm1hdCA9IEQyRDE6OlBpeGVsRm9ybWF0KERYR0lfRk9STUFUX0I4RzhS
OEE4X1VOT1JNLCBEMkQxX0FMUEhBX01PREVfSUdOT1JFKTsKKyAgICB0YXJnZXRQcm9wZXJ0aWVz
LnBpeGVsRm9ybWF0ID0gRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sIEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKTsKIAogICAgIENPTVB0cjxJRDJEMURD
UmVuZGVyVGFyZ2V0PiByZW5kZXJUYXJnZXQ7CiAgICAgSFJFU1VMVCBociA9IHN5c3RlbUZhY3Rv
cnkoKS0+Q3JlYXRlRENSZW5kZXJUYXJnZXQoJnRhcmdldFByb3BlcnRpZXMsICZyZW5kZXJUYXJn
ZXQpOwpAQCAtMTE4LDcgKzEyNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUlu
aXQoSERDIGgKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocmVuZGVyVGFyZ2V0
LmdldCgpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
KHJlbmRlclRhcmdldC5nZXQoKSwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9y
eSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRl
eHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAgICAgc2V0UGxhdGZvcm1GaWxsQ29s
b3IoZmlsbENvbG9yKCkpOwpAQCAtMTI5LDEwICsxMzUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtSW5pdChIREMgaAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1J
bml0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CisgICAgcGxhdGZvcm1Jbml0
KHJlbmRlclRhcmdldCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSUQyRDFSZW5kZXJUYXJnZXQq
IHJlbmRlclRhcmdldCwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgcmVuZGVyaW5nVHlwZSkK
K3sKICAgICBpZiAoIXJlbmRlclRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRh
ID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShyZW5kZXJUYXJnZXQpOworICAg
IG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocmVuZGVyVGFyZ2V0
LCByZW5kZXJpbmdUeXBlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4dCBzdGFydHMg
aW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29s
b3IoKSk7CkBAIC0xOTUsNyArMjA2LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3Jl
UGxhdGZvcm1TdGEKICAgICAvLyBGSVhNRTogbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SVdJQ0JpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3sKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+
IGRldmljZUJpdG1hcDsKKyAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250ZXh0KCktPkNyZWF0
ZUJpdG1hcEZyb21XaWNCaXRtYXAoaW1hZ2UuZ2V0KCksICZkZXZpY2VCaXRtYXApOworICAgIGlm
ICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZHJhd0RldmljZUJpdG1h
cChkZXZpY2VCaXRtYXAsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdEZXZpY2VC
aXRtYXAoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI4MSw3ICszMDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVsZWFzZVdpbmRvd3NDb250CiAgICAgRElCUGl4ZWxEYXRhIHBpeGVsRGF0YShzb3VyY2VCaXRt
YXAuZ2V0KCkpOwogICAgIEFTU0VSVChwaXhlbERhdGEuYml0c1BlclBpeGVsKCkgPT0gMzIpOwog
Ci0gICAgYXV0byBiaXRtYXBQcm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFwUHJvcGVydGllcyhEMkQx
OjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJEMV9BTFBIQV9NT0RF
X0lHTk9SRSkpOworICAgIGF1dG8gYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFByb3Bl
cnRpZXMoRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sIEQyRDFf
QUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSk7CiAKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJp
dG1hcDsKICAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250ZXh0KCktPkNyZWF0ZUJpdG1hcChw
aXhlbERhdGEuc2l6ZSgpLCBwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5ieXRlc1BlclJv
dygpLCAmYml0bWFwUHJvcGVydGllcywgJmJpdG1hcCk7CkBAIC0zMjIsMTMgKzM0MywxNSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0RvdHNGb3JEb2N1bWVuCiB7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCitHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBl
IHJlbmRlcmluZ1R5cGUpCiAgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCisgICAg
LCBtX3JlbmRlcmVyVHlwZShyZW5kZXJpbmdUeXBlKQogewogICAgIGlmICghbV9yZW5kZXJUYXJn
ZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJlZ2luRHJhdygpOworICAgIGlmIChtX3JlbmRl
cmVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpCisgICAgICAgIGJlZ2luRHJhdygpOwogfQogCiBHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoKQpAQCAtMzM2LDcg
KzM1OSw4IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWMKICAgICBp
ZiAoIW1fcmVuZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICBlbmREcmF3KCk7Cisg
ICAgaWYgKGJlZ2luRHJhd0NvdW50KQorICAgICAgICBlbmREcmF3KCk7CiB9CiAKIENPTVB0cjxJ
RDJEMVNvbGlkQ29sb3JCcnVzaD4gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpicnVz
aFdpdGhDb2xvcihjb25zdCBEMkQxX0NPTE9SX0YmIGNvbG9yKQpAQCAtNDI0LDYgKzQ0OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpiZWcKIHsKICAgICBBU1NFUlQo
bV9yZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsK
KyAgICArK2JlZ2luRHJhd0NvdW50OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZTo6ZW5kRHJhdygpCkBAIC00MzMsNyArNDU4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogICAgIEhSRVNVTFQgaHIgPSBtX3JlbmRlclRhcmdldC0+
RW5kRHJhdygmZmlyc3QsICZzZWNvbmQpOwogCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9JWxkLCBzZWNvbmQ9JWxkIiwgaHIsIGZpcnN0LCBz
ZWNvbmQpOworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhyPSV4ZCwgZmlyc3Q9JWxkLCBzZWNvbmQ9JWxkIiwg
aHIsIGZpcnN0LCBzZWNvbmQpOworCisgICAgLS1iZWdpbkRyYXdDb3VudDsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnJlc3RvcmUoKQpAQCAtNTc5LDYgKzYwNiw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYKICAgICAvLyBJZiB3
ZSBvbmx5IHdhbnQgYSBzdWJzZXQgb2YgdGhlIGJpdG1hcCwgd2UgbmVlZCB0byBjcmVhdGUgYSBj
cm9wcGVkIGJpdG1hcCBpbWFnZS4gQWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLAogICAg
IC8vIHRoaXMgZG9lcyBub3QgYWxsb2NhdGUgbmV3IGJpdG1hcCBtZW1vcnkuCiAgICAgaWYgKGlt
YWdlLndpZHRoKCkgPiBkZXN0UmVjdC53aWR0aCgpIHx8IGltYWdlLmhlaWdodCgpID4gZGVzdFJl
Y3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICAvKgogICAgICAgICBm
bG9hdCBkcGlYID0gMDsKICAgICAgICAgZmxvYXQgZHBpWSA9IDA7CiAgICAgICAgIHRpbGVJbWFn
ZS0+R2V0RHBpKCZkcGlYLCAmZHBpWSk7CkBAIC01OTEsMTAgKzYyMCwxNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KGhyKSkKICAgICAgICAgICAgICAgICB0aWxlSW1hZ2UgPSBzdWJJbWFnZTsKICAgICAgICAgfQor
ICAgICAgICAqLwogICAgIH0KIAorICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAg
IEhSRVNVTFQgaHIgPSBjb250ZXh0LT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKHRpbGVJbWFn
ZS5nZXQoKSwgbnVsbHB0ciwgJmJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAg
ICAgICByZXR1cm47CisKICAgICBDT01QdHI8SUQyRDFCaXRtYXBCcnVzaD4gcGF0dGVybkJydXNo
OwotICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0LT5DcmVhdGVCaXRtYXBCcnVzaCh0aWxlSW1hZ2Uu
Z2V0KCksICZiaXRtYXBCcnVzaFByb3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJu
QnJ1c2gpOworICAgIGhyID0gY29udGV4dC0+Q3JlYXRlQml0bWFwQnJ1c2goYml0bWFwLmdldCgp
LCAmYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLCAmYnJ1c2hQcm9wZXJ0aWVzLCAmcGF0dGVybkJydXNo
KTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlRGlyZWN0MkQuaAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURp
cmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqKTsKKyAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCk7CiAK
ICAgICBlbnVtIERpcmVjdDJETGF5ZXJUeXBlIHsgQXhpc0FsaWduZWRDbGlwLCBMYXllckNsaXAg
fTsKQEAgLTk4LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY29tcHV0ZVN0cm9rZVN0
eWxlKCk7CiAKICAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG1fcmVuZGVyVGFyZ2V0Owor
ICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGUgbV9y
ZW5kZXJlclR5cGU7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ09NUHRyPElEMkQxU29saWRDb2xv
ckJydXNoPj4gbV9zb2xpZENvbG9yZWRCcnVzaENhY2hlOwogICAgIENPTVB0cjxJRDJEMVNvbGlk
Q29sb3JCcnVzaD4gbV93aGl0ZUJydXNoOwogICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVz
aD4gbV96ZXJvQnJ1c2g7CkBAIC0xMjYsNiArMTI3LDggQEAgcHJpdmF0ZToKICAgICBTdHJva2VT
dHlsZSBtX3N0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICBEYXNoQXJyYXkgbV9kYXNo
ZXM7CiAKKyAgICB1bnNpZ25lZCBiZWdpbkRyYXdDb3VudCB7IDAgfTsKKwogICAgIGZsb2F0IG1f
bWl0ZXJMaW1pdCB7IDEwLjBmIH07CiAgICAgZmxvYXQgbV9kYXNoT2Zmc2V0IHsgMCB9OwogICAg
IGZsb2F0IG1fcGF0dGVybldpZHRoIHsgMS4wZiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRh
RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCAvKiBhY2Nl
bGVyYXRlUmVuZGVyaW5nICovLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8pIGNvbnN0CiB7
Ci0gICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
LQogICAgIGF1dG8gbnVtQnl0ZXMgPSByZWN0LmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0Owog
ICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTUsNDcgKzUzLDMxIEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZm
ZXJEYXQKICAgICBpZiAoIXJlc3VsdERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgQml0bWFwSW5mbyBiaXRtYXBJbmZvID0gQml0bWFwSW5mbzo6Y3JlYXRlQm90dG9tVXAoc2l6
ZSk7Ci0KLSAgICB2b2lkKiBwaXhlbHMgPSBudWxscHRyOwotICAgIGF1dG8gYml0bWFwID0gYWRv
cHRHRElPYmplY3QoOjpDcmVhdGVESUJTZWN0aW9uKDAsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NP
TE9SUywgJnBpeGVscywgMCwgMCkpOwotCi0gICAgSFduZERDIHdpbmRvd0RDKG51bGxwdHIpOwot
ICAgIGF1dG8gYml0bWFwREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyh3
aW5kb3dEQykpOwotICAgIEhHRElPQkogb2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFw
REMuZ2V0KCksIGJpdG1hcC5nZXQoKSk7Ci0KLSAgICBDT01QdHI8SUQyRDFHZGlJbnRlcm9wUmVu
ZGVyVGFyZ2V0PiBnZGlSZW5kZXJUYXJnZXQ7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29u
dGV4dC0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQyRDFHZGlJbnRlcm9wUmVuZGVyVGFyZ2V0
KSwgKHZvaWQqKikmZ2RpUmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBIREMgaGRjID0gbnVsbHB0cjsKLSAgICBociA9IGdk
aVJlbmRlclRhcmdldC0+R2V0REMoRDJEMV9EQ19JTklUSUFMSVpFX01PREVfQ09QWSwgJmhkYyk7
CisgICAgV0lDUmVjdCByY0xvY2sgPSB7IDAsIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSB9OwogCi0gICAgQk9PTCBvayA9IDo6Qml0Qmx0KGJpdG1hcERDLmdldCgpLCAwLCAwLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIGhkYywgcmVjdC54KCksIHJlY3QueSgpLCBTUkNDT1BZ
KTsKKyAgICAvLyBXZSBjYW5ub3QgYWNjZXNzIHRoZSBkYXRhIGJhY2tpbmcgYW4gSVdJQ0JpdG1h
cCB3aGlsZSBhbiBhY3RpdmUgZHJhdyBzZXNzaW9uIGlzIG9wZW4uCisgICAgY29udGV4dC0+ZW5k
RHJhdygpOwogCi0gICAgUkVDVCB1cGRhdGVSZWN0ID0geyAwLCAwLCAwLCAwIH07Ci0gICAgaHIg
PSBnZGlSZW5kZXJUYXJnZXQtPlJlbGVhc2VEQygmdXBkYXRlUmVjdCk7CisgICAgQ09NUHRyPElX
SUNCaXRtYXBMb2NrPiBiaXRtYXBEYXRhTG9jazsKKyAgICBIUkVTVUxUIGhyID0gYml0bWFwU291
cmNlLT5Mb2NrKCZyY0xvY2ssIFdJQ0JpdG1hcExvY2tSZWFkLCAmYml0bWFwRGF0YUxvY2spOwor
ICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgIFVJTlQgYnVmZmVyU2l6ZSA9IDA7Cisg
ICAgICAgIFdJQ0luUHJvY1BvaW50ZXIgZGF0YVB0ciA9IG51bGxwdHI7CisgICAgICAgIGhyID0g
Yml0bWFwRGF0YUxvY2stPkdldERhdGFQb2ludGVyKCZidWZmZXJTaXplLCAmZGF0YVB0cik7Cisg
ICAgICAgIGlmIChTVUNDRUVERUQoaHIpKQorICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0
YSgpLCByZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhUHRyKSwgbnVtQnl0ZXMudW5zYWZlR2V0
KCkpOworICAgIH0KIAotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
IC8vIE9uY2Ugd2UgYXJlIGRvbmUgbW9kaWZ5aW5nIHRoZSBkYXRhLCB1bmxvY2sgdGhlIGJpdG1h
cAorICAgIGJpdG1hcERhdGFMb2NrID0gbnVsbHB0cjsKIAotICAgIG1lbWNweShyZXN1bHQtPmRh
dGEoKSwgcGl4ZWxzLCBudW1CeXRlcy51bnNhZmVHZXQoKSk7CisgICAgY29udGV4dC0+YmVnaW5E
cmF3KCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6
cHV0RGF0YShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIHNvdXJjZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCAvKiBhY2NlbGVyYXRlUmVuZGVyaW5nICovLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpCiB7Ci0gICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKLSAgICBDT01QdHI8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQ+IHJlbmRlclRhcmdl
dChRdWVyeSwgcGxhdGZvcm1Db250ZXh0KTsKLSAgICBpZiAoIXJlbmRlclRhcmdldCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7Ci0gICAgSFJFU1VM
VCBociA9IHJlbmRlclRhcmdldC0+R2V0Qml0bWFwKCZiaXRtYXApOwotICAgIEFTU0VSVChTVUND
RUVERUQoaHIpKTsKLQogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBB
U1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwogCkBAIC0xMzIsNyArMTE0LDMzIEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQKICAgICBpZiAod2lkdGggPD0g
MCB8fCBoZWlnaHQgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gV2UgY2Fubm90IGFj
Y2VzcyB0aGUgZGF0YSBiYWNraW5nIGFuIElXSUNCaXRtYXAgd2hpbGUgYW4gYWN0aXZlIGRyYXcg
c2Vzc2lvbiBpcyBvcGVuLgorICAgIGNvbnRleHQtPmVuZERyYXcoKTsKKworICAgIFdJQ1JlY3Qg
cmNMb2NrID0geyAwLCAwLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkg
fTsKKworICAgIENPTVB0cjxJV0lDQml0bWFwTG9jaz4gYml0bWFwRGF0YUxvY2s7CisgICAgSFJF
U1VMVCBociA9IGJpdG1hcFNvdXJjZS0+TG9jaygmcmNMb2NrLCBXSUNCaXRtYXBMb2NrV3JpdGUs
ICZiaXRtYXBEYXRhTG9jayk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1
cm47CisKKyAgICBVSU5UIHN0cmlkZSA9IDA7CisgICAgaHIgPSBiaXRtYXBEYXRhTG9jay0+R2V0
U3RyaWRlKCZzdHJpZGUpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVUlOVCBidWZmZXJTaXplID0gMDsKKyAgICBXSUNJblByb2NQb2ludGVyIGRhdGFQ
dHIgPSBudWxscHRyOworICAgIGhyID0gYml0bWFwRGF0YUxvY2stPkdldERhdGFQb2ludGVyKCZi
dWZmZXJTaXplLCAmZGF0YVB0cik7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoYnVmZmVyU2l6ZSA9PSBzb3VyY2UuYnl0ZUxlbmd0aCgpKTsK
KwogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsK
KworICAgIEFTU0VSVChzcmNCeXRlc1BlclJvdyA9PSBzdHJpZGUpOworCiAgICAgY29uc3QgdWlu
dDhfdCogc3JjUm93cyA9IHNvdXJjZS5kYXRhKCkgKyAob3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93
ICsgb3JpZ2lueCAqIDQpLnVuc2FmZUdldCgpOwogCiAgICAgYXV0byByb3cgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDhfdD4oc3JjQnl0ZXNQZXJSb3cpOwpAQCAtMTUwLDEyICsxNTgsMTUgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludAogICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihyb3cuZ2V0KCkgKyBiYXNleClbMF0gPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKICAgICAgICAg
fQogCi0gICAgICAgIEQyRDFfUkVDVF9VIGRzdFJlY3QgPSBEMkQxOjpSZWN0VShkZXN0UG9pbnQu
eCgpLCBkZXN0UG9pbnQueSgpICsgeSwgZGVzdFBvaW50LngoKSArIHNpemUud2lkdGgoKSwgZGVz
dFBvaW50LnkoKSArIHkgKyAxKTsKLSAgICAgICAgaHIgPSBiaXRtYXAtPkNvcHlGcm9tTWVtb3J5
KCZkc3RSZWN0LCByb3cuZ2V0KCksIHNyY0J5dGVzUGVyUm93KTsKLSAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChocikpOworICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0
YVB0ciArIHkgKiBzcmNCeXRlc1BlclJvdyksIHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwog
CiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQorCisgICAgLy8gT25j
ZSB3ZSBhcmUgZG9uZSBtb2RpZnlpbmcgdGhlIGRhdGEsIHVubG9jayB0aGUgYml0bWFwCisgICAg
Yml0bWFwRGF0YUxvY2sgPSBudWxscHRyOworCisgICAgY29udGV4dC0+YmVnaW5EcmF3KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3Qy
RC5oCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSAr
NDEsOSBAQCBzdHJ1Y3QgSW1hZ2VCdWZmZXJEYXRhIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3c7CiAKICAgICAvLyBPbmx5IGZvciBzb2Z0d2FyZSBJ
bWFnZUJ1ZmZlcnMuCi0gICAgdm9pZCogZGF0YSB7IG51bGxwdHIgfTsKKyAgICBWZWN0b3I8Y2hh
cj4gZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0Owot
ICAgIElEMkQxUmVuZGVyVGFyZ2V0KiBtX2NvbXBhdGlibGVUYXJnZXQgeyBudWxscHRyIH07Cisg
ICAgQ09NUHRyPElXSUNCaXRtYXA+IGJpdG1hcFNvdXJjZTsKIAogICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gZ2V0RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKSBjb25zdDsKICAgICB2b2lkIHB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJy
YXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMyBA
QAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxtYXRo
Lmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC03Miw3ICs3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXIKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgLypjb2xvclNwYWNlKi8sIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9z
dFdpbmRvdyosIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCwgYm9vbCYgc3Vj
Y2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSAvKmNvbG9yU3BhY2UqLywgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fbG9naWNhbFNpemUoc2l6ZSkKICAgICAsIG1f
cmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKIHsKQEAgLTk3LDIwICs5OSwyMyBAQCBJ
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplCiAgICAgaWYgKG51bUJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZW5kZXJUYXJn
ZXQgPSB0YXJnZXRDb250ZXh0ID8gdGFyZ2V0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBu
dWxscHRyOwotICAgIGlmICghcmVuZGVyVGFyZ2V0KQotICAgICAgICByZW5kZXJUYXJnZXQgPSBH
cmFwaGljc0NvbnRleHQ6OmRlZmF1bHRSZW5kZXJUYXJnZXQoKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChyZW5kZXJUYXJnZXQpOwotCi0gICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBi
aXRtYXBDb250ZXh0OwotICAgIEQyRDFfU0laRV9GIGRlc2lyZWRTaXplID0gRmxvYXRTaXplKG1f
bG9naWNhbFNpemUpOwotICAgIEQyRDFfU0laRV9VIHBpeGVsU2l6ZSA9IEludFNpemUobV9sb2dp
Y2FsU2l6ZSk7Ci0gICAgSFJFU1VMVCBociA9IHJlbmRlclRhcmdldC0+Q3JlYXRlQ29tcGF0aWJs
ZVJlbmRlclRhcmdldCgmZGVzaXJlZFNpemUsICZwaXhlbFNpemUsIG51bGxwdHIsIEQyRDFfQ09N
UEFUSUJMRV9SRU5ERVJfVEFSR0VUX09QVElPTlNfR0RJX0NPTVBBVElCTEUsICZiaXRtYXBDb250
ZXh0KTsKKyAgICBtX2RhdGEuZGF0YSA9IFZlY3RvcjxjaGFyPihudW1CeXRlcy51bnNhZmVHZXQo
KSwgMCk7CisKKyAgICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnN5c3RlbUlt
YWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21NZW1vcnkobV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSwgR1VJRF9XSUNQaXhlbEZvcm1hdDMyYnBwUEJHUkEsIHN0YXRpY19jYXN0
PFVJTlQ+KG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PFVJTlQ+
KG51bUJ5dGVzLnVuc2FmZUdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4obV9kYXRhLmRh
dGEuZGF0YSgpKSwgJm1fZGF0YS5iaXRtYXBTb3VyY2UpOworICAgIGlmICghU1VDQ0VFREVEKGhy
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0YXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6
UmVuZGVyVGFyZ2V0UHJvcGVydGllcyhEMkQxX1JFTkRFUl9UQVJHRVRfVFlQRV9ERUZBVUxULAor
ICAgICAgICBEMkQxOjpQaXhlbEZvcm1hdChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgRDJE
MV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpLAorICAgICAgICAwLCAwLCBEMkQxX1JFTkRFUl9U
QVJHRVRfVVNBR0VfTk9ORSwgRDJEMV9GRUFUVVJFX0xFVkVMX0RFRkFVTFQpOworCisgICAgQ09N
UHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0OworICAgIGhyID0gR3JhcGhpY3ND
b250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZVdpY0JpdG1hcFJlbmRlclRhcmdldChtX2Rh
dGEuYml0bWFwU291cmNlLmdldCgpLCAmdGFyZ2V0UHJvcGVydGllcywgJmJpdG1hcENvbnRleHQp
OwogICAgIGlmICghYml0bWFwQ29udGV4dCB8fCAhU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgLy8gTm90ZTogVGhpcyBwbGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBh
IGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3Ry
dWN0b3IuCiAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29tcGF0aWJsZVRhcmdl
dCA9IHJlbmRlclRhcmdldDsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTM3LDIzICsx
NDIsMzEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKICAgICBjb250
ZXh0KCkuZmx1c2goKTsKIH0KIAotc3RhdGljIENPTVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQ3Jv
cHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMpCitzdGF0aWMgQ09NUHRyPElXSUNCaXRtYXA+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiB7Ci0gICAg
RmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gaW1hZ2UtPkdldFNpemUoKSA6IEZsb2F0U2l6
ZSgpOworICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShp
bWFnZSkgOiBGbG9hdFNpemUoKTsKIAogICAgIGlmIChpbWFnZSAmJiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbWFnZVNpemUud2lkdGgoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMud2lk
dGgoKSkgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KCkpICE9IHN0YXRp
Y19jYXN0PHNpemVfdD4oYm91bmRzLmhlaWdodCgpKSkpIHsKICAgICAgICAgRDJEX1BPSU5UXzJV
IG9yaWdpbiA9IHsgfTsKLSAgICAgICAgRDJEMV9SRUNUX1UgY3JvcHBlZERpbWVuc3Rpb25zID0g
SW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpOwotICAgICAgICBDT01QdHI8SUQyRDFCaXRtYXA+
IGNyb3BwZWRJbWFnZTsKLSAgICAgICAgSFJFU1VMVCBociA9IGNyb3BwZWRJbWFnZS0+Q29weUZy
b21CaXRtYXAoJm9yaWdpbiwgaW1hZ2UsICZjcm9wcGVkRGltZW5zdGlvbnMpOwotICAgICAgICBp
ZiAoU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgICAgIHJldHVybiBjcm9wcGVkSW1hZ2U7CisgICAg
ICAgIFdJQ1JlY3QgY3JvcHBlZERpbWVuc2lvbnMgPSB7IDAsIDAsIGJvdW5kcy53aWR0aCgpLCBi
b3VuZHMuaGVpZ2h0KCkgfTsKKworICAgICAgICBDT01QdHI8SVdJQ0JpdG1hcENsaXBwZXI+IGJp
dG1hcENsaXBwZXI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBJbWFnZURlY29kZXJEaXJlY3QyRDo6
c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKS0+Q3JlYXRlQml0bWFwQ2xpcHBlcigmYml0bWFwQ2xpcHBl
cik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBociA9IGJpdG1h
cENsaXBwZXItPkluaXRpYWxpemUoaW1hZ2UsICZjcm9wcGVkRGltZW5zaW9ucyk7CisgICAgICAg
ICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgIENPTVB0cjxJV0lDQml0
bWFwPiBjcm9wcGVkQml0bWFwOworICAgICAgICAgICAgICAgIGhyID0gSW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21Tb3VyY2UoaW1h
Z2UsIFdJQ0JpdG1hcE5vQ2FjaGUsICZjcm9wcGVkQml0bWFwKTsKKyAgICAgICAgICAgICAgICBp
ZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyb3BwZWRCaXRt
YXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2U7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5n
SWZOZWVkZWQoQ09NUHRyPElEMkQxQml0bWFwPiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6
ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCitz
dGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KENPTVB0cjxJV0lDQml0bWFwPiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6ZSwgSW50U2l6
ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYg
KHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vz
c2FyeShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKQEAgLTE3MCw3ICsxODMsNyBAQCBzdGF0
aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmCiAKIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBDT01QdHI8SUQy
RDFCaXRtYXA+IGltYWdlOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBpZiAo
bV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhh
dmlvcik7CiAgICAgZWxzZQpAQCAtMTk0LDMxICsyMDcsMzEgQEAgQmFja2luZ1N0b3JlQ29weSBJ
bWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsK
IH0KIAotQ09NUHRyPElEMkQxQml0bWFwPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFn
ZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQorQ09NUHRyPElXSUNC
aXRtYXA+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFNlZSBpZiB3ZSBjYW4g
cmV1c2UgdGhlIG9uLWhhcmR3YXJlIGltYWdlLgogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIH0KIAotQ09NUHRyPElEMkQxQml0
bWFwPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJl
aGF2aW9yKSBjb25zdAorQ09NUHRyPElXSUNCaXRtYXA+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgYXV0byBi
aXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4o
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4g
aW1hZ2U7Ci0gICAgSFJFU1VMVCBociA9IGJpdG1hcFRhcmdldC0+R2V0Qml0bWFwKCZpbWFnZSk7
Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwotCiAgICAgLy8gRklYTUU6IG1fZGF0YS5kYXRh
IGlzIG51bGxwdHIgZXZlbiB3aGVuIGFza2luZyB0byBjb3B5IGJhY2tpbmcgc3RvcmUgbGVhZGlu
ZyB0byB0ZXN0IGZhaWx1cmVzLgotICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdT
dG9yZSAmJiAhbV9kYXRhLmRhdGEpCisgICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2lu
Z1N0b3JlICYmIG1fZGF0YS5kYXRhLmlzRW1wdHkoKSkKICAgICAgICAgY29weUJlaGF2aW9yID0g
RG9udENvcHlCYWNraW5nU3RvcmU7CiAKKyAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZs
b3c+IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5i
YWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSAqIG1fZGF0YS5ieXRlc1BlclJvdzsKKyAgICBpZiAo
bnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEhSRVNVTFQgaHIgPSBTX09LOworICAgIENPTVB0cjxJV0lDQml0bWFwPiBpbWFnZTsKICAgICBp
ZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIHN3aXRjaCAo
Y29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAg
ICAgICAgICBociA9IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgp
LT5DcmVhdGVCaXRtYXBGcm9tU291cmNlKG1fZGF0YS5iaXRtYXBTb3VyY2UuZ2V0KCksIFdJQ0Jp
dG1hcE5vQ2FjaGUsICZpbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgRDJEMV9SRUNUX1UgYmFja2luZ1N0b3JlRGlt
ZW5zdGlvbnMgPSBJbnRSZWN0KEludFBvaW50KCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplKTsK
LSAgICAgICAgICAgIGltYWdlLT5Db3B5RnJvbU1lbW9yeSgmYmFja2luZ1N0b3JlRGltZW5zdGlv
bnMsIG1fZGF0YS5kYXRhLCAzMik7CisgICAgICAgICAgICBociA9IEltYWdlRGVjb2RlckRpcmVj
dDJEOjpzeXN0ZW1JbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVCaXRtYXBGcm9tU291cmNlKG1fZGF0
YS5iaXRtYXBTb3VyY2UuZ2V0KCksIFdJQ0JpdG1hcENhY2hlT25EZW1hbmQsICZpbWFnZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjQwLDMwICsyNTMsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d0NvbnN1bWluZyhzdGQ6OnVuaQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7Ci0gICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFw
UmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBhdXRvIG91
dHB1dFRhcmdldCA9IGRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgQ09NUHRyPElEMkQx
Qml0bWFwPiBpbWFnZTsKLSAgICBIUkVTVUxUIGhyID0gYml0bWFwVGFyZ2V0LT5HZXRCaXRtYXAo
JmltYWdlKTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybjsKKyAgICBG
bG9hdFNpemUgY3VycmVudEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShtX2RhdGEuYml0bWFw
U291cmNlKTsKIAotICAgIC8vIElmIHRoZSByZW5kZXIgdGFyZ2V0cyBmb3IgdGhlIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gY29udGV4dHMgZG8gbm90IG1hdGNoLCBtb3ZlIHRoZSBpbWFnZSBvdmVy
LgotICAgIGlmIChkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSAhPSBtX2RhdGEubV9jb21w
YXRpYmxlVGFyZ2V0KSB7Ci0gICAgICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gc291cmNlSW1hZ2Ug
PSBpbWFnZTsKLSAgICAgICAgaW1hZ2UgPSBudWxscHRyOwotCi0gICAgICAgIGF1dG8gYml0bWFw
UHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcFByb3BlcnRpZXMoKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkdldERlc2t0b3BEcGkoJmJpdG1hcFByb3BlcnRpZXMu
ZHBpWCwgJmJpdG1hcFByb3BlcnRpZXMuZHBpWSk7Ci0gICAgICAgIGhyID0gb3V0cHV0VGFyZ2V0
LT5DcmVhdGVTaGFyZWRCaXRtYXAoX191dWlkb2YoSUQyRDFCaXRtYXApLCBzb3VyY2VJbWFnZS5n
ZXQoKSwgJmJpdG1hcFByb3BlcnRpZXMsICZpbWFnZSk7Ci0gICAgICAgIGlmICghU1VDQ0VFREVE
KGhyKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgLy8gWW91IGNhbid0IGNvbnZl
cnQgYSBJV0lDQml0bWFwIHRvIGEgSUQyRDFCaXRtYXAgd2l0aCBhbiBhY3RpdmUgR3JhcGhpY3ND
b250ZXh0IGF0dGFjaGVkIHRvIGl0LgorICAgIG1fZGF0YS5jb250ZXh0LT5lbmREcmF3KCk7CiAK
LSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNy
Y1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBk
ZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9kYXRhLmJpdG1hcFNvdXJjZSwgY3VycmVudElt
YWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiAKLSAg
ICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlLT5HZXRTaXplKCksIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIG1fZGF0YS5jb250
ZXh0LT5iZWdpbkRyYXcoKTsKIAogICAgIGRlc3RDb250ZXh0LmZsdXNoKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpz
ZXRUYXJnZXRDb250CiAKIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBpZiAoIW1fbmF0aXZl
RGVjb2RlciB8fCAhbV9yZW5kZXJUYXJnZXQpCisgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ09NUHRyPElXSUNCaXRtYXBGcmFtZURlY29k
ZT4gZnJhbWU7CkBAIC0yNDksMTIgKzI0OSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6Y3JlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGhyID0gY29udmVydGVyLT5Jbml0aWFsaXplKGZyYW1lLmdldCgpLCBH
VUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQQkdSQSwgV0lDQml0bWFwRGl0aGVyVHlwZU5vbmUsIG51
bGxwdHIsIDAuZiwgV0lDQml0bWFwUGFsZXR0ZVR5cGVDdXN0b20pOworICAgIGhyID0gY29udmVy
dGVyLT5Jbml0aWFsaXplKGZyYW1lLmdldCgpLCBHVUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQUkdC
QSwgV0lDQml0bWFwRGl0aGVyVHlwZU5vbmUsIG51bGxwdHIsIDAuZiwgV0lDQml0bWFwUGFsZXR0
ZVR5cGVDdXN0b20pOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGJpdG1hcDsKLSAgICBociA9IG1fcmVu
ZGVyVGFyZ2V0LT5DcmVhdGVCaXRtYXBGcm9tV2ljQml0bWFwKGNvbnZlcnRlci5nZXQoKSwgbnVs
bHB0ciwgJmJpdG1hcCk7CisgICAgQ09NUHRyPElXSUNCaXRtYXA+IGJpdG1hcDsKKyAgICBociA9
IHN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcEZyb21Tb3VyY2UoY29udmVydGVy
LmdldCgpLCBXSUNCaXRtYXBDYWNoZU9uRGVtYW5kLCAmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NF
RURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCShy
ZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgIHNpemVfdCBmcmFtZXMgPSBm
cmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewog
ICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAg
IGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPkdldFNpemUoKTsKLSAgICAgICAgaWYgKGltYWdlICYm
IGNsYW1wVG88c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNsYW1wVG88c2l6ZV90PihpbWFnZVNpemUud2lkdGgpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgeworICAgICAgICBhdXRvIGlt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBj
bGFtcFRvPGludD4oaW1hZ2VTaXplLmhlaWdodCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1Np
emUuaGVpZ2h0KCkpICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUud2lkdGgoKSkgPT0gc3RhdGlj
X2Nhc3Q8aW50PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVu
dEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7
CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBz
cmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0NzQz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDMzIEBACiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5o
PgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGlj
IElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lD
SW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdp
bmdGYWN0b3J5KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lE
X1dJQ0ltYWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQ
Vl9BUkdTKCZpbWFnaW5nRmFjdG9yeSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVE
RUQoaHIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Cit9CisKIEludFNp
emUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICBy
ZXR1cm4gaW1hZ2UgPyBJbnRTaXplKGltYWdlLT5HZXRTaXplKCkpIDogSW50U2l6ZSgpOworICAg
IFVJTlQgd2lkdGggPSAwOworICAgIFVJTlQgaGVpZ2h0ID0gMDsKKyAgICBpZiAoIWltYWdlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgSFJFU1VMVCBociA9IGltYWdlLT5HZXRTaXplKCZ3
aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKIGJvb2wgbmF0
aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCkBAIC00Niw4ICs2
NywyOCBAQCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hCiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBhbHBoYU1vZGUgPSBp
bWFnZS0+R2V0UGl4ZWxGb3JtYXQoKS5hbHBoYU1vZGU7Ci0gICAgcmV0dXJuIChhbHBoYU1vZGUg
Pj0gRDJEMV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQpICYmIChhbHBoYU1vZGUgPD0gRDJEMV9B
TFBIQV9NT0RFX1NUUkFJR0hUKTsKKyAgICBXSUNQaXhlbEZvcm1hdEdVSUQgcGl4ZWxGb3JtYXRH
VUlEID0geyB9OworICAgIEhSRVNVTFQgaHIgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoJnBpeGVs
Rm9ybWF0R1VJRCk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGp1c3QgY2hlY2sgdGhlIHBpeGVsRm9ybWF0
R1VJRCBmb3IgcmVsZXZhbnQgSUQncyB3ZSB1c2U/CisKKyAgICBDT01QdHI8SVdJQ0NvbXBvbmVu
dEluZm8+IGNvbXBvbmVudEluZm87CisgICAgaHIgPSBpbWFnaW5nRmFjdG9yeSgpLT5DcmVhdGVD
b21wb25lbnRJbmZvKHBpeGVsRm9ybWF0R1VJRCwgJmNvbXBvbmVudEluZm8pOworICAgIGlmICgh
U1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ09NUHRyPElXSUNQ
aXhlbEZvcm1hdEluZm8+IHBpeGVsRm9ybWF0SW5mbyhRdWVyeSwgY29tcG9uZW50SW5mby5nZXQo
KSk7CisgICAgaWYgKCFwaXhlbEZvcm1hdEluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFVJTlQgY2hhbm5lbENvdW50ID0gMDsKKyAgICBociA9IHBpeGVsRm9ybWF0SW5mby0+R2V0
Q2hhbm5lbENvdW50KCZjaGFubmVsQ291bnQpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNoYW5uZWxDb3VudCA+IDM7CiB9CiAK
IENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKQEAgLTc0LDcgKzExNSwxMiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gMS4wZjsKIAotICAgIHBsYXRm
b3JtQ29udGV4dC0+RHJhd0JpdG1hcChpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIG9wYWNpdHksIEQy
RDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBhZGp1c3RlZFNy
Y1JlY3QpOworICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYml0bWFwOworICAgIEhSRVNVTFQgaHIg
PSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEZyb21XaWNCaXRtYXAoaW1hZ2UuZ2V0KCks
ICZiaXRtYXApOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGxhdGZvcm1Db250ZXh0LT5EcmF3Qml0bWFwKGJpdG1hcC5nZXQoKSwgZGVzdFJlY3QsIG9w
YWNpdHksIEQyRDFfQklUTUFQX0lOVEVSUE9MQVRJT05fTU9ERV9ORUFSRVNUX05FSUdIQk9SLCBh
ZGp1c3RlZFNyY1JlY3QpOwogICAgIGNvbnRleHQuZmx1c2goKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5j
cHAJKHJldmlzaW9uIDI0NzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9QYXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAg
Ym9vbCBQYXRoOjpzdHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcAogCiAgICAgQVNTRVJUKGFw
cGxpZXIpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hSZW5k
ZXJUYXJnZXQoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KHNjcmF0Y2hS
ZW5kZXJUYXJnZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlw
ZTo6R1BVTWVtb3J5KTsKICAgICBhcHBsaWVyLT5zdHJva2VTdHlsZSgmc2NyYXRjaENvbnRleHQp
OwogCiAgICAgQk9PTCBjb250YWluc1BvaW50ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNw
cAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BhdHRlcm5EaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDE1IEBA
IElEMkQxQml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3IKICAgICBhdXRvIHBsYXRm
b3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQocGxhdGZvcm1Db250ZXh0KTsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXR0ZXJuSW1h
Z2UubmF0aXZlSW1hZ2UoJmNvbnRleHQpOworCisgICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRt
YXA7CisgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQml0bWFwRnJvbVdp
Y0JpdG1hcChuYXRpdmVJbWFnZS5nZXQoKSwgJmJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVERUQo
aHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIElEMkQxQml0bWFwQnJ1c2gqIHBh
dHRlcm5CcnVzaCA9IG51bGxwdHI7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+
Q3JlYXRlQml0bWFwQnJ1c2gocGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250ZXh0KS5nZXQo
KSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVz
aCk7CisgICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKGJpdG1hcC5n
ZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5C
cnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAgIHJldHVybiBwYXR0ZXJuQnJ1
c2g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCShyZXZpc2lvbiAyNDc0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw4ICszNTUsOSBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkCiAgICAgZm9yIChhdXRvJiBmaWxl
bmFtZSA6IGxpc3QtPnZhbHVlKQogICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1l
KTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYWRlcik7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybjsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDc0MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMzIsNyArMjAzMiw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2hlY2tGb3JS
ZXBhaW50RHVyaW4KIAogUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1lbnQ6
OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKLSNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykKKyNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQog
ICAgIC8vIFRoaXMgY2FuIG9ubHkgYmUgZW5hYmxlZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhl
IG9yaWVudGF0aW9uIGZsYWcgaW4gdGhlaXIgZHJhd2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVu
dCgpLmlzSW1hZ2VEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50
YXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw3ICs0MDEsOCBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6YWRqdXN0VGlsZWRCYWNrCiB7CiAgICAgaWYgKG1f
aXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewogICAgICAgICBhdXRvIHRpbGVDb3ZlcmFn
ZSA9IGNvbXB1dGVQYWdlVGlsZWRCYWNraW5nQ292ZXJhZ2UobV9vd25pbmdMYXllcik7Ci0gICAg
ICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlQ292ZXJhZ2UodGlsZUNvdmVyYWdlKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHRpbGVkQmFja2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygpKQorICAgICAg
ICAgICAgdGlsZWRCYWNraW5nLT5zZXRUaWxlQ292ZXJhZ2UodGlsZUNvdmVyYWdlKTsKICAgICB9
CiAKICAgICBpZiAobV9vd25pbmdMYXllci5oYXNDb21wb3NpdGVkU2Nyb2xsYWJsZU92ZXJmbG93
KCkgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjQ3NDMyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgs
NyBAQAogCiAjaWYgVVNFKERJUkVDVDJEKQogI2luY2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUg
IkltYWdlRGVjb2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2VuZGlmCiAKQEAg
LTIzMiwyMiArMjMzLDI1IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShj
b24KICAgICBpZiAoIW1fcGFnZSB8fCAhdGFyZ2V0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IHRhcmdldENvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwotICAgIEFTU0VSVChwbGF0Zm9ybUNvbnRleHQpOworICAgIENPTVB0cjxJ
V0lDQml0bWFwPiBuYXRpdmVJbWFnZTsKKyAgICBIUkVTVUxUIGhyID0gSW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCktPkNyZWF0ZUJpdG1hcChyZWN0KCkud2lkdGgo
KSwgcmVjdCgpLmhlaWdodCgpLCBHVUlEX1dJQ1BpeGVsRm9ybWF0MzJicHBQUkdCQSwgV0lDQml0
bWFwQ2FjaGVPbkxvYWQsICZuYXRpdmVJbWFnZSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IEQy
RDE6OlJlbmRlclRhcmdldFByb3BlcnRpZXMoRDJEMV9SRU5ERVJfVEFSR0VUX1RZUEVfREVGQVVM
VCwKKyAgICAgICAgRDJEMTo6UGl4ZWxGb3JtYXQoRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0s
IEQyRDFfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEKSwKKyAgICAgICAgMCwgMCwgRDJEMV9SRU5E
RVJfVEFSR0VUX1VTQUdFX05PTkUsIEQyRDFfRkVBVFVSRV9MRVZFTF9ERUZBVUxUKTsKIAogICAg
IC8vIERyYXcgdGhlIFNWRyBpbnRvIGEgYml0bWFwLgotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJl
bmRlclRhcmdldD4gbmF0aXZlSW1hZ2VUYXJnZXQ7Ci0gICAgSFJFU1VMVCBociA9IHBsYXRmb3Jt
Q29udGV4dC0+Q3JlYXRlQ29tcGF0aWJsZVJlbmRlclRhcmdldChJbnRTaXplKHJlY3QoKS5zaXpl
KCkpLCAmbmF0aXZlSW1hZ2VUYXJnZXQpOwotICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAg
ICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG5hdGl2ZUltYWdlVGFyZ2V0OworICAgIGhyID0g
R3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZVdpY0JpdG1hcFJlbmRlclRh
cmdldChuYXRpdmVJbWFnZS5nZXQoKSwgJnRhcmdldFByb3BlcnRpZXMsICZuYXRpdmVJbWFnZVRh
cmdldCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZVRhcmdldCB8fCAhU1VDQ0VFREVEKGhyKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250
ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRl
cmluZ0NvbnRleHRUeXBlOjpDUFVNZW1vcnkpOwogCiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJl
Y3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwog
Ci0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBuYXRpdmVJbWFnZTsKLSAgICBociA9IG5hdGl2ZUlt
YWdlVGFyZ2V0LT5HZXRCaXRtYXAoJm5hdGl2ZUltYWdlKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVE
KGhyKSk7Ci0KICAgICByZXR1cm4gbmF0aXZlSW1hZ2U7CiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>