<?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>149428</bug_id>
          
          <creation_ts>2015-09-21 15:59:11 -0700</creation_ts>
          <short_desc>Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do</short_desc>
          <delta_ts>2015-09-22 11:46:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127798</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-21 15:59:11 -0700</bug_when>
    <thetext>Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127799</commentid>
    <comment_count>1</comment_count>
      <attachid>261696</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-21 16:03:03 -0700</bug_when>
    <thetext>Created attachment 261696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127828</commentid>
    <comment_count>2</comment_count>
      <attachid>261701</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-21 16:34:26 -0700</bug_when>
    <thetext>Created attachment 261701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128048</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-22 11:16:13 -0700</bug_when>
    <thetext>Here are the bugs I filed for places where we&apos;re still creating unaccelerated image buffers and shouldn&apos;t be:

RenderSVGResourceMasker::applyResource https://bugs.webkit.org/show_bug.cgi?id=149470
RenderSVGResourceClipper::applyClippingToContext https://bugs.webkit.org/show_bug.cgi?id=149469
Shape::createRasterShape https://bugs.webkit.org/show_bug.cgi?id=149420
MediaControlTextTrackContainerElement::createTextTrackRepresentationImage https://bugs.webkit.org/show_bug.cgi?id=149422
WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer https://bugs.webkit.org/show_bug.cgi?id=149423
CSSFilterImageValue::image https://bugs.webkit.org/show_bug.cgi?id=149424
ImageBuffer(CG)::putByteArray https://bugs.webkit.org/show_bug.cgi?id=149431

Some of these need more investigation into why making an accelerated buffer fails, some just need plumbing through of a way to know which kind of buffer to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128049</commentid>
    <comment_count>4</comment_count>
      <attachid>261754</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-22 11:20:00 -0700</bug_when>
    <thetext>Created attachment 261754
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128063</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-22 11:46:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/190124</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261696</attachid>
            <date>2015-09-21 16:03:03 -0700</date>
            <delta_ts>2015-09-21 16:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149428-20150921160246.patch</filename>
            <type>text/plain</type>
            <size>31412</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM1OWJkNzBhMmMwYzBm
YTM2N2U1YTgxYjgxODE4NTk0YTI5OWMxOS4uMzNlYTRiYzMxOWQ3YTVkYjVmN2ZhYjQxZGY2ZWUw
NTJjY2FkZTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMCBAQAogMjAxNS0wOS0yMSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIGl0IG1v
cmUgb2J2aW91cyB3aGVuIHVzaW5nIGFuIHVuYWNjZWxlcmF0ZWQgaW1hZ2UgYnVmZmVyLCBhbmQg
Zml4IGEgZmV3IGNhbGxlcnMgd2hvIGRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIE1ha2UgdGhlIFJlbmRlcmluZ01vZGUg
cGFyYW1ldGVyIHRvIEltYWdlQnVmZmVyOjpjcmVhdGUgbm9uLW9wdGlvbmFsLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnJlbmRlcmluZ01vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzVHlwZXMuaDoKKyAgICAgICAgQWRkIHJlbmRlcmluZ01vZGUoKSBnZXR0
ZXIgc28gdGhhdCBldmVyeSBjYWxsZXIgZG9lc24ndCBuZWVkIHRvIGRvIHRoZSBjb252ZXJzaW9u
IHRvIFJlbmRlcmluZ01vZGUuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hl
OjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJl
c2VudGF0aW9uSW1hZ2UpOgorICAgICAgICBUaGVzZSBmb3VyIGNhbGxlcnMgY3JlYXRlIHVuY29u
ZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIEltYWdlQnVmZmVycyB3aGljaAorICAgICAgICBzaG91
bGQgcHJvYmFibHkgaW5zdGVhZCByZXNwZWN0IHRoZSBhY2NlbGVyYXRpb24gYml0IGZyb20gdGhl
IGNvbnRleHQKKyAgICAgICAgdGhhdCB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBldmVudHVhbGx5IGJl
IHBhaW50ZWQgaW50by4gQnVncyBoYXZlIGJlZW4gZmlsZWQuCisKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIEFkanVzdCB0aGUgYXJn
dW1lbnQgb3JkZXIgYW5kIHJlbW92ZSBkZWZhdWx0cyB3aGljaCBhcmUgcGFzc2VkIGV4cGxpY2l0
bHkuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0KToKKyAgICAgICAgU25hcHNob3RzIGFyZSAoY3VycmVu
dGx5KSBtZWFudCB0byBiZSB0YWtlbiB3aXRob3V0IGFjY2VsZXJhdGVkIGRyYXdpbmcuCisgICAg
ICAgIE1ha2UgdGhpcyBleHBsaWNpdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgIE1ha2UgdXNlIG9mIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIuIFRoaXMgY2Fs
bGVyIHdhcyBwcmV2aW91c2x5IGNyZWF0aW5nCisgICAgICAgIGFuIHVuY29uZGl0aW9uYWxseSB1
bmFjY2VsZXJhdGVkIGNvbnRleHQhCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlbW92ZSBhIGNvbW1lbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICBTaGFkb3dC
bHVyIGlzIG9ubHkgdXNlZCB3aXRoIHVuYWNjZWxlcmF0ZWQgY29udGV4dHMsIHNvIGl0J3MgT0sg
dG8gaGFyZGNvZGUgVW5hY2NlbGVyYXRlZCBoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgVGhpcyBjYWxsZXIgd2FzIHByZXZpb3VzbHkgY3Jl
YXRpbmcgYW4gdW5hY2NlbGVyYXRlZCBidWZmZXI7IGluc3RlYWQsIG1hdGNoIHRoZSBkZXN0aW5h
dGlvbiBidWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCk6CisgICAgICAgIEZsaXAgdGhlIG9yZGVyIG9mIHRoZSBhcmd1bWVudHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgVGhpcyBjYWxsZXIgd2FzIHByZXZpb3VzbHkgY3JlYXRpbmcgYW4gdW5hY2NlbGVyYXRl
ZCBidWZmZXI7IGluc3RlYWQsIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgor
ICAgICAgICBBZGp1c3QgdGhlIGFyZ3VtZW50IG9yZGVyIGFuZCByZW1vdmUgZGVmYXVsdHMgd2hp
Y2ggYXJlIHBhc3NlZCBleHBsaWNpdGx5LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVj
dHMpOgorICAgICAgICBHZXQgcmlkIG9mIHRoZSB1bm5lZWRlZCByZW5kZXJpbmdNb2RlIGxvY2Fs
LCBhbmQgZmFjdG9yIG91dCByZXRyaWV2YWwgb2YgRnJhbWUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICBUaGVzZSB0aHJlZSBjYWxsZXJzIHdlcmUgcHJldmlvdXNseSBjcmVhdGluZyBhbiB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlcjsgaW5zdGVhZCwgbWF0Y2ggdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJu
KToKKyAgICAgICAgTWFrZSB1c2Ugb2YgcmVuZGVyaW5nTW9kZSgpLgorCisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgQWRqdXN0IHRo
ZSBhcmd1bWVudCBvcmRlci4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUp
OgorCisyMDE1LTA5LTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CiAgICAgICAgIHN2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy5zdmcgZmFpbHMgd2l0
aCBhY2NlbGVyYXRlZCBkcmF3aW5nIG9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDk0MTMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzg3MDU4
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDJiZDE4YmVjOWNjMjg0ODhlM2I5MDBhYzIxNjQ1ZjI3NDk5
OTFhMmEuLmU2YWQ3MTY4OTU3NGMwNWNiMDIyYWZhNDQ4NWQxNzg3NGFjOWE3NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wOS0yMSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IG1vcmUgb2J2aW91cyB3aGVu
IHVzaW5nIGFuIHVuYWNjZWxlcmF0ZWQgaW1hZ2UgYnVmZmVyLCBhbmQgZml4IGEgZmV3IGNhbGxl
cnMgd2hvIGRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRl
bSk6CisKIDIwMTUtMDktMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5v
bi5mcj4KIAogICAgICAgICBSZW1vdmUgWEhSX1RJTUVPVVQgY29tcGlsYXRpb24gZ3VhcmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCA5MGY1NWQ0ZDUx
Zjk4MzQ2OWVhNTJmZDZiZTQzYWM1YmM2ZGZmNTVkLi43ZmZmNGM0OTg5NGVkMmU0NDVkNDEwNDFk
ZDdkNDdkMmE1ZjRkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwCkBAIC0xMjAsNyArMTIwLDggQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICAg
ICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIC8vIFRyYW5zZm9ybSBJbWFnZSBp
bnRvIEltYWdlQnVmZmVyLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGV4dHVy
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CisgICAgLy8gRklYTUUgKDE0OTQyNCk6IFRo
aXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAppbmRleCBiYmZmNzYyYjViZDg2NjdhMWFhZjU4ZDQ5YWRlZjUyZDhmOTE5ZTVi
Li40NGRmOTNjMjVjNDI1MWEzMzAyMjNhNTgzNTViZmQ5NTQ2NjExZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0
ZShidWZmZXJTaXplKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKLSAgICBtX2ltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHJlbmRlcmluZ01vZGUpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMmE3N2I5MWZmMmIwMjc1ZGIw
ODQ5MGQ4M2JmNGJlM2Q5MzZiZTIzMy4uOWMxMDk3YmE2MGI4YjEwZjllNzdjYmQ1YzU5ZmM4NzY3
YzczYjIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjg0LDggKzE2ODQsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2FsY3VsYXRlQ29tcG9z
aXRpbmdCdWZmZXJSZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYgYnVm
ZmVyUmVjdCkKIHsKLSAgICBSZW5kZXJpbmdNb2RlIHJlbmRlck1vZGUgPSBpc0FjY2VsZXJhdGVk
KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoYnVmZmVyUmVjdC5zaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRl
ck1vZGUpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgp
LCBpc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVy
KiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCAxNmU3NzMxNzcyYzAyMGE5YzQ5MTNhNzJjMTBiYzEyN2I3
OGM5NzMyLi42MTRkYTQzMzA3OGRhOWIxNjU3NWJlMWIyN2FjMmY3MWE3MmE1OGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtNDg4MCw3ICs0ODgwLDggQEAgSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEkK
ICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIDEpOworICAgIC8vIEZJWE1F
ICgxNDk0MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZD8KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRlbXAgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghdGVtcCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNpdHkgLSAxLCBp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAppbmRleCAyMmNlMzM5ZDM0ODI1ODRmY2YxM2Y0Y2FlZWQ4YTBiNDU2ZmZhN2QzLi5i
ZTk2N2Q3YWEwMGJjZTEyMmQ2OTdkNjQzNjA5MjQxNWRhNDA2MGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xMzcx
LDcgKzEzNzEsOCBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aQogCiAgICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWlu
dGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikp
OworICAgIC8vIEZJWE1FICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29u
ZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgVW5hY2Nl
bGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5j
cHAKaW5kZXggZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZS4uNDcxNGRj
NjY2MjQyMTdhZTI1Zjc2YjhkZTVlZGVlY2M2M2MxNTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJl
Y3QmIGltYWcKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5kZWxlZ2F0ZXNQYWdlU2NhbGluZygp
KQogICAgICAgICBzY2FsZUZhY3RvciAqPSBmcmFtZS5wYWdlKCktPnBhZ2VTY2FsZUZhY3Rvcigp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIHNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Ip
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXIt
PmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRl
eCA5NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3ZDZhNWI5MzAwLi5jZDBiZmVlNDlkMmQ1
MGFkYzkwODkxNWIxZWE2Y2Q1NTBlOGY4ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIHRpbGVSZWN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghbV9jYWNo
ZWRJbWFnZSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGN0eHQuY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKaW5kZXggZDJlNTIxNWIyMzlhMWYxODk5NDYzNjY5ZjRhMTA0Yzk1YzkyNGU4Yy4uNzVi
MjBkMzZhMWVhMTFiY2VmMzAyMjgyNGRhNDdlN2ZjOTE0OTY1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiB2b2lk
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAx
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBB
Y2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5y
ZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCBjMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2Li5hODBi
YzVlY2JkZjYwZmNjZTRjNjdjOTA4NTZjMmVlMmY2YmE4MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAj
aW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGF0
aC5oIgpAQCAtMjcwLDYgKzI3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKTsKICNlbmRpZgog
ICAgICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgY29uc3Q7CisgICAgICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7IH0KIAogICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNhdmUoKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3Jl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVz
LmgKaW5kZXggYWZiNjE3M2E1Njk1Nzg2OTg3YWU4NDk1NjdiZDNiMWFjOWYwNGFiNC4uMDA1MjFi
NmFmNGM5YTg2YzkxYTRlNGQ4MTg0ZjNlMDRmMDhjYTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtODQsNiArODQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGVudW0gVGV4dEFsaWduIHsgU3RhcnRUZXh0
QWxpZ24sIEVuZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFsaWduLCBSaWdo
dFRleHRBbGlnbiB9OwogCisgICAgZW51bSBSZW5kZXJpbmdNb2RlIHsKKyAgICAgICAgVW5hY2Nl
bGVyYXRlZCwKKyAgICAgICAgVW5hY2NlbGVyYXRlZE5vblBsYXRmb3JtQnVmZmVyLCAvLyBVc2Ug
cGxhaW4gbWVtb3J5IGFsbG9jYXRpb24gcmF0aGVyIHRoYW4gcGxhdGZvcm0gQVBJIHRvIGFsbG9j
YXRlIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIEFjY2VsZXJhdGVkCisgICAgfTsKKwogICAgIFN0
cmluZyBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
CiAgICAgYm9vbCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcmLCBCbGVuZE1vZGUmKTsKICAg
ICBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBDb21w
b3NpdGVPcGVyYXRvciYsIEJsZW5kTW9kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDE1N2EzZGQ0Y2NlMDU5YjIzODY2NTAx
MjZlZjAxMTgyOTJjMTQ1ODEuLmRkMTQ2NDk5YWQyNTg1ZTQzMmViY2ZiNTE3MmYzMGFjOWYxZTE3
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEltYWdlQnVmZmVyOjpjb3B5VG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QmLCBHQzNEZW51bSwgUGxhdGZvcm0zRAogCiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY29u
dGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKKyAgICByZXR1cm4gY3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBiOTc4YzRjMGY1NzgzMGYyOWI4NzE5
OGVkZmQ0MDY5MzBjYWFlODJkLi40ODQwY2Q1ZmI4ZjhlNDMyYzExZDc2Y2JjNzE2MmFkOGY1YmQx
ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTU1LDEyICs1NSw2IEBAIGVudW0gTXVsdGlwbHkgewogICAgIFVubXVsdGlwbGllZAog
fTsKIAotZW51bSBSZW5kZXJpbmdNb2RlIHsKLSAgICBVbmFjY2VsZXJhdGVkLAotICAgIFVuYWNj
ZWxlcmF0ZWROb25QbGF0Zm9ybUJ1ZmZlciwgLy8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9u
IHJhdGhlciB0aGFuIHBsYXRmb3JtIEFQSSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgotICAg
IEFjY2VsZXJhdGVkCi19OwotCiBlbnVtIEJhY2tpbmdTdG9yZUNvcHkgewogICAgIENvcHlCYWNr
aW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUg
Y29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBh
ZmZlY3QgdGhlIGNvcHkuCkBAIC03NSw3ICs2OSw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9j
YXRpb24gZmFpbHVyZS4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUgPSBVbmFjY2VsZXJhdGVkKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQikKICAgICB7CiAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
cihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlLCBzdWNjZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCAyNGUz
N2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzLi4xYjI5N2JkNDhhYTk4MWM2Yzdl
YWE3Y2Y3MmIyODY5MWM2NTRmNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTYz
LDcgKzYzLDYgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKIHZvaWQgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKLS8vICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihzaXplKCksIHRydWUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5k
ZXggNjIzZTljY2NkZTAyMGFlNGFjYjZjNTdkODNhMmNjNTE3ODJmMTllMC4uZDY2MjBjNzkwMDgw
YTZmZDBhN2MzZGIxMzlkODllMDJmYTI5NGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTc5LDcgKzc5LDkgQEAgcHVibGljOgog
ICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxlT2YzMihzaXplLndp
ZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkpOwogCiAgICAgICAg
IGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShyb3VuZGVkU2l6ZSwgMSk7CisKKyAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBu
b3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1
bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCisgICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBVbmFjY2VsZXJhdGVkLCAxKTsK
ICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmlu
ZGV4IGEwOTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUuLjVmY2Y3Y2NiYzc2
OTFhYTk5Zjg1NzNmYWFhMDg1NmI1NjQ1MTk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zMjIsNyArMzIy
LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQs
IFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKQogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJl
IHRoZSBiaXRzIGRvbid0IGNoYW5nZSBiZWZvcmUgYmVpbmcgZHJhd24KICAgICBJbnRTaXplIHNv
dXJjZUNvcHlTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVy
YXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gY29u
dGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc291cmNlQ29weVNpemUpOwogICAgIGlmICgh
c291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYmEx
NDcxMmEzY2Y4NDA3NGU3MDc0Y2NiOGQwMTZkMzIxNzMwMzQzZC4uMzliYzMwZGE5OGQ1MGY0OTc1
M2FjNGVhODQyOTNmZmUwYWU5MzE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjc2LDcgKzI3
Niw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIGlm
IChtX29wZW5DTEltYWdlUmVzdWx0KQogICAgICAgICByZXR1cm4gb3BlbkNMSW1hZ2VUb0ltYWdl
QnVmZmVyKCk7CiAjZW5kaWYKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSwgbV9yZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOworICAgIG1f
aW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxl
KCksIG1fcmVzdWx0Q29sb3JTcGFjZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3Q6Om9wZW5DTEltYWdlVG9JbWFnZUJ1ZmZlcigpCiAgICAgaWYgKGNvbnRl
eHQtPmlzRmFpbGVkKGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwg
bV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5k
ZXJpbmdNb2RlKCkpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZm
ZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9y
ZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOworICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5y
ZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFj
ZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKaW5kZXggNTc1N2U5YTg1MTgzYzA3NjgwYmExOWY0YTZhMzIxZTY1NzZkMWM0Ni4uMjVl
ZDFkNTQxOTdhMGNmYTJhM2FkZjc3MTJiNzQ0NjQxYWY5MjNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpCiAgICAgaWYgKCFtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQpIHsKICAgICAgICAgSW50
U2l6ZSBsb2dpY2FsU2l6ZShtX3NvdXJjZURyYXdpbmdSZWdpb24ud2lkdGgoKSwgbV9zb3VyY2VE
cmF3aW5nUmVnaW9uLmhlaWdodCgpKTsKICAgICAgICAgaWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNv
dXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpCi0gICAgICAgICAgICBz
ZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBmaWx0ZXJTY2Fs
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJpbmdNb2RlKCkpKTsKKyAgICAgICAgICAg
IHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmlu
Z01vZGUoKSwgZmlsdGVyU2NhbGUoKSkpOwogICAgICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNo
ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDE1M2UzNmQxNTE2ZjllZDllYWE5YmU4YWU4ZDU1ZTNhZjJhMjZhYmEuLjdlYTFk
YTQ0YjExZWUwNDczNGQ2YzRjOTM2Y2U0ZTkxNThkY2MxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjg5MSwxNyArNjg5MSwxNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdFJlbmRlcmVyKCkKICAgICB9CiAgICAg
CiAgICAgRmlsdGVySW5mbyYgZmlsdGVySW5mbyA9IEZpbHRlckluZm86OmdldCgqdGhpcyk7Cisg
ICAgRnJhbWUmIGZyYW1lID0gcmVuZGVyZXIoKS5mcmFtZSgpOwogICAgIGlmICghZmlsdGVySW5m
by5yZW5kZXJlcigpKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGZp
bHRlclJlbmRlcmVyLT5zZXRGaWx0ZXJTY2FsZShyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
ID0gcmVuZGVyZXIoKS5mcmFtZSgpLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxl
ZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwotICAgICAgICBmaWx0ZXJSZW5kZXJl
ci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKKyAgICAgICAgZmlsdGVyUmVuZGVy
ZXItPnNldEZpbHRlclNjYWxlKGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cisg
ICAgICAgIGZpbHRlclJlbmRlcmVyLT5zZXRSZW5kZXJpbmdNb2RlKGZyYW1lLnNldHRpbmdzKCku
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKICAgICAgICAgZmlsdGVySW5mby5zZXRSZW5kZXJlcihXVEY6Om1vdmUoZmlsdGVyUmVuZGVy
ZXIpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBvcHRpbWl6ZSBhd2F5IGNvZGUgcGF0
aHMgaW4gb3RoZXIgcGxhY2VzIGlmIHdlIGtub3cgdGhhdCB0aGVyZSBhcmUgbm8gc29mdHdhcmUg
ZmlsdGVycy4KICAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkuc2V0SGFzU29mdHdhcmVGaWx0ZXJz
KHRydWUpOwotICAgIH0gZWxzZSBpZiAoZmlsdGVySW5mby5yZW5kZXJlcigpLT5maWx0ZXJTY2Fs
ZSgpICE9IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpIHsK
LSAgICAgICAgZmlsdGVySW5mby5yZW5kZXJlcigpLT5zZXRGaWx0ZXJTY2FsZShyZW5kZXJlcigp
LmZyYW1lKCkucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICB9IGVsc2UgaWYgKGZp
bHRlckluZm8ucmVuZGVyZXIoKS0+ZmlsdGVyU2NhbGUoKSAhPSBmcmFtZS5wYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCkpIHsKKyAgICAgICAgZmlsdGVySW5mby5yZW5kZXJlcigpLT5zZXRGaWx0
ZXJTY2FsZShmcmFtZS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBmaWx0
ZXJJbmZvLnJlbmRlcmVyKCktPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA2OTIyMjgxOTE4
YzQ4MzFlNzI5OTUzYjYyMDI5MTI4ODI4ZDUxOGZmLi4yZDQ3NTgyMWZkMmZjNzNhOTRlNjc1Mzk0
YWU4YTYzMGVhNTdmMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcApAQCAtMTc5LDcgKzE3OSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgSW50
UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFy
Z2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQo
KSwgLW1hcmdpblJlY3QueSgpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpKTsKKyAgICAv
LyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZC4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJh
dGVkKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAKaW5kZXggNWU0Nzc1YmUwYjZhMDA0YzZmNWM2MjZhYzM0MWEzMmI5MWU1N2U2My4uMGU5MjNk
OGNiMjkyOTdhZDQxMGMyMTdkMjAzNjQ4NmQwNTJiYjNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAgICAgQWZmaW5lVHJh
bnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRl
VHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogCiAg
ICAgaWYgKHNob3VsZENyZWF0ZUNsaXBwZXJNYXNrSW1hZ2UgJiYgIXJlcGFpbnRSZWN0LmlzRW1w
dHkoKSkgewotICAgICAgICBjbGlwcGVyTWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgY2xpcHBlck1hc2tJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNv
bHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC5yZW5kZXJpbmdNb2Rl
KCkpOwogICAgICAgICBpZiAoIWNsaXBwZXJNYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGFjZWEyMzBjOWQ5MjVjMzQ2ZTgwZDQy
OGQ5OTgyYzU4Nzk1Y2Q4ZjguLmRjNWQyNzUyODFmNDAzMzdhZTgwNDMzZDUyZjFiY2I3MGQ4OWEy
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29u
dGV4dComIGNvbgogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGlu
YXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0
ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0
byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBh
aW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxl
cmF0ZWQpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbWFza0ltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWQzN2Q0N2M5ODQ2
YWMwMDUzZGE1MmM1NGRkOWFmNGMzMWQ1Y2YwNy4uYjNiMDExMTdlNDJlMTU3ZmI0YmNjNWI5ZDUw
NGM2ZmEzODVjM2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgUmVuZGUKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVw
YWludFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ0lfTElORUFSUkdCID8gQ29sb3JT
cGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VEZXZpY2VSR0I7Ci0gICAgICAgIG1hc2tlckRhdGEt
Pm1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFp
bnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgVW5hY2NlbGVyYXRlZCk7Cisg
ICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwg
Y29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRl
eCBiNGY0ZDIzZjQxMGNmZWJjOThlZjZjY2U5NmE4YTA0Mzc0ZWE4ODJlLi5iZDVlMTNkOWMzYmE3
OGE0OTViNWM1ZmQxYWRhMDAyZTJiZTYwMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC05NCw3
ICs5NCw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0
dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgdW5zCiAgICAgICAgIHN0YXRpY19jYXN0PGZs
b2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CiAKICAgICAv
LyBCdWlsZCB0aWxlIGltYWdlLgotICAgIGF1dG8gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdl
KG1fYXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRp
bGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Cisg
ICAgYXV0byB0aWxlSW1hZ2UgPSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRyaWJ1dGVzLCB0aWxlQm91
bmRhcmllcywgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNmb3JtLCBjbGFt
cGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
ZmI5YTAzYzU5NWU2MzYwNjk2YWUxYjNmZDVmYjIxNGNmMzY0ZjA0YS4uODliOGUzOGVlODUxNTVh
MmIwODc3ZDdkNWZlNzQ1YzhlZjFlYzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKICAgICBGbG9hdFNpemUgc2NhbGU7CiAgICAgRmxvYXRT
aXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKHBhaW50UmVjdC5zaXpl
KCksIHNjYWxlKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNsYW1wZWRTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgMSwgY29sb3JTcGFjZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0Ugog
ICAgIGlmIChjbGFtcGVkU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUs
IDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNw
YWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDgxNTNjMWE5M2Zh
MzZmMjVlMzA2OTY5NjE4NzUzMWZiYTBjNTkwNC4uNjNlYjBlZjc2MTY5NzBiZTIzNWI2Y2VjOTg4
NTNkN2NiYWQwMGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CkBAIC0xNzMsNyArMTczLDggQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUoKSwgMSk7CisgICAgLy8gQ2Fpcm8gZG9lcyBub3QgdXNlIHRoZSBhY2Nl
bGVyYXRlZCBkcmF3aW5nIGZsYWcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAg
ICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCBjZmNjZDNjZDY0OTI2NTIxOTc2YzZiZjE4NTZi
NmU4ZmI0NTNkZDMzLi45OWUzNDhiYmRiMTU2YWEzNjcxNmI4MzRmNmQ0OWVmNjk0ODE1ODgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbQpAQCAtNDcxLDcgKzQ3MSw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBX
ZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJ
dGVtCiAgICAgaWYgKCFjbGllbnRGbG9hdFJlY3RGb3JOb2RlKCpub2RlLCByZWN0KSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSk7CisgICAgLy8gVGhpcyBpcyBlZmZl
Y3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxlcmF0
ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCisgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6
ZSgpLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG5p
bDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261701</attachid>
            <date>2015-09-21 16:34:26 -0700</date>
            <delta_ts>2015-09-22 11:19:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149428-20150921163410.patch</filename>
            <type>text/plain</type>
            <size>31462</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM1OWJkNzBhMmMwYzBm
YTM2N2U1YTgxYjgxODE4NTk0YTI5OWMxOS4uZGYwZWYyMDRlNDE2Zjg0NWNjNDA2NjY1ZmQzZTYw
OGE5OWNjMmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDE1LTA5LTIxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgaXQgbW9y
ZSBvYnZpb3VzIHdoZW4gdXNpbmcgYW4gdW5hY2NlbGVyYXRlZCBpbWFnZSBidWZmZXIsIGFuZCBm
aXggYSBmZXcgY2FsbGVycyB3aG8gZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgTWFrZSB0aGUgUmVuZGVyaW5nTW9kZSBw
YXJhbWV0ZXIgdG8gSW1hZ2VCdWZmZXI6OmNyZWF0ZSBub24tb3B0aW9uYWwuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cmVuZGVyaW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICBBZGQgcmVuZGVyaW5nTW9kZSgpIGdldHRl
ciBzbyB0aGF0IGV2ZXJ5IGNhbGxlciBkb2Vzbid0IG5lZWQgdG8gZG8gdGhlIGNvbnZlcnNpb24g
dG8gUmVuZGVyaW5nTW9kZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToK
KyAgICAgICAgVGhlc2UgZml2ZSBjYWxsZXJzIGNyZWF0ZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2Nl
bGVyYXRlZCBJbWFnZUJ1ZmZlcnMgd2hpY2gKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5IGluc3Rl
YWQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0aW9uIGJpdCBmcm9tIHRoZSBjb250ZXh0CisgICAgICAg
IHRoYXQgdGhlIEltYWdlQnVmZmVyIHdpbGwgZXZlbnR1YWxseSBiZSBwYWludGVkIGludG8uIEJ1
Z3MgaGF2ZSBiZWVuIGZpbGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUNvbXBv
c2l0aW5nQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICBBZGp1c3QgdGhlIGFyZ3VtZW50IG9yZGVyIGFuZCBy
ZW1vdmUgZGVmYXVsdHMgd2hpY2ggYXJlIHBhc3NlZCBleHBsaWNpdGx5LgorCisgICAgICAgICog
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZy
YW1lUmVjdCk6CisgICAgICAgIFNuYXBzaG90cyBhcmUgKGN1cnJlbnRseSkgbWVhbnQgdG8gYmUg
dGFrZW4gd2l0aG91dCBhY2NlbGVyYXRlZCBkcmF3aW5nLgorICAgICAgICBNYWtlIHRoaXMgZXhw
bGljaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICBNYWtl
IHVzZSBvZiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyLiBUaGlzIGNhbGxlciB3YXMgcHJldmlvdXNs
eSBjcmVhdGluZworICAgICAgICBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBjb250
ZXh0IQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICBSZW1vdmUgYSBjb21tZW50LgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVm
ZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgU2hhZG93Qmx1ciBpcyBvbmx5IHVzZWQg
d2l0aCB1bmFjY2VsZXJhdGVkIGNvbnRleHRzLCBzbyBpdCdzIE9LIHRvIGhhcmRjb2RlIFVuYWNj
ZWxlcmF0ZWQgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KToKKyAgICAgICAgRmxpcCB0aGUgb3JkZXIgb2YgdGhlIGFyZ3VtZW50cy4KKworICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICBUaGlzIGNhbGxlciB3YXMgcHJldmlvdXNseSBjcmVhdGluZyBhbiB1bmFjY2VsZXJh
dGVkIGJ1ZmZlcjsgaW5zdGVhZCwgbWF0Y2ggdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKworICAg
ICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6
CisgICAgICAgIEFkanVzdCB0aGUgYXJndW1lbnQgb3JkZXIgYW5kIHJlbW92ZSBkZWZhdWx0cyB3
aGljaCBhcmUgcGFzc2VkIGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBS
ZWN0cyk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIHVubmVlZGVkIHJlbmRlcmluZ01vZGUgbG9j
YWwsIGFuZCBmYWN0b3Igb3V0IHJldHJpZXZhbCBvZiBGcmFtZS4KKworICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgIFRoZXNlIHRocmVlIGNhbGxlcnMgd2VyZSBwcmV2aW91c2x5IGNyZWF0aW5nIGFuIHVu
YWNjZWxlcmF0ZWQgYnVmZmVyOyBpbnN0ZWFkLCBtYXRjaCB0aGUgZGVzdGluYXRpb24gYnVmZmVy
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4pOgorICAgICAgICBNYWtlIHVzZSBvZiByZW5kZXJpbmdNb2RlKCkuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICBBZGp1c3Qg
dGhlIGFyZ3VtZW50IG9yZGVyLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisKKzIwMTUtMDktMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKICAgICAgICAgc3ZnL2N1c3RvbS9oaWRwaS1tYXNraW5nLWNsaXBwaW5nLnN2ZyBmYWlscyB3
aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTQxMwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI3ODcw
NTg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMmJkMThiZWM5Y2MyODQ4OGUzYjkwMGFjMjE2NDVmMjc0
OTk5MWEyYS4uZTZhZDcxNjg5NTc0YzA1Y2IwMjJhZmE0NDg1ZDE3ODc0YWM5YTc3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTIxICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgbW9yZSBvYnZpb3VzIHdo
ZW4gdXNpbmcgYW4gdW5hY2NlbGVyYXRlZCBpbWFnZSBidWZmZXIsIGFuZCBmaXggYSBmZXcgY2Fs
bGVycyB3aG8gZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChX
ZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJ
dGVtKToKKwogMjAxNS0wOS0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgogCiAgICAgICAgIFJlbW92ZSBYSFJfVElNRU9VVCBjb21waWxhdGlvbiBndWFyZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDkwZjU1ZDRk
NTFmOTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQuLjdmZmY0YzQ5ODk0ZWQyZTQ0NWQ0MTA0
MWRkN2Q0N2QyYTVmNGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VW
YWx1ZS5jcHAKQEAgLTEyMCw3ICsxMjAsOCBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAg
ICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdl
IGludG8gSW1hZ2VCdWZmZXIuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZXh0
dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKTsKKyAgICAvLyBGSVhNRSAoMTQ5NDI0KTog
VGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4K
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCmluZGV4IGJiZmY3NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTll
NWIuLjQ0ZGY5M2MyNWM0MjUxYTMzMDIyM2E1ODM1NWJmZDk1NDY2MTFlZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC01NzcsNyArNTc3LDcgQEAgdm9p
ZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2NlbGVy
YXRlKGJ1ZmZlclNpemUpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwotICAgIG1faW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAyYTc3YjkxZmYyYjAyNzVk
YjA4NDkwZDgzYmY0YmUzZDkzNmJlMjMzLi45YzEwOTdiYTYwYjhiMTBmOWU3N2NiZDVjNTlmYzg3
NjdjNzNiMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE2ODQsOCArMTY4NCw3IEBAIHRlbXBsYXRl
PGNsYXNzIFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjYWxjdWxhdGVDb21w
b3NpdGluZ0J1ZmZlclJlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBi
dWZmZXJSZWN0KQogewotICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyTW9kZSA9IGlzQWNjZWxlcmF0
ZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKLSAgICByZXR1cm4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVu
ZGVyTW9kZSk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyUmVjdC5zaXpl
KCksIGlzQWNjZWxlcmF0ZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDE2ZTc3MzE3NzJjMDIwYTljNDkxM2E3MmMxMGJjMTI3
Yjc4Yzk3MzIuLjYxNGRhNDMzMDc4ZGE5YjE2NTc1YmUxYjI3YWMyZjcxYTcyYTU4ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC00ODgwLDcgKzQ4ODAsOCBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3Qg
SQogICAgICAgICByZXR1cm4gYnVmOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgMSk7CisgICAgLy8gRklY
TUUgKDE0OTQyMyk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1
bmFjY2VsZXJhdGVkPworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZW1wKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpID0gc3RkOjptaW4obV9jYXBhY2l0eSAtIDEs
IGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCmluZGV4IDIyY2UzMzlkMzQ4MjU4NGZjZjEzZjRjYWVlZDhhMGI0NTZmZmE3ZDMu
LmJlOTY3ZDdhYTAwYmNlMTIyZDY5N2Q2NDM2MDkyNDE1ZGE0MDYwYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTEz
NzEsNyArMTM3MSw4IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAKICAgICBJbnRSZWN0IHBh
aW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KSk7CisgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBVbmFj
Y2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcAppbmRleCBkODUxNDdkYzJjZWRmNjU4ODQ4YmRhYjc2MDEwYTFiM2Y2NjAyOTBlLi40NzE0
ZGM2NjYyNDIxN2FlMjVmNzZiOGRlNWVkZWVjYzYzYzE1MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50
UmVjdCYgaW1hZwogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmRlbGVnYXRlc1BhZ2VTY2FsaW5n
KCkpCiAgICAgICAgIHNjYWxlRmFjdG9yICo9IGZyYW1lLnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9y
KCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgc2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rv
cik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IDk0MjJmOTQ5MDdmNGFhNTVlMWRjNTg4OWJhOTk1ZTdkNmE1YjkzMDAuLmNkMGJmZWU0OWQy
ZDUwYWRjOTA4OTE1YjFlYTZjZDU1MGU4ZjhmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2Nh
Y2hlZEltYWdlKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gY3R4dC5jcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAppbmRleCBkMmU1MjE1YjIzOWExZjE4OTk0NjM2NjlmNGExMDRjOTVjOTI0ZThjLi43
NWIyMGQzNmExZWExMWJjZWYzMDIyODI0ZGE0N2U3ZmM5MTQ5NjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzCiAKIHZv
aWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCks
IDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSA/
IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0
LnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGMxYTA0NzVjMjIzMjdhMWEwZWRmMTdmN2U1OTVjYjI4NWExYWUzNTYuLmE4
MGJjNWVjYmRmNjBmY2NlNGM2N2M5MDg1NmMyZWUyZjZiYTgyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIK
ICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YXRoLmgiCkBAIC0yNzAsNiArMjcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpOwogI2VuZGlm
CiAgICAgICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdDsKKyAgICAgICAgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNBY2NlbGVyYXRlZENv
bnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsgfQogCiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2F2ZSgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3Rv
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaAppbmRleCBhZmI2MTczYTU2OTU3ODY5ODdhZTg0OTU2N2JkM2IxYWM5ZjA0YWI0Li4wMDUy
MWI2YWY0YzlhODZjOTFhNGU0ZDgxODRmM2UwNGYwOGNhN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC04NCw2ICs4NCwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgZW51bSBUZXh0QWxpZ24geyBTdGFydFRl
eHRBbGlnbiwgRW5kVGV4dEFsaWduLCBMZWZ0VGV4dEFsaWduLCBDZW50ZXJUZXh0QWxpZ24sIFJp
Z2h0VGV4dEFsaWduIH07CiAKKyAgICBlbnVtIFJlbmRlcmluZ01vZGUgeworICAgICAgICBVbmFj
Y2VsZXJhdGVkLAorICAgICAgICBVbmFjY2VsZXJhdGVkTm9uUGxhdGZvcm1CdWZmZXIsIC8vIFVz
ZSBwbGFpbiBtZW1vcnkgYWxsb2NhdGlvbiByYXRoZXIgdGhhbiBwbGF0Zm9ybSBBUEkgdG8gYWxs
b2NhdGUgYmFja2luZyBzdG9yZS4KKyAgICAgICAgQWNjZWxlcmF0ZWQKKyAgICB9OworCiAgICAg
U3RyaW5nIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KTsKICAgICBib29sIHBhcnNlQmxlbmRNb2RlKGNvbnN0IFN0cmluZyYsIEJsZW5kTW9kZSYpOwog
ICAgIGJvb2wgcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIENv
bXBvc2l0ZU9wZXJhdG9yJiwgQmxlbmRNb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggMTU3YTNkZDRjY2UwNTliMjM4NjY1
MDEyNmVmMDExODI5MmMxNDU4MS4uZGQxNDY0OTlhZDI1ODVlNDMyZWJjZmI1MTcyZjMwYWM5ZjFl
MTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSW1hZ2VCdWZmZXI6OmNvcHlUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCYsIEdDM0RlbnVtLCBQbGF0Zm9ybTNECiAKIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sKQog
ewotICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBj
b250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQpOworICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGI5NzhjNGMwZjU3ODMwZjI5Yjg3
MTk4ZWRmZDQwNjkzMGNhYWU4MmQuLjQ4NDBjZDVmYjhmOGU0MzJjMTFkNzZjYmM3MTYyYWQ4ZjVi
ZDFmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtNTUsMTIgKzU1LDYgQEAgZW51bSBNdWx0aXBseSB7CiAgICAgVW5tdWx0aXBsaWVk
CiB9OwogCi1lbnVtIFJlbmRlcmluZ01vZGUgewotICAgIFVuYWNjZWxlcmF0ZWQsCi0gICAgVW5h
Y2NlbGVyYXRlZE5vblBsYXRmb3JtQnVmZmVyLCAvLyBVc2UgcGxhaW4gbWVtb3J5IGFsbG9jYXRp
b24gcmF0aGVyIHRoYW4gcGxhdGZvcm0gQVBJIHRvIGFsbG9jYXRlIGJhY2tpbmcgc3RvcmUuCi0g
ICAgQWNjZWxlcmF0ZWQKLX07Ci0KIGVudW0gQmFja2luZ1N0b3JlQ29weSB7CiAgICAgQ29weUJh
Y2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRo
ZSBjb3B5LgogICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5
IGFmZmVjdCB0aGUgY29weS4KQEAgLTc1LDcgKzY5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxs
b2NhdGlvbiBmYWlsdXJlLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0IsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSA9IFVuYWNjZWxlcmF0ZWQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgIHsKICAgICAgICAgYm9vbCBz
dWNjZXNzID0gZmFsc2U7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJl
bmRlcmluZ01vZGUsIHN1Y2Nlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDI0
ZTM3YzZhZTExNmZjMGVlYjJkZjI0YTMzZjQyMTQ2YTI1MjVjNjMuLjFiMjk3YmQ0OGFhOTgxYzZj
N2VhYTdjZjcyYjI4NjkxYzY1NGY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAt
NjMsNyArNjMsNiBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogdm9pZCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotLy8gICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApp
bmRleCA2MjNlOWNjY2RlMDIwYWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwLi5kNjYyMGM3OTAw
ODBhNmZkMGE3YzNkYjEzOWQ4OWUwMmZhMjk0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNzksNyArNzksOSBAQCBwdWJsaWM6
CiAgICAgICAgIEludFNpemUgcm91bmRlZFNpemUocm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUu
d2lkdGgoKSksIHJvdW5kVXBUb011bHRpcGxlT2YzMihzaXplLmhlaWdodCgpKSk7CiAKICAgICAg
ICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCAxKTsKKworICAgICAgICAvLyBTaGFkb3dCbHVyIGlz
IG5vdCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFu
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KKyAgICAgICAgbV9pbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFVuYWNjZWxlcmF0ZWQsIDEp
OwogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggYTA5MzAxNDk3YzI1NmIxMDRmODUyYjcxMjNlNDRhYzU0Zjk0MzA5ZS4uNWI2MjI2MjA2
NjY2MWU4NmExOTU4YjBiNzE0MzE5NDg5ZDJjOGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTMyMiw3ICsz
MjIsOCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGll
ZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUpCiAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIHNvdXJjZSB0byBlbnN1
cmUgdGhlIGJpdHMgZG9uJ3QgY2hhbmdlIGJlZm9yZSBiZWluZyBkcmF3bgogICAgIEludFNpemUg
c291cmNlQ29weVNpemUoc291cmNlUmVjdC53aWR0aCgpLCBzb3VyY2VSZWN0LmhlaWdodCgpKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUNvcHkgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNvdXJjZUNvcHlTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2Vs
ZXJhdGVkKTsKKyAgICAvLyBGSVhNRSAoMTQ5NDMxKTogU2hvdWxkIHRoaXMgSW1hZ2VCdWZmZXIg
YmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQ/IE1ha2luZyBpdCBtYXRjaCB0aGUgY29u
dGV4dCBzZWVtcyB0byBicmVhayBwdXREYXRhKCkuCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwg
VW5hY2NlbGVyYXRlZCwgMSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFzb3VyY2VD
b3B5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBiYTE0NzEyYTNj
Zjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkLi4zOWJjMzBkYTk4ZDUwZjQ5NzUzYWM0ZWE4
NDI5M2ZmZTBhZTkzMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
SW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcigpCiAgICAgaWYgKG1fb3Bl
bkNMSW1hZ2VSZXN1bHQpCiAgICAgICAgIHJldHVybiBvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIo
KTsKICNlbmRpZgotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jl
c3VsdENvbG9yU3BhY2UsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CisgICAgbV9pbWFnZUJ1
ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9y
ZXN1bHRDb2xvclNwYWNlKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0zMDgsNyArMzA4LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRl
ckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKCkKICAgICBpZiAoY29udGV4dC0+aXNG
YWlsZWQoY2xFbnF1ZXVlUmVhZEltYWdlKGNvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBtX29wZW5D
TEltYWdlUmVzdWx0LCBDTF9UUlVFLCBvcmlnaW4sIHJlZ2lvbiwgMCwgMCwgZGVzdGluYXRpb25Q
aXhlbEFycmF5LT5kYXRhKCksIDAsIDAsIDApKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSk7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVy
OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtNDYyLDcgKzQ2Miw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENv
bG9yU3BhY2UsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CisgICAgbV9pbWFnZUJ1ZmZlclJl
c3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlKTsKICAg
ICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApp
bmRleCA1NzU3ZTlhODUxODNjMDc2ODBiYTE5ZjRhNmEzMjFlNjU3NmQxYzQ2Li4yNWVkMWQ1NDE5
N2EwY2ZhMmEzYWRmNzcxMmI3NDQ2NDFhZjkyM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCB2
b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkK
ICAgICBpZiAoIW1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCkgewogICAgICAgICBJbnRTaXplIGxv
Z2ljYWxTaXplKG1fc291cmNlRHJhd2luZ1JlZ2lvbi53aWR0aCgpLCBtX3NvdXJjZURyYXdpbmdS
ZWdpb24uaGVpZ2h0KCkpOwogICAgICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1h
Z2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkKLSAgICAgICAgICAgIHNldFNvdXJj
ZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIGZpbHRlclNjYWxlKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlcmluZ01vZGUoKSkpOworICAgICAgICAgICAgc2V0U291
cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgp
LCBmaWx0ZXJTY2FsZSgpKSk7CiAgICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggMTUzZTM2ZDE1MTZmOWVkOWVhYTliZThhZThkNTVlM2FmMmEyNmFiYS4uN2VhMWRhNDRiMTFl
ZTA0NzM0ZDZjNGM5MzZjZTRlOTE1OGRjYzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC02ODkxLDE3ICs2ODkxLDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0UmVuZGVyZXIoKQogICAgIH0KICAgICAKICAgICBG
aWx0ZXJJbmZvJiBmaWx0ZXJJbmZvID0gRmlsdGVySW5mbzo6Z2V0KCp0aGlzKTsKKyAgICBGcmFt
ZSYgZnJhbWUgPSByZW5kZXJlcigpLmZyYW1lKCk7CiAgICAgaWYgKCFmaWx0ZXJJbmZvLnJlbmRl
cmVyKCkpIHsKICAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBmaWx0ZXJSZW5k
ZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZmlsdGVyUmVu
ZGVyZXItPnNldEZpbHRlclNjYWxlKHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCkpOwotICAgICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSByZW5k
ZXJlcigpLmZyYW1lKCkuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBB
Y2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgICAgIGZpbHRlclJlbmRlcmVyLT5zZXRS
ZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOworICAgICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0
RmlsdGVyU2NhbGUoZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAg
ZmlsdGVyUmVuZGVyZXItPnNldFJlbmRlcmluZ01vZGUoZnJhbWUuc2V0dGluZ3MoKS5hY2NlbGVy
YXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogICAg
ICAgICBmaWx0ZXJJbmZvLnNldFJlbmRlcmVyKFdURjo6bW92ZShmaWx0ZXJSZW5kZXJlcikpOwog
ICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIG9wdGltaXplIGF3YXkgY29kZSBwYXRocyBpbiBv
dGhlciBwbGFjZXMgaWYgd2Uga25vdyB0aGF0IHRoZXJlIGFyZSBubyBzb2Z0d2FyZSBmaWx0ZXJz
LgogICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5zZXRIYXNTb2Z0d2FyZUZpbHRlcnModHJ1ZSk7
Ci0gICAgfSBlbHNlIGlmIChmaWx0ZXJJbmZvLnJlbmRlcmVyKCktPmZpbHRlclNjYWxlKCkgIT0g
cmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkgewotICAgICAg
ICBmaWx0ZXJJbmZvLnJlbmRlcmVyKCktPnNldEZpbHRlclNjYWxlKHJlbmRlcmVyKCkuZnJhbWUo
KS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIH0gZWxzZSBpZiAoZmlsdGVySW5m
by5yZW5kZXJlcigpLT5maWx0ZXJTY2FsZSgpICE9IGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSkgeworICAgICAgICBmaWx0ZXJJbmZvLnJlbmRlcmVyKCktPnNldEZpbHRlclNjYWxl
KGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIGZpbHRlckluZm8u
cmVuZGVyZXIoKS0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDY5MjIyODE5MThjNDgzMWU3
Mjk5NTNiNjIwMjkxMjg4MjhkNTE4ZmYuLjJkNDc1ODIxZmQyZmM3M2E5NGU2NzUzOTRhZThhNjMw
ZWE1N2YyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBA
IC0xNzksNyArMTc5LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBJbnRSZWN0IGlt
YWdlUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGltYWdlUik7CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0
ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFy
Z2luUmVjdC55KCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCkpOworICAgIC8vIEZJWE1F
ICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwog
CiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRl
eCA1ZTQ3NzViZTBiNmEwMDRjNmY1YzYyNmFjMzQxYTMyYjkxZTU3ZTYzLi4wZTkyM2Q4Y2IyOTI5
N2FkNDEwYzIxN2QyMDM2NDg2ZDA1MmJiM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICBBZmZpbmVUcmFuc2Zvcm0g
YWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zv
cm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CiAKICAgICBpZiAo
c2hvdWxkQ3JlYXRlQ2xpcHBlck1hc2tJbWFnZSAmJiAhcmVwYWludFJlY3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGNsaXBwZXJNYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIFVuYWNjZWxlcmF0ZWQpOworICAgICAgICBjbGlwcGVyTWFza0ltYWdlID0gU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJh
bnNmb3JtLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CiAg
ICAgICAgIGlmICghY2xpcHBlck1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggYWNlYTIzMGM5ZDkyNWMzNDZlODBkNDI4ZDk5ODJj
NTg3OTVjZDhmOC4uZGM1ZDI3NTI4MWY0MDMzN2FlODA0MzNkNTJmMWJjYjcwZDg5YTI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
cmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYg
Y29uCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0
ZW0oKnRleHRSb290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290
QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJ
bWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0
LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2NlbGVyYXRlZCk7
CisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCBhZDM3ZDQ3Yzk4NDZhYzAwNTNk
YTUyYzU0ZGQ5YWY0YzMxZDVjZjA3Li5iM2IwMTExN2U0MmUxNTdmYjRiY2M1YjlkNTA0YzZmYTM4
NWMzZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZQogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlICYmICFyZXBhaW50UmVj
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0g
c3R5bGUoKS5zdmdTdHlsZSgpOwogICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdmdT
dHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDSV9MSU5FQVJSR0IgPyBDb2xvclNwYWNlTGlu
ZWFyUkdCIDogQ29sb3JTcGFjZURldmljZVJHQjsKLSAgICAgICAgbWFza2VyRGF0YS0+bWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3Qs
IGFic29sdXRlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAg
bWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBjb250ZXh0
LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGI0ZjRk
MjNmNDEwY2ZlYmM5OGVmNmNjZTk2YThhMDQzNzRlYTg4MmUuLmJkNWUxM2Q5YzNiYTc4YTQ5NWI1
YzVmZDFhZGEwMDJlMmJlNjAzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCB1bnMKICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
YXR0cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNjYWxlKCkpKTsKIAogICAgIC8vIEJ1aWxk
IHRpbGUgaW1hZ2UuCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRy
aWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdl
VHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29udGV4dC5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKKyAgICBhdXRv
IHRpbGVJbWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVz
LCBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBmYjlhMDNj
NTk1ZTYzNjA2OTZhZTFiM2ZkNWZiMjE0Y2YzNjRmMDRhLi44OWI4ZTM4ZWU4NTE1NWEyYjA4Nzdk
N2Q1ZmU3NDVjOGVmMWVjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UgogICAgIEZsb2F0U2l6ZSBzY2FsZTsKICAgICBGbG9hdFNpemUgY2xh
bXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocGFpbnRSZWN0LnNpemUoKSwgc2Nh
bGUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIDEsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCAxLCBj
b2xvclNwYWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiAgICAgaWYg
KGNsYW1wZWRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29s
b3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAwODE1M2MxYTkzZmEzNmYyNWUz
MDY5Njk2MTg3NTMxZmJhMGM1OTA0Li42M2ViMGVmNzYxNjk3MGJlMjM1YjZjZWM5ODg1M2Q3Y2Jh
ZDAwY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3
Myw3ICsxNzMsOCBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCAxKTsKKyAgICAvLyBDYWlybyBkb2VzIG5vdCB1c2UgdGhlIGFjY2VsZXJhdGVk
IGRyYXdpbmcgZmxhZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlci4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAo
IWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IGNmY2NkM2NkNjQ5MjY1MjE5NzZjNmJmMTg1NmI2ZThmYjQ1
M2RkMzMuLjk5ZTM0OGJiZGIxNTZhYTM2NzE2YjgzNGY2ZDQ5ZWY2OTQ4MTU4ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tCkBAIC00NzEsNyArNDcxLDggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAg
ICBpZiAoIWNsaWVudEZsb2F0UmVjdEZvck5vZGUoKm5vZGUsIHJlY3QpKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpKTsKKyAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5
IGEgc25hcHNob3QsIGFuZCB3aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNo
aW9uIGluIGxpbmUgd2l0aCBGcmFtZVNuYXBzaG90dGluZy4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFVu
YWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261754</attachid>
            <date>2015-09-22 11:20:00 -0700</date>
            <delta_ts>2015-09-22 11:20:26 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-149428-20150922111943.patch</filename>
            <type>text/plain</type>
            <size>34669</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM1OWJkNzBhMmMwYzBm
YTM2N2U1YTgxYjgxODE4NTk0YTI5OWMxOS4uNDNlNGM3ZGEzZDg4ODUxNDMyMmVkNWVkMzY0MmVj
M2Y5ZDQ3YWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxNS0wOS0yMSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBNYWtlIGl0IG1v
cmUgb2J2aW91cyB3aGVuIHVzaW5nIGFuIHVuYWNjZWxlcmF0ZWQgaW1hZ2UgYnVmZmVyLCBhbmQg
Zml4IGEgZmV3IGNhbGxlcnMgd2hvIGRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDk0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIgYW5kIERhcmluIEFkbGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgTWFrZSB0aGUg
UmVuZGVyaW5nTW9kZSBwYXJhbWV0ZXIgdG8gSW1hZ2VCdWZmZXI6OmNyZWF0ZSBub24tb3B0aW9u
YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVuZGVyaW5nTW9kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICBBZGQgcmVuZGVy
aW5nTW9kZSgpIGdldHRlciBzbyB0aGF0IGV2ZXJ5IGNhbGxlciBkb2Vzbid0IG5lZWQgdG8gZG8g
dGhlIGNvbnZlcnNpb24gdG8gUmVuZGVyaW5nTW9kZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6
OmltYWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRl
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgVGhlc2UgZml2ZSBjYWxsZXJzIGNyZWF0ZSB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMgd2hpY2gKKyAgICAgICAgc2hvdWxk
IHByb2JhYmx5IGluc3RlYWQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0aW9uIGJpdCBmcm9tIHRoZSBj
b250ZXh0CisgICAgICAgIHRoYXQgdGhlIEltYWdlQnVmZmVyIHdpbGwgZXZlbnR1YWxseSBiZSBw
YWludGVkIGludG8uIEJ1Z3MgaGF2ZSBiZWVuIGZpbGVkLgorCisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICBBZGp1c3QgdGhlIGFyZ3Vt
ZW50IG9yZGVyIGFuZCByZW1vdmUgZGVmYXVsdHMgd2hpY2ggYXJlIHBhc3NlZCBleHBsaWNpdGx5
LgorCisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzbmFwc2hvdEZyYW1lUmVjdCk6CisgICAgICAgIFNuYXBzaG90cyBhcmUgKGN1cnJlbnRs
eSkgbWVhbnQgdG8gYmUgdGFrZW4gd2l0aG91dCBhY2NlbGVyYXRlZCBkcmF3aW5nLgorICAgICAg
ICBNYWtlIHRoaXMgZXhwbGljaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICBNYWtlIHVzZSBvZiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyLiBUaGlzIGNhbGxl
ciB3YXMgcHJldmlvdXNseSBjcmVhdGluZworICAgICAgICBhbiB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZCBjb250ZXh0IQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICBSZW1vdmUgYSBjb21tZW50LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JhdGNoQnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgU2hhZG93Qmx1
ciBpcyBvbmx5IHVzZWQgd2l0aCB1bmFjY2VsZXJhdGVkIGNvbnRleHRzLCBzbyBpdCdzIE9LIHRv
IGhhcmRjb2RlIFVuYWNjZWxlcmF0ZWQgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6YXNJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAgRmxpcCB0aGUgb3JkZXIgb2YgdGhlIGFy
Z3VtZW50cy4KKworICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICBUaGlzIGNhbGxlciB3YXMgcHJldmlvdXNseSBjcmVhdGlu
ZyBhbiB1bmFjY2VsZXJhdGVkIGJ1ZmZlcjsgaW5zdGVhZCwgbWF0Y2ggdGhlIGRlc3RpbmF0aW9u
IGJ1ZmZlci4KKworICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YWxsb2NhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZCk6CisgICAgICAgIEFkanVzdCB0aGUgYXJndW1lbnQgb3JkZXIgYW5kIHJl
bW92ZSBkZWZhdWx0cyB3aGljaCBhcmUgcGFzc2VkIGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIHVubmVlZGVkIHJl
bmRlcmluZ01vZGUgbG9jYWwsIGFuZCBmYWN0b3Igb3V0IHJldHJpZXZhbCBvZiBGcmFtZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1Rv
Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgIFRoZXNlIHR3byBjYWxsZXJzIGFyZSB1bmNvbmRpdGlvbmFsbHkg
Y3JlYXRpbmcgdW5hY2NlbGVyYXRlZCBidWZmZXJzLAorICAgICAgICBhbmQgY2hhbmdpbmcgdGhp
cyB0byBtYXRjaCB0aGUgZGVzdGluYXRpb24gY29udGV4dCBzZWVtcyB0byBhY3R1YWxseQorICAg
ICAgICBicmVhayB0aGluZ3MuIFRoaXMgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgIFRoaXMgY2FsbGVyIHdhcyBwcmV2aW91c2x5IGNyZWF0aW5nIGFuIHVuYWNjZWxl
cmF0ZWQgYnVmZmVyOyBpbnN0ZWFkLCBtYXRjaCB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgor
ICAgICAgICBNYWtlIHVzZSBvZiByZW5kZXJpbmdNb2RlKCkuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICBBZGp1c3QgdGhlIGFy
Z3VtZW50IG9yZGVyLgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisK
KzIwMTUtMDktMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgc3ZnL2N1c3RvbS9oaWRwaS1tYXNraW5nLWNsaXBwaW5nLnN2ZyBmYWlscyB3aXRoIGFj
Y2VsZXJhdGVkIGRyYXdpbmcgb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTQxMwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI3ODcwNTg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggMmJkMThiZWM5Y2MyODQ4OGUzYjkwMGFjMjE2NDVmMjc0OTk5MWEy
YS4uNTliMjEyNWE3OWQ0YWQyMDBiNDZkZDQyN2EwOWFlNTkwNjY0ZGQxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgbW9yZSBvYnZpb3VzIHdoZW4gdXNp
bmcgYW4gdW5hY2NlbGVyYXRlZCBpbWFnZSBidWZmZXIsIGFuZCBmaXggYSBmZXcgY2FsbGVycyB3
aG8gZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0pOgorCiAyMDE1LTA5LTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgUmVtb3ZlIFhIUl9USU1FT1VUIGNvbXBpbGF0aW9u
IGd1YXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjY3ZDU2YzE4M2JhYzVmNDZjN2QwMjhkY2EwNWJkNGYxNTZj
MDZiNC4uMDRlNGYyNGYwYjc3NmMyMTc0YzMzZDllZGY3YTVmYTgzYTYzMjBkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgbW9yZSBvYnZpb3VzIHdoZW4gdXNpbmcg
YW4gdW5hY2NlbGVyYXRlZCBpbWFnZSBidWZmZXIsIGFuZCBmaXggYSBmZXcgY2FsbGVycyB3aG8g
ZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTQy
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSk6CisKIDIwMTUtMDktMjEgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRoZSBhYmlsaXR5
IGZvciB0ZXN0cyB0byBydW4gc2NyaXB0IGluIHRoZSBVSSBwcm9jZXNzIGluIFdlYktpdFRlc3RS
dW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCA5
MGY1NWQ0ZDUxZjk4MzQ2OWVhNTJmZDZiZTQzYWM1YmM2ZGZmNTVkLi43ZmZmNGM0OTg5NGVkMmU0
NDVkNDEwNDFkZDdkNDdkMmE1ZjRkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCkBAIC0xMjAsNyArMTIwLDggQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0
ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRT
aXoKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIC8vIFRyYW5zZm9y
bSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSk7CisgICAgLy8gRklYTUUgKDE0
OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQuCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0ZXh0dXJlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCiAg
ICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVj
dCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBiYmZmNzYyYjViZDg2NjdhMWFhZjU4ZDQ5YWRlZjUy
ZDhmOTE5ZTViLi40NGRmOTNjMjVjNDI1MWEzMzAyMjNhNTgzNTViZmQ5NTQ2NjExZWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNTc3LDcgKzU3Nyw3
IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gc2hvdWxk
QWNjZWxlcmF0ZShidWZmZXJTaXplKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKLSAg
ICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHJlbmRlcmluZ01vZGUpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMmE3N2I5MWZm
MmIwMjc1ZGIwODQ5MGQ4M2JmNGJlM2Q5MzZiZTIzMy4uOWMxMDk3YmE2MGI4YjEwZjllNzdjYmQ1
YzU5ZmM4NzY3YzczYjIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjg0LDggKzE2ODQsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2FsY3Vs
YXRlQ29tcG9zaXRpbmdCdWZmZXJSZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50
UmVjdCYgYnVmZmVyUmVjdCkKIHsKLSAgICBSZW5kZXJpbmdNb2RlIHJlbmRlck1vZGUgPSBpc0Fj
Y2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgcmV0dXJuIElt
YWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyUmVjdC5zaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIHJlbmRlck1vZGUpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJl
Y3Quc2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKElt
YWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAxNmU3NzMxNzcyYzAyMGE5YzQ5MTNhNzJj
MTBiYzEyN2I3OGM5NzMyLi42MTRkYTQzMzA3OGRhOWIxNjU3NWJlMWIyN2FjMmY3MWE3MmE1OGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDg4MCw3ICs0ODgwLDggQEAgSW1hZ2VCdWZmZXIqIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVy
KGNvbnN0IEkKICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIDEpOworICAg
IC8vIEZJWE1FICgxNDk0MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZD8KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRl
bXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICgh
dGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNp
dHkgLSAxLCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCAyMmNlMzM5ZDM0ODI1ODRmY2YxM2Y0Y2FlZWQ4YTBiNDU2
ZmZhN2QzLi5iZTk2N2Q3YWEwMGJjZTEyMmQ2OTdkNjQzNjA5MjQxNWRhNDA2MGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CkBAIC0xMzcxLDcgKzEzNzEsOCBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aQogCiAgICAgSW50
UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURl
dmljZVJHQikpOworICAgIC8vIEZJWE1FICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90
IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgVW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBz
aG90dGluZy5jcHAKaW5kZXggZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkw
ZS4uNDcxNGRjNjY2MjQyMTdhZTI1Zjc2YjhkZTVlZGVlY2M2M2MxNTMxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNv
bnN0IEludFJlY3QmIGltYWcKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5kZWxlZ2F0ZXNQYWdl
U2NhbGluZygpKQogICAgICAgICBzY2FsZUZhY3RvciAqPSBmcmFtZS5wYWdlKCktPnBhZ2VTY2Fs
ZUZhY3RvcigpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIHNjYWxlRmFjdG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCwgc2Nh
bGVGYWN0b3IpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3Qu
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAppbmRleCA5NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3ZDZhNWI5MzAwLi5jZDBi
ZmVlNDlkMmQ1MGFkYzkwODkxNWIxZWE2Y2Q1NTBlOGY4ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MTYsNyArNjE2LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
ICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNp
emUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGN0
eHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgp
KSk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHAKaW5kZXggZDJlNTIxNWIyMzlhMWYxODk5NDYzNjY5ZjRhMTA0Yzk1Yzky
NGU4Yy4uNzViMjBkMzZhMWVhMTFiY2VmMzAyMjgyNGRhNDdlN2ZjOTE0OTY1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
cwogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwg
Y29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAppbmRleCBjMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFl
MzU2Li5hODBiYzVlY2JkZjYwZmNjZTRjNjdjOTA4NTZjMmVlMmY2YmE4MjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiUGF0aC5oIgpAQCAtMjcwLDYgKzI3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sKTsK
ICNlbmRpZgogICAgICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgY29uc3Q7CisgICAg
ICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7IH0KIAogICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmUoKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmgKaW5kZXggYWZiNjE3M2E1Njk1Nzg2OTg3YWU4NDk1NjdiZDNiMWFjOWYwNGFi
NC4uMDA1MjFiNmFmNGM5YTg2YzkxYTRlNGQ4MTg0ZjNlMDRmMDhjYTdjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApAQCAtODQsNiAr
ODQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGVudW0gVGV4dEFsaWduIHsg
U3RhcnRUZXh0QWxpZ24sIEVuZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFs
aWduLCBSaWdodFRleHRBbGlnbiB9OwogCisgICAgZW51bSBSZW5kZXJpbmdNb2RlIHsKKyAgICAg
ICAgVW5hY2NlbGVyYXRlZCwKKyAgICAgICAgVW5hY2NlbGVyYXRlZE5vblBsYXRmb3JtQnVmZmVy
LCAvLyBVc2UgcGxhaW4gbWVtb3J5IGFsbG9jYXRpb24gcmF0aGVyIHRoYW4gcGxhdGZvcm0gQVBJ
IHRvIGFsbG9jYXRlIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIEFjY2VsZXJhdGVkCisgICAgfTsK
KwogICAgIFN0cmluZyBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSk7CiAgICAgYm9vbCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcmLCBCbGVuZE1v
ZGUmKTsKICAgICBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJp
bmcmLCBDb21wb3NpdGVPcGVyYXRvciYsIEJsZW5kTW9kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDE1N2EzZGQ0Y2NlMDU5
YjIzODY2NTAxMjZlZjAxMTgyOTJjMTQ1ODEuLmRkMTQ2NDk5YWQyNTg1ZTQzMmViY2ZiNTE3MmYz
MGFjOWYxZTE3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEltYWdlQnVmZmVyOjpjb3B5
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QmLCBHQzNEZW51bSwgUGxhdGZvcm0z
RAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Ym9vbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFj
Y2VsZXJhdGVkKTsKKyAgICByZXR1cm4gY3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBiOTc4YzRjMGY1Nzgz
MGYyOWI4NzE5OGVkZmQ0MDY5MzBjYWFlODJkLi40ODQwY2Q1ZmI4ZjhlNDMyYzExZDc2Y2JjNzE2
MmFkOGY1YmQxZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKQEAgLTU1LDEyICs1NSw2IEBAIGVudW0gTXVsdGlwbHkgewogICAgIFVubXVs
dGlwbGllZAogfTsKIAotZW51bSBSZW5kZXJpbmdNb2RlIHsKLSAgICBVbmFjY2VsZXJhdGVkLAot
ICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9ybUJ1ZmZlciwgLy8gVXNlIHBsYWluIG1lbW9yeSBh
bGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRmb3JtIEFQSSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0
b3JlLgotICAgIEFjY2VsZXJhdGVkCi19OwotCiBlbnVtIEJhY2tpbmdTdG9yZUNvcHkgewogICAg
IENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFm
ZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRy
YXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC03NSw3ICs2OSw3IEBAIGNsYXNzIEltYWdlQnVm
ZmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVy
IG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUgPSAxLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBVbmFjY2VsZXJhdGVkKQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQikKICAgICB7CiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCByZW5kZXJpbmdNb2RlLCBzdWNjZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCAyNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzLi4xYjI5N2JkNDhh
YTk4MWM2YzdlYWE3Y2Y3MmIyODY5MWM2NTRmNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAKQEAgLTYzLDcgKzYzLDYgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKIHZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKLS8vICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVy
YXRlZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihzaXplKCksIHRydWUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKaW5kZXggNjIzZTljY2NkZTAyMGFlNGFjYjZjNTdkODNhMmNjNTE3ODJmMTllMC4uZDY2
MjBjNzkwMDgwYTZmZDBhN2MzZGIxMzlkODllMDJmYTI5NGVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTc5LDcgKzc5LDkgQEAg
cHVibGljOgogICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxlT2Yz
MihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkpOwog
CiAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6ZSwgMSk7CisKKyAgICAgICAgLy8gU2hhZG93
Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8g
bWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCisgICAgICAgIG1f
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBVbmFjY2VsZXJh
dGVkLCAxKTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGEwOTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUuLjVi
NjIyNjIwNjY2NjFlODZhMTk1OGIwYjcxNDMxOTQ4OWQyYzhmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0z
MjIsNyArMzIyLDggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11
bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICNpZiBVU0UoSU9TVVJGQUNF
X0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzb3VyY2Ug
dG8gZW5zdXJlIHRoZSBiaXRzIGRvbid0IGNoYW5nZSBiZWZvcmUgYmVpbmcgZHJhd24KICAgICBJ
bnRTaXplIHNvdXJjZUNvcHlTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWln
aHQoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VDb3B5ID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VDb3B5U2l6ZSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwg
VW5hY2NlbGVyYXRlZCk7CisgICAgLy8gRklYTUUgKDE0OTQzMSk6IFNob3VsZCB0aGlzIEltYWdl
QnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkPyBNYWtpbmcgaXQgbWF0Y2gg
dGhlIGNvbnRleHQgc2VlbXMgdG8gYnJlYWsgcHV0RGF0YSgpLgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc291cmNlQ29weSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlQ29w
eVNpemUsIFVuYWNjZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGlmICgh
c291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYmEx
NDcxMmEzY2Y4NDA3NGU3MDc0Y2NiOGQwMTZkMzIxNzMwMzQzZC4uMzliYzMwZGE5OGQ1MGY0OTc1
M2FjNGVhODQyOTNmZmUwYWU5MzE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjc2LDcgKzI3
Niw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIGlm
IChtX29wZW5DTEltYWdlUmVzdWx0KQogICAgICAgICByZXR1cm4gb3BlbkNMSW1hZ2VUb0ltYWdl
QnVmZmVyKCk7CiAjZW5kaWYKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSwgbV9yZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOworICAgIG1f
aW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxl
KCksIG1fcmVzdWx0Q29sb3JTcGFjZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3Q6Om9wZW5DTEltYWdlVG9JbWFnZUJ1ZmZlcigpCiAgICAgaWYgKGNvbnRl
eHQtPmlzRmFpbGVkKGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwg
bV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5k
ZXJpbmdNb2RlKCkpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZm
ZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9y
ZXN1bHRDb2xvclNwYWNlLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOworICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5y
ZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFj
ZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDY4Y2UzMTNlMWYwZjc0N2VhY2ZmNmRhYTk2MGJm
MDQ4MGVkNmYyZGMuLmE0NzA4OWYwNzk1MmNjZDE3NTNjNzYyMWQ1MjZiNzUxNzY3MDE1YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5jcHAKQEAgLTM1LDcgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRl
Q29udGVudHNGbGFnKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpKTsKKyAgICAvLyBN
YWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sg
YmVjYXVzZSB0aGlzIGNvZGUKKyAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhh
dCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXpl
KCksIFVuYWNjZWxlcmF0ZWQpOwogCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKaW5kZXggNTc1N2U5YTg1MTgzYzA3NjgwYmExOWY0YTZhMzIxZTY1NzZkMWM0Ni4uMjVl
ZDFkNTQxOTdhMGNmYTJhM2FkZjc3MTJiNzQ0NjQxYWY5MjNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpCiAgICAgaWYgKCFtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQpIHsKICAgICAgICAgSW50
U2l6ZSBsb2dpY2FsU2l6ZShtX3NvdXJjZURyYXdpbmdSZWdpb24ud2lkdGgoKSwgbV9zb3VyY2VE
cmF3aW5nUmVnaW9uLmhlaWdodCgpKTsKICAgICAgICAgaWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNv
dXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpCi0gICAgICAgICAgICBz
ZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBmaWx0ZXJTY2Fs
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZW5kZXJpbmdNb2RlKCkpKTsKKyAgICAgICAgICAg
IHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmlu
Z01vZGUoKSwgZmlsdGVyU2NhbGUoKSkpOwogICAgICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNo
ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDE1M2UzNmQxNTE2ZjllZDllYWE5YmU4YWU4ZDU1ZTNhZjJhMjZhYmEuLjdlYTFk
YTQ0YjExZWUwNDczNGQ2YzRjOTM2Y2U0ZTkxNThkY2MxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjg5MSwxNyArNjg5MSwxNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdFJlbmRlcmVyKCkKICAgICB9CiAgICAg
CiAgICAgRmlsdGVySW5mbyYgZmlsdGVySW5mbyA9IEZpbHRlckluZm86OmdldCgqdGhpcyk7Cisg
ICAgRnJhbWUmIGZyYW1lID0gcmVuZGVyZXIoKS5mcmFtZSgpOwogICAgIGlmICghZmlsdGVySW5m
by5yZW5kZXJlcigpKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGZp
bHRlclJlbmRlcmVyLT5zZXRGaWx0ZXJTY2FsZShyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
ID0gcmVuZGVyZXIoKS5mcmFtZSgpLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxl
ZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOwotICAgICAgICBmaWx0ZXJSZW5kZXJl
ci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKKyAgICAgICAgZmlsdGVyUmVuZGVy
ZXItPnNldEZpbHRlclNjYWxlKGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cisg
ICAgICAgIGZpbHRlclJlbmRlcmVyLT5zZXRSZW5kZXJpbmdNb2RlKGZyYW1lLnNldHRpbmdzKCku
YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVk
KTsKICAgICAgICAgZmlsdGVySW5mby5zZXRSZW5kZXJlcihXVEY6Om1vdmUoZmlsdGVyUmVuZGVy
ZXIpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBvcHRpbWl6ZSBhd2F5IGNvZGUgcGF0
aHMgaW4gb3RoZXIgcGxhY2VzIGlmIHdlIGtub3cgdGhhdCB0aGVyZSBhcmUgbm8gc29mdHdhcmUg
ZmlsdGVycy4KICAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkuc2V0SGFzU29mdHdhcmVGaWx0ZXJz
KHRydWUpOwotICAgIH0gZWxzZSBpZiAoZmlsdGVySW5mby5yZW5kZXJlcigpLT5maWx0ZXJTY2Fs
ZSgpICE9IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpIHsK
LSAgICAgICAgZmlsdGVySW5mby5yZW5kZXJlcigpLT5zZXRGaWx0ZXJTY2FsZShyZW5kZXJlcigp
LmZyYW1lKCkucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICB9IGVsc2UgaWYgKGZp
bHRlckluZm8ucmVuZGVyZXIoKS0+ZmlsdGVyU2NhbGUoKSAhPSBmcmFtZS5wYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCkpIHsKKyAgICAgICAgZmlsdGVySW5mby5yZW5kZXJlcigpLT5zZXRGaWx0
ZXJTY2FsZShmcmFtZS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBmaWx0
ZXJJbmZvLnJlbmRlcmVyKCktPmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA2OTIyMjgxOTE4
YzQ4MzFlNzI5OTUzYjYyMDI5MTI4ODI4ZDUxOGZmLi4yZDQ3NTgyMWZkMmZjNzNhOTRlNjc1Mzk0
YWU4YTYzMGVhNTdmMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcApAQCAtMTc5LDcgKzE3OSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgSW50
UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFy
Z2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQo
KSwgLW1hcmdpblJlY3QueSgpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpKTsKKyAgICAv
LyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZC4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJh
dGVkKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAKaW5kZXggNWU0Nzc1YmUwYjZhMDA0YzZmNWM2MjZhYzM0MWEzMmI5MWU1N2U2My4uNWY2M2Y1
NjU2ZDkyOGZjNDM3MjQ2YTdjMzUzYWUwOTYzNzM1NTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApA
QCAtMTQwLDYgKzE0MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAgICAgQWZmaW5lVHJh
bnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRl
VHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogCiAg
ICAgaWYgKHNob3VsZENyZWF0ZUNsaXBwZXJNYXNrSW1hZ2UgJiYgIXJlcGFpbnRSZWN0LmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hv
dWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNo
IHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KICAgICAgICAgY2xp
cHBlck1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJl
cGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZURldmljZVJHQiwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgICAgIGlmICghY2xpcHBlck1hc2tJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGFjZWEyMzBjOWQ5MjVjMzQ2ZTgw
ZDQyOGQ5OTgyYzU4Nzk1Y2Q4ZjguLmRjNWQyNzUyODFmNDAzMzdhZTgwNDMzZDUyZjFiY2I3MGQ4
OWEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNz
Q29udGV4dComIGNvbgogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29y
ZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3Qg
PSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAg
YXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihy
ZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNj
ZWxlcmF0ZWQpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbWFza0ltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWQzN2Q0N2M5
ODQ2YWMwMDUzZGE1MmM1NGRkOWFmNGMzMWQ1Y2YwNy4uOWI3YjlhYzJiMzRiZmMzYTU4MzJiM2Rh
YzFiYTk3NzhkOTQ3MzlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTY5LDYgKzY5LDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAh
cmVwYWludFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBz
dmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ0lfTElORUFSUkdCID8gQ29s
b3JTcGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VEZXZpY2VSR0I7CisgICAgICAgIC8vIEZJWE1F
ICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxs
eSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIGFscGhh
IG1hc2tpbmcsIHRob3VnaC4KICAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJh
bnNmb3JtLCBjb2xvclNwYWNlLCBVbmFjY2VsZXJhdGVkKTsKICAgICAgICAgaWYgKCFtYXNrZXJE
YXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAKaW5kZXggYjRmNGQyM2Y0MTBjZmViYzk4ZWY2Y2NlOTZhOGEwNDM3NGVhODgyZS4uYmQ1ZTEz
ZDljM2JhNzhhNDk1YjVjNWZkMWFkYTAwMmUyYmU2MDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApA
QCAtOTQsNyArOTQsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpi
dWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVucwogICAgICAgICBzdGF0aWNf
Y2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0oKS55U2NhbGUoKSkpOwog
CiAgICAgLy8gQnVpbGQgdGlsZSBpbWFnZS4KLSAgICBhdXRvIHRpbGVJbWFnZSA9IGNyZWF0ZVRp
bGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVzLCBhYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBj
b250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQpOworICAgIGF1dG8gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdlKG1fYXR0cmlidXRlcywg
dGlsZUJvdW5kYXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9y
bSwgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgp
KTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IGZiOWEwM2M1OTVlNjM2MDY5NmFlMWIzZmQ1ZmIyMTRjZjM2NGYwNGEuLjg5YjhlMzhl
ZTg1MTU1YTJiMDg3N2Q3ZDVmZTc0NWM4ZWYxZWMxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjU3LDcgKzI1
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiAgICAgRmxvYXRTaXplIHNjYWxlOwogICAg
IEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShwYWludFJl
Y3Quc2l6ZSgpLCBzY2FsZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjbGFtcGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRl
cmluZ01vZGUsIDEsIGNvbG9yU3BhY2UpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0yNzksNyArMjc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFIKICAgICBpZiAoY2xhbXBlZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1w
ZWRTaXplLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwg
Y29sb3JTcGFjZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDA4MTUz
YzFhOTNmYTM2ZjI1ZTMwNjk2OTYxODc1MzFmYmEwYzU5MDQuLjYzZWIwZWY3NjE2OTcwYmUyMzVi
NmNlYzk4ODUzZDdjYmFkMDBjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtMTczLDcgKzE3Myw4IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOworICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0
aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0
ZWQpOwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggY2ZjY2QzY2Q2NDkyNjUyMTk3NmM2
YmYxODU2YjZlOGZiNDUzZGQzMy4uOTllMzQ4YmJkYjE1NmFhMzY3MTZiODM0ZjZkNDllZjY5NDgx
NTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTQ3MSw3ICs0NzEsOCBAQCBSZXRhaW5QdHI8TlNJ
bWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNl
UGlja2VySXRlbQogICAgIGlmICghY2xpZW50RmxvYXRSZWN0Rm9yTm9kZSgqbm9kZSwgcmVjdCkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCkpOworICAgIC8vIFRoaXMg
aXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBhbiB1bmFj
Y2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgorICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShy
ZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA0MTc4OTQz
YmFmNDFiMTAwYThhZjE1N2Q0OTczMzMwM2MxODNkNmRjLi4wYTQ1NzExYzYwNGRkOTE5OTU5NDAw
MWZkMGRjN2QyOTExNzQzZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVk
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCkBA
IC0zNyw3ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8VGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZT4gVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBm
bGFncywgSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKSkpOworICAgIC8vIE1ha2luZyBhbiB1bmNv
bmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVyZSBpcyBPSyBiZWNhdXNlIHRoaXMg
Y29kZQorICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRmb3JtcyB0aGF0IHJlc3BlY3QgdGhl
IGFjY2VsZXJhdGVkIGJpdC4KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRTYWZlQ29v
cmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFVu
YWNjZWxlcmF0ZWQpKSk7CiB9CiAKIFJlZjxUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlPiBU
aHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>