<?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>159212</bug_id>
          
          <creation_ts>2016-06-28 06:03:01 -0700</creation_ts>
          <short_desc>[Coordinated Graphics] Modernize and cleanup CompositingCoordinator</short_desc>
          <delta_ts>2016-07-04 23:16:59 -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>WebKit2</component>
          <version>WebKit Local 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>
          <dependson>159209</dependson>
          <blocked>159259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>yoon</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1206011</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-28 06:03:01 -0700</bug_when>
    <thetext>And some of its related classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206013</commentid>
    <comment_count>1</comment_count>
      <attachid>282246</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-28 06:09:45 -0700</bug_when>
    <thetext>Created attachment 282246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206666</commentid>
    <comment_count>2</comment_count>
      <attachid>282417</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-30 00:37:32 -0700</bug_when>
    <thetext>Created attachment 282417
Rebased patch

It should apply to current trunk now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207563</commentid>
    <comment_count>3</comment_count>
      <attachid>282417</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-07-03 22:57:49 -0700</bug_when>
    <thetext>Comment on attachment 282417
Rebased patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:217
&gt; +void CompositingCoordinator::updateImageBacking(CoordinatedImageBackingID imageID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)

I don&apos;t think this should be receiving a reference to RefPtr.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:286
&gt; +void CompositingCoordinator::createUpdateAtlas(uint32_t atlasID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)

I don&apos;t think this should be receiving a reference to RefPtr.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:357
&gt; +    if (auto layer = m_registeredLayers.get(layerID))

auto*, since m_registeredLayers is mapping IDs to pointers to CoordinatedGraphicsLayer objects.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:88
&gt; -    std::unique_ptr&lt;CompositingCoordinator&gt; m_coordinator;
&gt; +    CompositingCoordinator m_coordinator;

You can drop WTF_MAKE_FAST_ALLOCATED from CompositingCoordinator class now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207573</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-03 23:22:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 282417 [details]
&gt; Rebased patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282417&amp;action=review

Thanks for the review.
 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:217
&gt; &gt; +void CompositingCoordinator::updateImageBacking(CoordinatedImageBackingID imageID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt; 
&gt; I don&apos;t think this should be receiving a reference to RefPtr.

Could you elaborate? what&apos;s wrong with the reference and what should I do instead? just copying the RefPtr? I don&apos;t understand whey PassRefPtr is used there TBH.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:286
&gt; &gt; +void CompositingCoordinator::createUpdateAtlas(uint32_t atlasID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt; 
&gt; I don&apos;t think this should be receiving a reference to RefPtr.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:357
&gt; &gt; +    if (auto layer = m_registeredLayers.get(layerID))
&gt; 
&gt; auto*, since m_registeredLayers is mapping IDs to pointers to
&gt; CoordinatedGraphicsLayer objects.

Isn&apos;t that automatic? doesn&apos;t auto deduce it&apos;s a pointer?

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:88
&gt; &gt; -    std::unique_ptr&lt;CompositingCoordinator&gt; m_coordinator;
&gt; &gt; +    CompositingCoordinator m_coordinator;
&gt; 
&gt; You can drop WTF_MAKE_FAST_ALLOCATED from CompositingCoordinator class now.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207618</commentid>
    <comment_count>5</comment_count>
      <attachid>282417</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-07-04 01:24:27 -0700</bug_when>
    <thetext>Comment on attachment 282417
Rebased patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:217
&gt;&gt;&gt; +void CompositingCoordinator::updateImageBacking(CoordinatedImageBackingID imageID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt;&gt; 
&gt;&gt; I don&apos;t think this should be receiving a reference to RefPtr.
&gt; 
&gt; Could you elaborate? what&apos;s wrong with the reference and what should I do instead? just copying the RefPtr? I don&apos;t understand whey PassRefPtr is used there TBH.

Passing a reference to a non-const RefPtr object here, you&apos;d expect the method to modify it. That&apos;s not what&apos;s happening here, and if it were, you&apos;d expect the method to return a new RefPtr.

A rvalue reference to the RefPtr would make sense, so you&apos;d copyRef() it into the method call, and move it in this method to the std::make_pair() call.

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:286
&gt;&gt;&gt; +void CompositingCoordinator::createUpdateAtlas(uint32_t atlasID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt;&gt; 
&gt;&gt; I don&apos;t think this should be receiving a reference to RefPtr.
&gt; 
&gt; Isn&apos;t that automatic? doesn&apos;t auto deduce it&apos;s a pointer?

It does, but it doesn&apos;t tell me that when I look at it. auto* provides more info, shows that it&apos;s not a RefPtr&lt;&gt; or an iterator or anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207619</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-04 01:29:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 282417 [details]
&gt; Rebased patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282417&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:217
&gt; &gt;&gt;&gt; +void CompositingCoordinator::updateImageBacking(CoordinatedImageBackingID imageID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t think this should be receiving a reference to RefPtr.
&gt; &gt; 
&gt; &gt; Could you elaborate? what&apos;s wrong with the reference and what should I do instead? just copying the RefPtr? I don&apos;t understand whey PassRefPtr is used there TBH.
&gt; 
&gt; Passing a reference to a non-const RefPtr object here, you&apos;d expect the
&gt; method to modify it. That&apos;s not what&apos;s happening here, and if it were, you&apos;d
&gt; expect the method to return a new RefPtr.

Ah, I see, I didn&apos;t notice it was non-const.

&gt; A rvalue reference to the RefPtr would make sense, so you&apos;d copyRef() it
&gt; into the method call, and move it in this method to the std::make_pair()
&gt; call.
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:286
&gt; &gt;&gt;&gt; +void CompositingCoordinator::createUpdateAtlas(uint32_t atlasID, RefPtr&lt;CoordinatedSurface&gt;&amp; coordinatedSurface)
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t think this should be receiving a reference to RefPtr.
&gt; &gt; 
&gt; &gt; Isn&apos;t that automatic? doesn&apos;t auto deduce it&apos;s a pointer?
&gt; 
&gt; It does, but it doesn&apos;t tell me that when I look at it. auto* provides more
&gt; info, shows that it&apos;s not a RefPtr&lt;&gt; or an iterator or anything.

Ah, it&apos;s just for readability, I agree indeed. I&apos;ll submit an updated patch, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207749</commentid>
    <comment_count>7</comment_count>
      <attachid>282748</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-04 23:02:43 -0700</bug_when>
    <thetext>Created attachment 282748
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207753</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-04 23:16:59 -0700</bug_when>
    <thetext>Committed r202812: &lt;http://trac.webkit.org/changeset/202812&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282246</attachid>
            <date>2016-06-28 06:09:45 -0700</date>
            <delta_ts>2016-06-30 00:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-compositing-coord-cleanup.diff</filename>
            <type>text/plain</type>
            <size>41491</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YWJjN2MwLi4xNmI4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUg
QEAKIDIwMTYtMDYtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW9kZXJuaXplIGFuZCBjbGVhbnVw
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2hlbiBw
b3NzaWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRvU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisKKzIw
MTYtMDYtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAg
ICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW92ZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
IGZyb20gcGxhdGZvcm0gdG8gV2ViS2l0MiBsYXllcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjA5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZmEzN2M2Ny4uZTBi
NmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTk1MCw3ICs5NTAsNyBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCk7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwYWlu
dFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50
JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQpCitib29sIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
dWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNs
aWVudCYgY2xpZW50KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKICAgICBBU1NFUlQo
bV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCAyMzVhYWQ4
Li5kZjViMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC00OSw5ICs0OSw5IEBAIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRmx1c2hpbmdMYXll
ckNoYW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRzUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlKikgPSAwOworICAg
IHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJ
Zk5lZWRlZChJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFj
ZShjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0
bGFzSUQsIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1
cmZhY2U6OkNsaWVudCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShD
b29yZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJikgPSAwOwog
fTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlKHVpbnQz
Ml90IHRpbGVJRCwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJf
dCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpIG92ZXJyaWRlOwotICAg
IGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiAvKiBhdGxhc0lE
ICovLCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFz
SUQgKi8sIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCmluZGV4IGU4ZmNhYmIuLmU5MWI5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdl
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAgICAgSW50UmVjdCBy
ZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUobV9pbWFnZS0+c2l6ZSgpKSk7CiAKICAgICBJ
bWFnZUJhY2tpbmdTdXJmYWNlQ2xpZW50IHN1cmZhY2VDbGllbnQoKm1faW1hZ2UsIHJlY3QpOwot
ICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VDbGllbnQpOworICAg
IG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgc3VyZmFjZUNsaWVudCk7CiAKICAgICBt
X25hdGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
aAppbmRleCA3NDdiMjgwLi41MmI3NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFn
ZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJ
RCkgPSAwOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmgKaW5kZXggZjlkMzI2Mi4uYWM5YWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIFN1cHBvcnRzQWxwaGE7
IH0KICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiwgQ2xpZW50KikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiwgQ2xpZW50Jikg
PSAwOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9U
ZXh0dXJlKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25z
dCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAKaW5k
ZXggYjY2ZTY5Ny4uZjE1NWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBib29sIFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogCiAgICAgU3VyZmFjZVVwZGF0
ZUluZm8gdXBkYXRlSW5mbzsKIAotICAgIGlmICghbV90aWxlZEJhY2tpbmdTdG9yZS5jbGllbnQo
KS0+cGFpbnRUb1N1cmZhY2UobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQs
IHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCwgdGhpcykpCisgICAgaWYgKCFtX3RpbGVkQmFja2lu
Z1N0b3JlLmNsaWVudCgpLT5wYWludFRvU3VyZmFjZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0
ZUluZm8uYXRsYXNJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0LCAqdGhpcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9IG1fZGlydHlSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQu
aAppbmRleCBjNjQ1YjIyLi42MTkzNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBmbG9hdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3Vy
ZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJm
YWNlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkNsaWVudCYpID0gMDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4
Mzk2ZWEuLjYyYmJmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxNi0wNi0yOCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0Nv
b3JkaW5hdGVkIEdyYXBoaWNzXSBNb2Rlcm5pemUgYW5kIGNsZWFudXAgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5MjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hhbmdlcyBkb25lOgorCisgICAgICAgICAgLSBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgLSBBZGQgbWlzc2luZyBmaW5hbC9vdmVy
cmlkZSBrZXl3b3Jkcy4KKyAgICAgICAgICAtIFJlZHVjZSB0aGUgdXNlIG9mIFBhc3NSZWZQdHIK
KyAgICAgICAgICAtIE1vdmUgbWVtYmVyIGluaXRpYWxpemF0aW9ucyB0byB0aGUgZGVjbGFyYXRp
b24uCisgICAgICAgICAgLSBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICAgLSBV
c2UgSGFzaE1hcDo6ZW5zdXJlKCkgaW5zdGVhZCBvZiBjb21wbGljYXRlZCBjb2RlIHdpdGggaXRl
cmF0b3JzLgorICAgICAgICAgIC0gQXZvaWQgaGVhcCBhbGxvY2F0aW9uIHdoZW4gcG9zc2libGUu
CisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50
VG9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNl
KToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHZW5lcmFsQXJlYUFsbG9jYXRvcjo6ZXhwYW5kKToKKyAgICAgICAgKFdlYktpdDo6
R2VuZXJhbEFyZWFBbGxvY2F0b3I6OnNwbGl0Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVy
YWxBcmVhQWxsb2NhdG9yOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJhbEFyZWFB
bGxvY2F0b3I6OkdlbmVyYWxBcmVhQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6
OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVx
dWlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwYWludENv
bnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRl
VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpj
b21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpwYWludFRvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVy
TmV4dEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpw
dXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29t
bWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVw
ZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
YnVpbGRMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpwYWlu
dE9uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXNTdXJmYWNl
Q2xpZW50OjpVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmg6CisKKzIw
MTYtMDYtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAg
ICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW92ZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
IGZyb20gcGxhdGZvcm0gdG8gV2ViS2l0MiBsYXllcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjA5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuY3BwCmluZGV4IGNkODRmNzUuLmUzMjg5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMTgxLDEyICsxODEsMTAgQEAgYm9vbCBXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0
IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQpCit2b2lk
IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYgcmVj
dCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoY2xp
ZW50KTsKLQogICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsK
LSAgICBjbGllbnQtPnBhaW50VG9TdXJmYWNlQ29udGV4dCgqY29udGV4dCk7CisgICAgY2xpZW50
LnBhaW50VG9TdXJmYWNlQ29udGV4dCgqY29udGV4dCk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDkzOGY2YTUuLjZk
NzA2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC03MSw3ICs3MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkNvb3JkaW5hdGVkU3VyZmFjZSgpOwogCi0g
ICAgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9T
dXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U6OkNsaWVudCYpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZv
aWQgY29weVRvVGV4dHVyZShSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9m
ZnNldCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKaW5kZXggYzkx
MjQ3My4uNTRiN2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtNTIs
MTIgKzUyLDEwIEBAIFRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6On5UaHJlYWRTYWZlQ29v
cmRpbmF0ZWRTdXJmYWNlKCkKIHsKIH0KIAotdm9pZCBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJm
YWNlOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlZFN1cmZh
Y2U6OkNsaWVudCogY2xpZW50KQordm9pZCBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpw
YWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNs
aWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVChjbGllbnQpOwotCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gYmVnaW5QYWludChyZWN0KTsKLSAgICBjbGllbnQtPnBhaW50VG9TdXJm
YWNlQ29udGV4dChjb250ZXh0KTsKKyAgICBjbGllbnQucGFpbnRUb1N1cmZhY2VDb250ZXh0KGNv
bnRleHQpOwogICAgIGVuZFBhaW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5o
CmluZGV4IDU5YjNkZTAuLmY0NjBlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRp
bmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuaApA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgbmV3IFRocmVhZFNhZmVD
b29yZGluYXRlZFN1cmZhY2UgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBoaWNzU3VyZmFjZSBv
ciBhIEltYWdlQnVmZmVyIGFzIGJhY2tpbmcuCiAgICAgc3RhdGljIFJlZjxUaHJlYWRTYWZlQ29v
cmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCi0gICAgdm9pZCBwYWludFRvU3VyZmFjZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGll
bnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29weVRvVGV4dHVyZShSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNv
dXJjZU9mZnNldCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0FyZWFBbGxvY2F0b3IuY3BwCmluZGV4IGU4ODBiNDYuLmE5ZWNlMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Fy
ZWFBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuY3BwCkBAIC03Niw5ICs3Niw2IEBAIEdl
bmVyYWxBcmVhQWxsb2NhdG9yOjpHZW5lcmFsQXJlYUFsbG9jYXRvcihjb25zdCBJbnRTaXplJiBz
aXplKQogICAgIG1fcm9vdCA9IG5ldyBOb2RlKCk7CiAgICAgbV9yb290LT5yZWN0ID0gSW50UmVj
dCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKICAgICBtX3Jvb3QtPmxh
cmdlc3RGcmVlID0gbV9zaXplOwotICAgIG1fcm9vdC0+cGFyZW50ID0gMDsKLSAgICBtX3Jvb3Qt
PmxlZnQgPSAwOwotICAgIG1fcm9vdC0+cmlnaHQgPSAwOwogICAgIG1fbm9kZUNvdW50ID0gMTsK
ICAgICBzZXRNaW5pbXVtQWxsb2NhdGlvbihJbnRTaXplKDgsIDgpKTsKIH0KQEAgLTEyOCwxMyAr
MTI1LDEzIEBAIHZvaWQgR2VuZXJhbEFyZWFBbGxvY2F0b3I6OmV4cGFuZChjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgICAgICBOb2RlKiByaWdodCA9IG5ldyBOb2RlKCk7CiAgICAgICAgIG1fbm9k
ZUNvdW50ICs9IDI7CiAgICAgICAgIG1fcm9vdC0+cGFyZW50ID0gcGFyZW50OwotICAgICAgICBw
YXJlbnQtPnBhcmVudCA9IDA7CisgICAgICAgIHBhcmVudC0+cGFyZW50ID0gbnVsbHB0cjsKICAg
ICAgICAgcGFyZW50LT5sZWZ0ID0gbV9yb290OwogICAgICAgICBwYXJlbnQtPnJpZ2h0ID0gcmln
aHQ7CiAgICAgICAgIHBhcmVudC0+bGFyZ2VzdEZyZWUgPSBtX3Jvb3QtPnJlY3Quc2l6ZSgpOwog
ICAgICAgICByaWdodC0+cGFyZW50ID0gcGFyZW50OwotICAgICAgICByaWdodC0+bGVmdCA9IDA7
Ci0gICAgICAgIHJpZ2h0LT5yaWdodCA9IDA7CisgICAgICAgIHJpZ2h0LT5sZWZ0ID0gbnVsbHB0
cjsKKyAgICAgICAgcmlnaHQtPnJpZ2h0ID0gbnVsbHB0cjsKICAgICAgICAgcmlnaHQtPmxhcmdl
c3RGcmVlID0gbV9yb290LT5yZWN0LnNpemUoKTsKICAgICAgICAgaWYgKHNwbGl0ID09IFNwbGl0
T25YKSB7CiAgICAgICAgICAgICBwYXJlbnQtPnJlY3QgPSBJbnRSZWN0KG1fcm9vdC0+cmVjdC54
KCksIG1fcm9vdC0+cmVjdC55KCksCkBAIC0yNDAsMjAgKzIzNywxNSBAQCBJbnRQb2ludCBHZW5l
cmFsQXJlYUFsbG9jYXRvcjo6YWxsb2NhdGVGcm9tTm9kZShjb25zdCBJbnRTaXplJiBzaXplLCBO
b2RlKiBub2RlKQogICAgIHJldHVybiBJbnRQb2ludCgtMSwgLTEpOwogfQogCi1HZW5lcmFsQXJl
YUFsbG9jYXRvcjo6Tm9kZSogR2VuZXJhbEFyZWFBbGxvY2F0b3I6OnNwbGl0Tm9kZQotICAgIChO
b2RlKiBub2RlLCBTcGxpdCBzcGxpdCkKK0dlbmVyYWxBcmVhQWxsb2NhdG9yOjpOb2RlKiBHZW5l
cmFsQXJlYUFsbG9jYXRvcjo6c3BsaXROb2RlKE5vZGUqIG5vZGUsIFNwbGl0IHNwbGl0KQogewog
ICAgIE5vZGUqIGxlZnQgPSBuZXcgTm9kZSgpOwotICAgIE5vZGUqIHJpZ2h0ID0gbmV3IE5vZGUo
KTsKLSAgICBtX25vZGVDb3VudCArPSAyOwogICAgIGxlZnQtPnBhcmVudCA9IG5vZGU7Ci0gICAg
bGVmdC0+bGVmdCA9IDA7Ci0gICAgbGVmdC0+cmlnaHQgPSAwOworICAgIE5vZGUqIHJpZ2h0ID0g
bmV3IE5vZGUoKTsKICAgICByaWdodC0+cGFyZW50ID0gbm9kZTsKLSAgICByaWdodC0+bGVmdCA9
IDA7Ci0gICAgcmlnaHQtPnJpZ2h0ID0gMDsKICAgICBub2RlLT5sZWZ0ID0gbGVmdDsKICAgICBu
b2RlLT5yaWdodCA9IHJpZ2h0OworICAgIG1fbm9kZUNvdW50ICs9IDI7CiAKICAgICBpZiAoc3Bs
aXQgPT0gU3BsaXRPblgpIHsKICAgICAgICAgbGVmdC0+cmVjdCA9IEludFJlY3Qobm9kZS0+cmVj
dC54KCksIG5vZGUtPnJlY3QueSgpLApAQCAtMzE3LDggKzMwOSw4IEBAIHZvaWQgR2VuZXJhbEFy
ZWFBbGxvY2F0b3I6OnJlbGVhc2UoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgZnJlZU5v
ZGUobm9kZS0+bGVmdCk7CiAgICAgICAgIGZyZWVOb2RlKG5vZGUtPnJpZ2h0KTsKICAgICAgICAg
bV9ub2RlQ291bnQgLT0gMjsKLSAgICAgICAgbm9kZS0+bGVmdCA9IDA7Ci0gICAgICAgIG5vZGUt
PnJpZ2h0ID0gMDsKKyAgICAgICAgbm9kZS0+bGVmdCA9IG51bGxwdHI7CisgICAgICAgIG5vZGUt
PnJpZ2h0ID0gbnVsbHB0cjsKICAgICAgICAgbm9kZS0+bGFyZ2VzdEZyZWUgPSBub2RlLT5yZWN0
LnNpemUoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3Iu
aAppbmRleCBiOGZmNmI5Li4yMGNhZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJl
YUFsbG9jYXRvci5oCkBAIC03NiwyNiArNzYsMjggQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6
OkludFNpemUgcm91bmRBbGxvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdDsK
IH07CiAKLWNsYXNzIEdlbmVyYWxBcmVhQWxsb2NhdG9yIDogcHVibGljIEFyZWFBbGxvY2F0b3Ig
eworY2xhc3MgR2VuZXJhbEFyZWFBbGxvY2F0b3IgZmluYWwgOiBwdWJsaWMgQXJlYUFsbG9jYXRv
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
R2VuZXJhbEFyZWFBbGxvY2F0b3IoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZpcnR1
YWwgfkdlbmVyYWxBcmVhQWxsb2NhdG9yKCk7CiAKLSAgICB2b2lkIGV4cGFuZChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJik7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBhbGxvY2F0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJik7Ci0gICAgdm9pZCByZWxlYXNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKLSAgICBpbnQgb3ZlcmhlYWQoKSBjb25zdDsKKyAgICB2b2lkIGV4cGFuZChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50UmVjdCBhbGxvY2F0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxlYXNlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICBpbnQgb3ZlcmhlYWQoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFNwbGl0IHsgU3BsaXRPblgsIFNwbGl0T25Z
IH07CiAKICAgICBzdHJ1Y3QgTm9kZSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0OwogICAgICAgICBX
ZWJDb3JlOjpJbnRTaXplIGxhcmdlc3RGcmVlOwotICAgICAgICBOb2RlKiBwYXJlbnQ7Ci0gICAg
ICAgIE5vZGUqIGxlZnQ7Ci0gICAgICAgIE5vZGUqIHJpZ2h0OworICAgICAgICBOb2RlKiBwYXJl
bnQgeyBudWxscHRyIH07CisgICAgICAgIE5vZGUqIGxlZnQgeyBudWxscHRyIH07CisgICAgICAg
IE5vZGUqIHJpZ2h0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKICAgICBOb2RlKiBtX3Jvb3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGVkYTA5ZmIuLjhmMDYwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0zNiwyOCArMzYsMTYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q29tcG9zaXRpbmdD
b29yZGluYXRvcihQYWdlKiBwYWdlLCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGllbnQqIGNs
aWVudCkKK0NvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IoUGFn
ZSogcGFnZSwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50JiBjbGllbnQpCiAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcm9vdENvbXBvc2l0
aW5nTGF5ZXIobnVsbHB0cikKLSAgICAsIG1fb3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXIobnVsbHB0
cikKLSAgICAsIG1faXNEZXN0cnVjdGluZyhmYWxzZSkKLSAgICAsIG1faXNQdXJnaW5nKGZhbHNl
KQotICAgICwgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKGZhbHNlKQotICAgICwgbV9zaG91bGRT
eW5jRnJhbWUoZmFsc2UpCi0gICAgLCBtX2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXll
cihmYWxzZSkKICAgICAsIG1fcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyKCp0aGlzLCAmQ29t
cG9zaXRpbmdDb29yZGluYXRvcjo6cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQpCi0j
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgICwgbV9sYXN0QW5pbWF0aW9u
U2VydmljZVRpbWUoMCkKLSNlbmRpZgogewogfQogCkBAIC0xMTEsNyArOTksNyBAQCBib29sIENv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICBi
b29sIHZpZXdwb3J0SXNTdGFibGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlld3Bv
cnRJc1N0YWJsZSgpOwogICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KHZpZXdwb3J0SXNTdGFibGUpOwotICAgIG1fY2xpZW50LT5kaWRGbHVzaFJv
b3RMYXllcihtX3Zpc2libGVDb250ZW50c1JlY3QpOworICAgIG1fY2xpZW50LmRpZEZsdXNoUm9v
dExheWVyKG1fdmlzaWJsZUNvbnRlbnRzUmVjdCk7CiAKICAgICBpZiAobV9vdmVybGF5Q29tcG9z
aXRpbmdMYXllcikKICAgICAgICAgbV9vdmVybGF5Q29tcG9zaXRpbmdMYXllci0+Zmx1c2hDb21w
b3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fcm9vdExheWVyLT5zaXplKCkp
LCB2aWV3cG9ydElzU3RhYmxlKTsKQEAgLTEzMyw3ICsxMjEsNyBAQCBib29sIENvbXBvc2l0aW5n
Q29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgICAgIH0KICAgICAg
ICAgbV9zdGF0ZS5zY3JvbGxQb3NpdGlvbiA9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdC5sb2NhdGlv
bigpOwogCi0gICAgICAgIG1fY2xpZW50LT5jb21taXRTY2VuZVN0YXRlKG1fc3RhdGUpOworICAg
ICAgICBtX2NsaWVudC5jb21taXRTY2VuZVN0YXRlKG1fc3RhdGUpOwogCiAgICAgICAgIGNsZWFy
UGVuZGluZ1N0YXRlQ2hhbmdlcygpOwogICAgICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNl
OwpAQCAtMjEyLDE4ICsyMDAsMTMgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5j
TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIENvb3JkaW5hdGVkR3IKICAgICBtX3N0
YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZCwgc3RhdGUpKTsKIH0K
IAotUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29tcG9zaXRpbmdDb29yZGlu
YXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UqIGltYWdlKQorUmVmPENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJh
Y2tpbmdJZk5lZWRlZChJbWFnZSogaW1hZ2UpCiB7CiAgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQoaW1hZ2UpOwotICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3IgaXQgPSBt
X2ltYWdlQmFja2luZ3MuZmluZChpbWFnZUlEKTsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc+IGltYWdlQmFja2luZzsKLSAgICBpZiAoaXQgPT0gbV9pbWFnZUJhY2tpbmdzLmVu
ZCgpKSB7Ci0gICAgICAgIGltYWdlQmFja2luZyA9IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpj
cmVhdGUodGhpcywgaW1hZ2UpOwotICAgICAgICBtX2ltYWdlQmFja2luZ3MuYWRkKGltYWdlSUQs
IGltYWdlQmFja2luZyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGltYWdlQmFja2luZyA9IGl0LT52
YWx1ZTsKLQotICAgIHJldHVybiBpbWFnZUJhY2tpbmc7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0aGlzLCBpbWFnZV0geworICAgICAgICBy
ZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAg
fSk7CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIENv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEIGltYWdlSUQpCkBAIC0yMzEsNyArMjE0LDcgQEAgdm9pZCBDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBp
bWFnZUkKICAgICBtX3N0YXRlLmltYWdlc1RvQ3JlYXRlLmFwcGVuZChpbWFnZUlEKTsKIH0KIAot
dm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
Y29vcmRpbmF0ZWRTdXJmYWNlKQordm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiYgY29vcmRpbmF0ZWRTdXJmYWNlKQogewogICAgIG1fc2hvdWxkU3lu
Y0ZyYW1lID0gdHJ1ZTsKICAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihpbWFnZUlELCBjb29yZGluYXRlZFN1cmZhY2UpKTsKQEAgLTI3MSwxMiArMjU0LDEy
IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChj
b25zdCBHcmFwaGljc0xheWVyKiwgY29uc3QKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKICAgICBpZiAoIW1f
aXNEZXN0cnVjdGluZyAmJiAhaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKQotICAgICAgICBtX2Ns
aWVudC0+bm90aWZ5Rmx1c2hSZXF1aXJlZCgpOworICAgICAgICBtX2NsaWVudC5ub3RpZnlGbHVz
aFJlcXVpcmVkKCk7CiB9CiAKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cGFpbnRDb250
ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0
UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgbV9jbGllbnQtPnBhaW50TGF5ZXJDb250ZW50cyhncmFw
aGljc0xheWVyLCBncmFwaGljc0NvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsK
KyAgICBtX2NsaWVudC5wYWludExheWVyQ29udGVudHMoZ3JhcGhpY3NMYXllciwgZ3JhcGhpY3ND
b250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KGNsaXBSZWN0KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxHcmFwaGljc0xheWVyPiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xh
eWVyKEdyYXBoaWNzTGF5ZXI6OlR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBj
bGllbnQpCkBAIC0zMDAsNyArMjgzLDcgQEAgZmxvYXQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5wYWdlU2NhbGVGYWN0
b3IoKTsKIH0KIAotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVBdGxh
cyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRp
bmF0ZWRTdXJmYWNlKQordm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVB
dGxhcyh1aW50MzJfdCBhdGxhc0lELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYgY29vcmRp
bmF0ZWRTdXJmYWNlKQogewogICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihhdGxhc0lELCBjb29yZGluYXRlZFN1cmZhY2UpKTsKIH0KQEAgLTM3
MSwxMSArMzU0LDggQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpkZXRhY2hMYXllcihD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRp
bmF0b3I6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBvZmZzZXQpCiB7Ci0gICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuZmluZChsYXllcklEKTsKLSAgICBpZiAoaSA9PSBtX3JlZ2lzdGVyZWRMYXll
cnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGktPnZhbHVlLT5jb21taXRTY3JvbGxP
ZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAoYXV0byBsYXllciA9IG1fcmVnaXN0ZXJlZExheWVycy5n
ZXQobGF5ZXJJRCkpCisgICAgICAgIGxheWVyLT5jb21taXRTY3JvbGxPZmZzZXQob2Zmc2V0KTsK
IH0KIAogdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpyZW5kZXJOZXh0RnJhbWUoKQpAQCAt
Mzk1LDcgKzM3NSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cHVyZ2VCYWNraW5n
U3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsKIH0KIAotYm9vbCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQm
IG9mZnNldCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCkKK2Jvb2wgQ29tcG9z
aXRpbmdDb29yZGluYXRvcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50
JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JiBjbGllbnQpCiB7CiAgICAgZm9y
IChhdXRvJiB1cGRhdGVBdGxhcyA6IG1fdXBkYXRlQXRsYXNlcykgewogICAgICAgICBVcGRhdGVB
dGxhcyogYXRsYXMgPSB1cGRhdGVBdGxhcy5nZXQoKTsKQEAgLTQwNyw3ICszODcsNyBAQCBib29s
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmIHNp
emUsIENvb3JkaW5hdGVkU3VyZgogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBpbnQgU2NyYXRj
aEJ1ZmZlckRpbWVuc2lvbiA9IDEwMjQ7IC8vIFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3by4KLSAg
ICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlQXRsYXM+KHRo
aXMsIFNjcmF0Y2hCdWZmZXJEaW1lbnNpb24sIGZsYWdzKSk7CisgICAgbV91cGRhdGVBdGxhc2Vz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZUF0bGFzPigqdGhpcywgU2NyYXRjaEJ1ZmZl
ckRpbWVuc2lvbiwgZmxhZ3MpKTsKICAgICBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXMo
KTsKICAgICByZXR1cm4gbV91cGRhdGVBdGxhc2VzLmxhc3QoKS0+cGFpbnRPbkF2YWlsYWJsZUJ1
ZmZlcihzaXplLCBhdGxhc0lELCBvZmZzZXQsIGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggOWRiZTcxNC4u
N2M5NmVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQKK2NsYXNzIENvbXBvc2l0aW5nQ29v
cmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudAogICAg
ICwgcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudAogICAgICwg
cHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDbGllbnQKICAgICAsIHB1
YmxpYyBVcGRhdGVBdGxhczo6Q2xpZW50CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgY2xpcFJlY3QpID0gMDsKICAgICB9OwogCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRvcihX
ZWJDb3JlOjpQYWdlKiwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50Kik7CisgICAgQ29t
cG9zaXRpbmdDb29yZGluYXRvcihXZWJDb3JlOjpQYWdlKiwgQ29tcG9zaXRpbmdDb29yZGluYXRv
cjo6Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+Q29tcG9zaXRpbmdDb29yZGluYXRvcigpOwogCiAg
ICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7
CkBAIC0xMDAsMjAgKzEwMCwyMCBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6OkNsaWVudAogICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VC
YWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFySW1hZ2VC
YWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCkgb3ZlcnJpZGU7CiAKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJD
bGllbnQKICAgICBib29sIGlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7IH0KICAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKFdlYkNvcmU6OkltYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFn
ZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWlu
dDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKKyAgICBib29sIHBhaW50VG9TdXJmYWNl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzLCB1aW50MzJfdCYgLyogYXRsYXNJRCAqLywgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xh
eWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gVXBkYXRlQXRsYXM6OkNs
aWVudAotICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNy
ZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFJlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKSBvdmVycmlkZTsKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJGYWN0b3J5CkBA
IC0xMzAsMTEgKzEzMCwxMSBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25z
dDsKIAogICAgIFdlYkNvcmU6OlBhZ2UqIG1fcGFnZTsKLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpDbGllbnQqIG1fY2xpZW50OworICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVu
dCYgbV9jbGllbnQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXll
cj4gbV9yb290TGF5ZXI7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9yb290Q29tcG9z
aXRpbmdMYXllcjsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX292ZXJsYXlDb21wb3Np
dGluZ0xheWVyOworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fcm9vdENvbXBvc2l0aW5n
TGF5ZXIgeyBudWxscHRyIH07CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9vdmVybGF5
Q29tcG9zaXRpbmdMYXllciB7IG51bGxwdHIgfTsKIAogICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSBtX3N0YXRlOwogCkBAIC0xNDUsMTggKzE0NSwxNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlQXRsYXM+PiBtX3VwZGF0ZUF0bGFzZXM7
CiAKICAgICAvLyBXZSBkb24ndCBzZW5kIHRoZSBtZXNzYWdlcyByZWxhdGVkIHRvIHJlbGVhc2lu
ZyByZXNvdXJjZXMgdG8gcmVuZGVyZXIgZHVyaW5nIHB1cmdpbmcsIGJlY2F1c2UgcmVuZGVyZXIg
YWxyZWFkeSBoYWQgcmVtb3ZlZCBhbGwgcmVzb3VyY2VzLgotICAgIGJvb2wgbV9pc0Rlc3RydWN0
aW5nOwotICAgIGJvb2wgbV9pc1B1cmdpbmc7Ci0gICAgYm9vbCBtX2lzRmx1c2hpbmdMYXllckNo
YW5nZXM7CisgICAgYm9vbCBtX2lzRGVzdHJ1Y3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c1B1cmdpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkU3luY0ZyYW1lIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVyIHsgZmFsc2UgfTsKIAogICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7Ci0KLSAgICBib29sIG1fc2hv
dWxkU3luY0ZyYW1lOwotICAgIGJvb2wgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5
ZXI7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9yZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXI7CiAK
ICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgZG91YmxlIG1fbGFzdEFu
aW1hdGlvblNlcnZpY2VUaW1lOworICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TZXJ2aWNlVGlt
ZSB7IDAgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZGEyYWU4My4uYjA4MWQyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKIAogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IExheWVy
VHJlZUhvc3Qod2ViUGFnZSkKLSAgICAsIG1fY29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yPih3ZWJQYWdlLmNvcmVQYWdlKCksIHRoaXMpKQorICAgICwg
bV9jb29yZGluYXRvcih3ZWJQYWdlLmNvcmVQYWdlKCksICp0aGlzKQogICAgICwgbV9sYXllckZs
dXNoVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpsYXllckZsdXNoVGltZXJGaXJlZCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVSb290
TGF5ZXIobV93ZWJQYWdlLnNpemUoKSk7CisgICAgbV9jb29yZGluYXRvci5jcmVhdGVSb290TGF5
ZXIobV93ZWJQYWdlLnNpemUoKSk7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJ
UFJPQ0VTUykKLSAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gdG9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIobV9jb29yZGluYXRvci0+cm9vdExheWVyKCkpLT5pZCgpOworICAgIG1f
bGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciht
X2Nvb3JkaW5hdG9yLnJvb3RMYXllcigpKS0+aWQoKTsKICNlbmRpZgogCiAgICAgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpzZXRGYWN0b3J5KGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk7CkBAIC05MCwx
OSArOTAsMTkgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNhbmNlbFBlbmRpbmdM
YXllckZsdXNoKCkKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaWV3T3Zlcmxh
eVJvb3RMYXllcihHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJvb3RMYXllcikKIHsKICAgICBM
YXllclRyZWVIb3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3ZlcmxheVJvb3RMYXll
cik7Ci0gICAgbV9jb29yZGluYXRvci0+c2V0Vmlld092ZXJsYXlSb290TGF5ZXIodmlld092ZXJs
YXlSb290TGF5ZXIpOworICAgIG1fY29vcmRpbmF0b3Iuc2V0Vmlld092ZXJsYXlSb290TGF5ZXIo
dmlld092ZXJsYXlSb290TGF5ZXIpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
IHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xh
eWVyKTsKKyAgICBtX2Nvb3JkaW5hdG9yLnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGdyYXBoaWNz
TGF5ZXIpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgp
CiB7CiAgICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIAotICAgIG1fY29vcmRpbmF0b3It
PmNsZWFyUm9vdExheWVyKCk7CisgICAgbV9jb29yZGluYXRvci5jbGVhclJvb3RMYXllcigpOwog
ICAgIExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKTsKIH0KIApAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogewogICAgIC8v
IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBydW5uaW5nIGxheW91dCB0ZXN0cy4gU2luY2UgaW4gdGhp
cyBjYXNlIHdlIGFyZSBub3Qgd2FpdGluZyBmb3IgYSBVSVByb2Nlc3MgdG8gcmVwbHkgbmljZWx5
LgogICAgIC8vIEluc3RlYWQgd2UgYXJlIGp1c3QgdHJpZ2dlcmluZyBmb3JjZVJlcGFpbnQuIEJ1
dCB3ZSBzdGlsbCB3YW50IHRvIGhhdmUgdGhlIHNjcmlwdGVkIGFuaW1hdGlvbiBjYWxsYmFja3Mg
YmVpbmcgZXhlY3V0ZWQuCi0gICAgbV9jb29yZGluYXRvci0+c3luY0Rpc3BsYXlTdGF0ZSgpOwor
ICAgIG1fY29vcmRpbmF0b3Iuc3luY0Rpc3BsYXlTdGF0ZSgpOwogCiAgICAgLy8gV2UgbmVlZCB0
byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndpc2UgdGhlIGZvcmNlZCBwYWludCBtaWdo
dCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4KICAgICAvLyBUaGlzIGlzIGFsaWduZWQg
d2l0aCBMYXllclRyZWVIb3N0Q0EuCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCiAgICAgaWYgKG1faXNXYWl0aW5nRm9yUmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29vcmRpbmF0b3ItPmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpOworICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzKCk7CiB9CiAKIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRB
c3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMTMzLDEzICsxMzMsMTMgQEAgYm9vbCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0
IEludFNpemUmIG5ld1NpemUpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+c2l6ZURpZENoYW5nZShu
ZXdTaXplKTsKKyAgICBtX2Nvb3JkaW5hdG9yLnNpemVEaWRDaGFuZ2UobmV3U2l6ZSk7CiAgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRWaXNp
YmxlQ29udGVudHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIG1fY29vcmRpbmF0
b3Iuc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSgpCiB7CiAgICAgbV9pc1dhaXRp
bmdGb3JSZW5kZXJlciA9IGZhbHNlOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIG1f
Y29vcmRpbmF0b3ItPnJlbmRlck5leHRGcmFtZSgpOworICAgIG1fY29vcmRpbmF0b3IucmVuZGVy
TmV4dEZyYW1lKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJh
Y2tpbmdTdG9yZXMoKQogewotICAgIG1fY29vcmRpbmF0b3ItPnB1cmdlQmFja2luZ1N0b3Jlcygp
OworICAgIG1fY29vcmRpbmF0b3IucHVyZ2VCYWNraW5nU3RvcmVzKCk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaWRGbHVzaFJvb3RMYXllcihjb25zdCBGbG9hdFJlY3Qm
IHZpc2libGVDb250ZW50UmVjdCkKQEAgLTE2NywxMiArMTY3LDEyIEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJGaXJlZCgpCiAgICAgaWYgKG1faXNTdXNw
ZW5kZWQgfHwgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jb29yZGluYXRvci0+c3luY0Rpc3BsYXlTdGF0ZSgpOworICAgIG1fY29vcmRpbmF0b3Iuc3lu
Y0Rpc3BsYXlTdGF0ZSgpOwogCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGJvb2wgZGlkU3luYyA9IG1fY29vcmRpbmF0b3ItPmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcygpOworICAgIGJvb2wgZGlkU3luYyA9IG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzKCk7CiAKICAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQpIHsK
ICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxi
YWNrKG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKSk7CkBAIC0yMTIsNyArMjEyLDcgQEAg
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVh
dGVDb29yZGluYXRlZFN1cmZhY2UoY28KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgbV9jb29yZGluYXRvci5kZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICBtX3dlYlBhZ2UubWFpbkZyYW1lKCkt
PnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCk7CiB9
CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFn
ZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogR3JhcGhpY3NMYXllckZhY3Rvcnkq
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewotICAg
IHJldHVybiBtX2Nvb3JkaW5hdG9yLmdldCgpOworICAgIHJldHVybiAmbV9jb29yZGluYXRvcjsK
IH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTIzNSwxMyArMjM1
LDEzIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlvbigp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIG1fbGF5
ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdChtX2Nvb3JkaW5hdG9yLT5uZXh0QW5pbWF0aW9uU2Vy
dmljZVRpbWUoKSk7CisgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KG1fY29vcmRp
bmF0b3IubmV4dEFuaW1hdGlvblNlcnZpY2VUaW1lKCkpOwogfQogI2VuZGlmCiAKIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJ
RCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KQogewotICAgIG1fY29vcmRpbmF0b3It
PmNvbW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpOworICAgIG1fY29vcmRpbmF0b3Iu
Y29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaAppbmRleCBmOTU3ZjcwLi42Mjc5YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtODUsNyAr
ODUsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRl
ZFN1cmZhY2U+IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29tcG9zaXRpbmdDb29yZGluYXRvcj4gbV9jb29yZGluYXRvcjsKKyAgICBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yIG1fY29vcmRpbmF0b3I7CiAgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclJl
bmRlcmVyIHsgdHJ1ZSB9OwogICAgIHVpbnQ2NF90IG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFj
a0lEIHsgMCB9OwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdD4g
bV9sYXllckZsdXNoVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5j
cHAKaW5kZXggOWZhNzU2Ny4uYWU3MzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Vw
ZGF0ZUF0bGFzLmNwcApAQCAtMzIsOSArMzIsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudCA6
IHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCB7CitjbGFzcyBVcGRhdGVBdGxhc1N1
cmZhY2VDbGllbnQgZmluYWwgOiBwdWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQgewog
cHVibGljOgotICAgIFVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudChDb29yZGluYXRlZFN1cmZhY2U6
OkNsaWVudCogY2xpZW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIHN1cHBvcnRzQWxwaGEp
CisgICAgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50KENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50
JiBjbGllbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgc3VwcG9ydHNBbHBoYSkKICAgICAg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgICAgICwg
bV9zdXBwb3J0c0FscGhhKHN1cHBvcnRzQWxwaGEpCkBAIC00OSwzOSArNDksMzggQEAgcHVibGlj
OgogICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlT3Zlcik7CiAgICAgICAgIH0KIAotICAgICAgICBtX2NsaWVudC0+cGFpbnRUb1N1cmZhY2VD
b250ZXh0KGNvbnRleHQpOworICAgICAgICBtX2NsaWVudC5wYWludFRvU3VyZmFjZUNvbnRleHQo
Y29udGV4dCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xp
ZW50KiBtX2NsaWVudDsKKyAgICBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYgbV9jbGllbnQ7
CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgYm9vbCBtX3N1cHBvcnRzQWxwaGE7CiB9OwogCi1V
cGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMo
Q2xpZW50JiBjbGllbnQsIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Mg
ZmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2luYWN0aXZpdHlJblNlY29u
ZHMoMCkKIHsKICAgICBzdGF0aWMgdWludDMyX3QgbmV4dElEID0gMDsKICAgICBtX0lEID0gKytu
ZXh0SUQ7CiAgICAgSW50U2l6ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNp
b24sIGRpbWVuc2lvbikpOwogICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKHNpemUsIGZsYWdzKTsKIAotICAgIG1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxhcyhtX0lE
LCBtX3N1cmZhY2UpOworICAgIG1fY2xpZW50LmNyZWF0ZVVwZGF0ZUF0bGFzKG1fSUQsIG1fc3Vy
ZmFjZSk7CiB9CiAKIFVwZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMoKQogewogICAgIGlmIChtX3N1
cmZhY2UpCi0gICAgICAgIG1fY2xpZW50LT5yZW1vdmVVcGRhdGVBdGxhcyhtX0lEKTsKKyAgICAg
ICAgbV9jbGllbnQucmVtb3ZlVXBkYXRlQXRsYXMobV9JRCk7CiB9CiAKIHZvaWQgVXBkYXRlQXRs
YXM6OmJ1aWxkTGF5b3V0SWZOZWVkZWQoKQogewotICAgIGlmICghbV9hcmVhQWxsb2NhdG9yKSB7
Ci0gICAgICAgIG1fYXJlYUFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhbEFyZWFB
bGxvY2F0b3I+KHNpemUoKSk7Ci0gICAgICAgIG1fYXJlYUFsbG9jYXRvci0+c2V0TWluaW11bUFs
bG9jYXRpb24oSW50U2l6ZSgzMiwgMzIpKTsKLSAgICB9CisgICAgaWYgKG1fYXJlYUFsbG9jYXRv
cikKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXJlYUFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8R2VuZXJhbEFyZWFBbGxvY2F0b3I+KHNpemUoKSk7CisgICAgbV9hcmVhQWxsb2NhdG9yLT5z
ZXRNaW5pbXVtQWxsb2NhdGlvbihJbnRTaXplKDMyLCAzMikpOwogfQogCiB2b2lkIFVwZGF0ZUF0
bGFzOjpkaWRTd2FwQnVmZmVycygpCkBAIC04OSw4ICs4OCw3IEBAIHZvaWQgVXBkYXRlQXRsYXM6
OmRpZFN3YXBCdWZmZXJzKCkKICAgICBtX2FyZWFBbGxvY2F0b3IgPSBudWxscHRyOwogfQogCi0K
LWJvb2wgVXBkYXRlQXRsYXM6OnBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6Q2xpZW50KiBjbGllbnQpCitib29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxl
QnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYg
b2Zmc2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYgY2xpZW50KQogewogICAgIG1faW5h
Y3Rpdml0eUluU2Vjb25kcyA9IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtMTA5
LDcgKzEwNyw3IEBAIGJvb2wgVXBkYXRlQXRsYXM6OnBhaW50T25BdmFpbGFibGVCdWZmZXIoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzSUQsCiAgICAgb2Zmc2V0ID0gcmVjdC5s
b2NhdGlvbigpOwogCiAgICAgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IHN1cmZhY2VDbGllbnQo
Y2xpZW50LCBzaXplLCBzdXBwb3J0c0FscGhhKCkpOwotICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1
cmZhY2UocmVjdCwgJnN1cmZhY2VDbGllbnQpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZh
Y2UocmVjdCwgc3VyZmFjZUNsaWVudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCmluZGV4IDBkOWNhYzRkLi5kOTA5OGQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBj
bGFzcyBVcGRhdGVBdGxhcyB7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBp
ZCAqLywgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAqLywgUmVm
UHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAqLykgPSAwOwogICAgIH07CiAK
LSAgICBVcGRhdGVBdGxhcyhDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzKTsKKyAgICBVcGRhdGVBdGxhcyhDbGllbnQmLCBpbnQgZGltZW5z
aW9uLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKICAgICB+VXBkYXRlQXRs
YXMoKTsKIAogICAgIGlubGluZSBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3N1cmZhY2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAgIGJvb2wgcGFpbnRPbkF2YWlsYWJsZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBv
aW50JiBvZmZzZXQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kik7CisgICAg
Ym9vbCBwYWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCB1aW50
MzJfdCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCwgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpDbGllbnQmKTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzKCk7CiAgICAg
Ym9vbCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zdXBwb3J0c0Fs
cGhhKCk7IH0KIApAQCAtNzEsMTEgKzcxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZExh
eW91dElmTmVlZGVkKCk7CiAKIHByaXZhdGU6Ci0gICAgQ2xpZW50KiBtX2NsaWVudDsKKyAgICBD
bGllbnQmIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmFsQXJlYUFsbG9jYXRv
cj4gbV9hcmVhQWxsb2NhdG9yOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+IG1fc3VyZmFjZTsKLSAgICBkb3VibGUgbV9pbmFjdGl2aXR5SW5TZWNvbmRzOwotICAgIHVp
bnQzMl90IG1fSUQ7CisgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kcyB7IDAgfTsKKyAg
ICB1aW50MzJfdCBtX0lEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282417</attachid>
            <date>2016-06-30 00:37:32 -0700</date>
            <delta_ts>2016-07-04 23:02:43 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-compositing-coord-cleanup.diff</filename>
            <type>text/plain</type>
            <size>41825</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNWExMTY1Li5hNzk5MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTYtMDYtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW9kZXJuaXplIGFuZCBjbGVhbnVw
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2hlbiBw
b3NzaWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRvU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisKIDIw
MTYtMDYtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW92ZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
IGZyb20gcGxhdGZvcm0gdG8gV2ViS2l0MiBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmYTM3YzY3Li5lMGI2
ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICByZXR1cm4gZW5jbG9zaW5n
SW50UmVjdChyZWN0KTsKIH0KIAotYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnBhaW50
VG9TdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhcywgSW50UG9pbnQm
IG9mZnNldCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCkKK2Jvb2wgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCB1
aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xp
ZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOwogICAgIEFTU0VSVCht
X2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDIzNWFhZDgu
LmRmNWIxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKQEAgLTQ5LDkgKzQ5LDkgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVy
Q2hhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVu
dHNSZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZElt
YWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UqKSA9IDA7CisgICAg
dmlydHVhbCBSZWY8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lm
TmVlZGVkKEltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJmYWNl
KGNvbnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRs
YXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCopID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6Q2xpZW50JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENv
b3JkaW5hdGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSA9IDA7CiB9
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMy
X3QgdGlsZUlELCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90
IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFzSUQg
Ki8sIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKKyAg
ICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgLyogYXRsYXNJ
RCAqLywgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBzZXRDb29yZGluYXRvcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5jcHAKaW5kZXggZThmY2FiYi4uZTkxYjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICBJbnRSZWN0IHJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZShtX2ltYWdlLT5zaXplKCkpKTsKIAogICAgIElt
YWdlQmFja2luZ1N1cmZhY2VDbGllbnQgc3VyZmFjZUNsaWVudCgqbV9pbWFnZSwgcmVjdCk7Ci0g
ICAgbV9zdXJmYWNlLT5wYWludFRvU3VyZmFjZShyZWN0LCAmc3VyZmFjZUNsaWVudCk7CisgICAg
bV9zdXJmYWNlLT5wYWludFRvU3VyZmFjZShyZWN0LCBzdXJmYWNlQ2xpZW50KTsKIAogICAgIG1f
bmF0aXZlSW1hZ2VQdHIgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5o
CmluZGV4IDc0N2IyODAuLjUyYjc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwg
UGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENv
b3JkaW5hdGVkU3VyZmFjZT4mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdl
QmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KSA9IDA7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZh
Y2UuaAppbmRleCBmOWQzMjYyLi5hYzlhZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBib29s
IHN1cHBvcnRzQWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgU3VwcG9ydHNBbHBoYTsg
fQogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmLCBDbGllbnQqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmLCBDbGllbnQmKSA9
IDA7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1Rl
eHR1cmUoUmVmUHRyPEJpdG1hcFRleHR1cmU+LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0
IEludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmNwcAppbmRl
eCBiNjZlNjk3Li5mMTU1ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIGJvb2wgVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAKICAgICBTdXJmYWNlVXBkYXRl
SW5mbyB1cGRhdGVJbmZvOwogCi0gICAgaWYgKCFtX3RpbGVkQmFja2luZ1N0b3JlLmNsaWVudCgp
LT5wYWludFRvU3VyZmFjZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0ZUluZm8uYXRsYXNJRCwg
dXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0LCB0aGlzKSkKKyAgICBpZiAoIW1fdGlsZWRCYWNraW5n
U3RvcmUuY2xpZW50KCktPnBhaW50VG9TdXJmYWNlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBkYXRl
SW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQsICp0aGlzKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CmluZGV4IGM2NDViMjIuLjYxOTM2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGZsb2F0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVRpbGUodWludDMyX3QgdGlsZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJm
YWNlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZh
Y2UoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50JikgPSAwOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjEy
OTYwOC4uYTNkMWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTI4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ29v
cmRpbmF0ZWQgR3JhcGhpY3NdIE1vZGVybml6ZSBhbmQgY2xlYW51cCBDb21wb3NpdGluZ0Nvb3Jk
aW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTkyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2VzIGRvbmU6CisKKyAgICAgICAgICAtIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9p
bnRlcnMgd2hlbiBwb3NzaWJsZS4KKyAgICAgICAgICAtIEFkZCBtaXNzaW5nIGZpbmFsL292ZXJy
aWRlIGtleXdvcmRzLgorICAgICAgICAgIC0gUmVkdWNlIHRoZSB1c2Ugb2YgUGFzc1JlZlB0cgor
ICAgICAgICAgIC0gTW92ZSBtZW1iZXIgaW5pdGlhbGl6YXRpb25zIHRvIHRoZSBkZWNsYXJhdGlv
bi4KKyAgICAgICAgICAtIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMC4KKyAgICAgICAgICAtIFVz
ZSBIYXNoTWFwOjplbnN1cmUoKSBpbnN0ZWFkIG9mIGNvbXBsaWNhdGVkIGNvZGUgd2l0aCBpdGVy
YXRvcnMuCisgICAgICAgICAgLSBBdm9pZCBoZWFwIGFsbG9jYXRpb24gd2hlbiBwb3NzaWJsZS4K
KworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6cGFpbnRU
b1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZTo6cGFpbnRUb1N1cmZhY2Up
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdlbmVyYWxBcmVhQWxsb2NhdG9yOjpleHBhbmQpOgorICAgICAgICAoV2ViS2l0OjpH
ZW5lcmFsQXJlYUFsbG9jYXRvcjo6c3BsaXROb2RlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJh
bEFyZWFBbGxvY2F0b3I6OnJlbGVhc2UpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmFsQXJlYUFs
bG9jYXRvcjo6R2VuZXJhbEFyZWFBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29v
cmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6bm90aWZ5Rmx1c2hSZXF1
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVV
cGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNv
bW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OnBhaW50VG9TdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJO
ZXh0RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1
cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21t
aXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6VXBk
YXRlQXRsYXM6On5VcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpi
dWlsZExheW91dElmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXM6OnBhaW50
T25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhc1N1cmZhY2VD
bGllbnQ6OlVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaDoKKwogMjAx
Ni0wNi0zMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBNb3ZlIENvbXBvc2l0aW5nQ29vcmRpbmF0b3Ig
ZnJvbSBwbGF0Zm9ybSB0byBXZWJLaXQyIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmNwcAppbmRleCBjZDg0Zjc1Li5lMzI4OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKQEAgLTE4MSwxMiArMTgxLDEwIEBAIGJvb2wgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpwYWludFRvU3VyZmFjZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQordm9pZCBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50JiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKGNsaWVu
dCk7Ci0KICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Ci0g
ICAgY2xpZW50LT5wYWludFRvU3VyZmFjZUNvbnRleHQoKmNvbnRleHQpOworICAgIGNsaWVudC5w
YWludFRvU3VyZmFjZUNvbnRleHQoKmNvbnRleHQpOwogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAppbmRleCA5MzhmNmE1Li42ZDcw
NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJDb29yZGluYXRlZFN1cmZhY2UoKTsKIAotICAg
IHZvaWQgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRvU3Vy
ZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
OjpDbGllbnQmKSBvdmVycmlkZTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2b2lk
IGNvcHlUb1RleHR1cmUoUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZz
ZXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IGM5MTI0
NzMuLjU0YjdlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTUyLDEy
ICs1MiwxMCBAQCBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjp+VGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZSgpCiB7CiB9CiAKLXZvaWQgVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFj
ZTo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpDbGllbnQqIGNsaWVudCkKK3ZvaWQgVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZTo6cGFp
bnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGll
bnQmIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoY2xpZW50KTsKLQogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCA9IGJlZ2luUGFpbnQocmVjdCk7Ci0gICAgY2xpZW50LT5wYWludFRvU3VyZmFj
ZUNvbnRleHQoY29udGV4dCk7CisgICAgY2xpZW50LnBhaW50VG9TdXJmYWNlQ29udGV4dChjb250
ZXh0KTsKICAgICBlbmRQYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNv
b3JkaW5hdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuaApp
bmRleCA1OWIzZGUwLi5mNDYwZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5h
dGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSBhIG5ldyBUaHJlYWRTYWZlQ29v
cmRpbmF0ZWRTdXJmYWNlIGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3Ig
YSBJbWFnZUJ1ZmZlciBhcyBiYWNraW5nLgogICAgIHN0YXRpYyBSZWY8VGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKIAotICAgIHZvaWQgcGFpbnRUb1N1cmZhY2UoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvcHlUb1RleHR1cmUoUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9BcmVhQWxsb2NhdG9yLmNwcAppbmRleCBlODgwYjQ2Li5hOWVjZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVh
QWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmNwcApAQCAtNzYsOSArNzYsNiBAQCBHZW5l
cmFsQXJlYUFsbG9jYXRvcjo6R2VuZXJhbEFyZWFBbGxvY2F0b3IoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICBtX3Jvb3QgPSBuZXcgTm9kZSgpOwogICAgIG1fcm9vdC0+cmVjdCA9IEludFJlY3Qo
MCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9yb290LT5sYXJn
ZXN0RnJlZSA9IG1fc2l6ZTsKLSAgICBtX3Jvb3QtPnBhcmVudCA9IDA7Ci0gICAgbV9yb290LT5s
ZWZ0ID0gMDsKLSAgICBtX3Jvb3QtPnJpZ2h0ID0gMDsKICAgICBtX25vZGVDb3VudCA9IDE7CiAg
ICAgc2V0TWluaW11bUFsbG9jYXRpb24oSW50U2l6ZSg4LCA4KSk7CiB9CkBAIC0xMjgsMTMgKzEy
NSwxMyBAQCB2b2lkIEdlbmVyYWxBcmVhQWxsb2NhdG9yOjpleHBhbmQoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICAgICAgTm9kZSogcmlnaHQgPSBuZXcgTm9kZSgpOwogICAgICAgICBtX25vZGVD
b3VudCArPSAyOwogICAgICAgICBtX3Jvb3QtPnBhcmVudCA9IHBhcmVudDsKLSAgICAgICAgcGFy
ZW50LT5wYXJlbnQgPSAwOworICAgICAgICBwYXJlbnQtPnBhcmVudCA9IG51bGxwdHI7CiAgICAg
ICAgIHBhcmVudC0+bGVmdCA9IG1fcm9vdDsKICAgICAgICAgcGFyZW50LT5yaWdodCA9IHJpZ2h0
OwogICAgICAgICBwYXJlbnQtPmxhcmdlc3RGcmVlID0gbV9yb290LT5yZWN0LnNpemUoKTsKICAg
ICAgICAgcmlnaHQtPnBhcmVudCA9IHBhcmVudDsKLSAgICAgICAgcmlnaHQtPmxlZnQgPSAwOwot
ICAgICAgICByaWdodC0+cmlnaHQgPSAwOworICAgICAgICByaWdodC0+bGVmdCA9IG51bGxwdHI7
CisgICAgICAgIHJpZ2h0LT5yaWdodCA9IG51bGxwdHI7CiAgICAgICAgIHJpZ2h0LT5sYXJnZXN0
RnJlZSA9IG1fcm9vdC0+cmVjdC5zaXplKCk7CiAgICAgICAgIGlmIChzcGxpdCA9PSBTcGxpdE9u
WCkgewogICAgICAgICAgICAgcGFyZW50LT5yZWN0ID0gSW50UmVjdChtX3Jvb3QtPnJlY3QueCgp
LCBtX3Jvb3QtPnJlY3QueSgpLApAQCAtMjQwLDIwICsyMzcsMTUgQEAgSW50UG9pbnQgR2VuZXJh
bEFyZWFBbGxvY2F0b3I6OmFsbG9jYXRlRnJvbU5vZGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgTm9k
ZSogbm9kZSkKICAgICByZXR1cm4gSW50UG9pbnQoLTEsIC0xKTsKIH0KIAotR2VuZXJhbEFyZWFB
bGxvY2F0b3I6Ok5vZGUqIEdlbmVyYWxBcmVhQWxsb2NhdG9yOjpzcGxpdE5vZGUKLSAgICAoTm9k
ZSogbm9kZSwgU3BsaXQgc3BsaXQpCitHZW5lcmFsQXJlYUFsbG9jYXRvcjo6Tm9kZSogR2VuZXJh
bEFyZWFBbGxvY2F0b3I6OnNwbGl0Tm9kZShOb2RlKiBub2RlLCBTcGxpdCBzcGxpdCkKIHsKICAg
ICBOb2RlKiBsZWZ0ID0gbmV3IE5vZGUoKTsKLSAgICBOb2RlKiByaWdodCA9IG5ldyBOb2RlKCk7
Ci0gICAgbV9ub2RlQ291bnQgKz0gMjsKICAgICBsZWZ0LT5wYXJlbnQgPSBub2RlOwotICAgIGxl
ZnQtPmxlZnQgPSAwOwotICAgIGxlZnQtPnJpZ2h0ID0gMDsKKyAgICBOb2RlKiByaWdodCA9IG5l
dyBOb2RlKCk7CiAgICAgcmlnaHQtPnBhcmVudCA9IG5vZGU7Ci0gICAgcmlnaHQtPmxlZnQgPSAw
OwotICAgIHJpZ2h0LT5yaWdodCA9IDA7CiAgICAgbm9kZS0+bGVmdCA9IGxlZnQ7CiAgICAgbm9k
ZS0+cmlnaHQgPSByaWdodDsKKyAgICBtX25vZGVDb3VudCArPSAyOwogCiAgICAgaWYgKHNwbGl0
ID09IFNwbGl0T25YKSB7CiAgICAgICAgIGxlZnQtPnJlY3QgPSBJbnRSZWN0KG5vZGUtPnJlY3Qu
eCgpLCBub2RlLT5yZWN0LnkoKSwKQEAgLTMxNyw4ICszMDksOCBAQCB2b2lkIEdlbmVyYWxBcmVh
QWxsb2NhdG9yOjpyZWxlYXNlKGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgIGZyZWVOb2Rl
KG5vZGUtPmxlZnQpOwogICAgICAgICBmcmVlTm9kZShub2RlLT5yaWdodCk7CiAgICAgICAgIG1f
bm9kZUNvdW50IC09IDI7Ci0gICAgICAgIG5vZGUtPmxlZnQgPSAwOwotICAgICAgICBub2RlLT5y
aWdodCA9IDA7CisgICAgICAgIG5vZGUtPmxlZnQgPSBudWxscHRyOworICAgICAgICBub2RlLT5y
aWdodCA9IG51bGxwdHI7CiAgICAgICAgIG5vZGUtPmxhcmdlc3RGcmVlID0gbm9kZS0+cmVjdC5z
aXplKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmgK
aW5kZXggYjhmZjZiOS4uMjBjYWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFB
bGxvY2F0b3IuaApAQCAtNzYsMjYgKzc2LDI4IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJ
bnRTaXplIHJvdW5kQWxsb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiB9
OwogCi1jbGFzcyBHZW5lcmFsQXJlYUFsbG9jYXRvciA6IHB1YmxpYyBBcmVhQWxsb2NhdG9yIHsK
K2NsYXNzIEdlbmVyYWxBcmVhQWxsb2NhdG9yIGZpbmFsIDogcHVibGljIEFyZWFBbGxvY2F0b3Ig
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEdl
bmVyYWxBcmVhQWxsb2NhdG9yKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2aXJ0dWFs
IH5HZW5lcmFsQXJlYUFsbG9jYXRvcigpOwogCi0gICAgdm9pZCBleHBhbmQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwotICAgIFdlYkNvcmU6OkludFJlY3QgYWxsb2NhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwotICAgIHZvaWQgcmVsZWFzZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
Ci0gICAgaW50IG92ZXJoZWFkKCkgY29uc3Q7CisgICAgdm9pZCBleHBhbmQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFJlY3QgYWxsb2NhdGUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFzZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgaW50IG92ZXJoZWFkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZW51bSBTcGxpdCB7IFNwbGl0T25YLCBTcGxpdE9uWSB9
OwogCiAgICAgc3RydWN0IE5vZGUgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBwdWJsaWM6CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdDsKICAgICAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBsYXJnZXN0RnJlZTsKLSAgICAgICAgTm9kZSogcGFyZW50OwotICAgICAg
ICBOb2RlKiBsZWZ0OwotICAgICAgICBOb2RlKiByaWdodDsKKyAgICAgICAgTm9kZSogcGFyZW50
IHsgbnVsbHB0ciB9OworICAgICAgICBOb2RlKiBsZWZ0IHsgbnVsbHB0ciB9OworICAgICAgICBO
b2RlKiByaWdodCB7IG51bGxwdHIgfTsKICAgICB9OwogCiAgICAgTm9kZSogbV9yb290OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBlZGEwOWZiLi44ZjA2MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMzYsMjggKzM2LDE2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLUNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNvbXBvc2l0aW5nQ29v
cmRpbmF0b3IoUGFnZSogcGFnZSwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50KiBjbGll
bnQpCitDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yKFBhZ2Uq
IHBhZ2UsIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCYgY2xpZW50KQogICAgIDogbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Jvb3RDb21wb3NpdGlu
Z0xheWVyKG51bGxwdHIpCi0gICAgLCBtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyKG51bGxwdHIp
Ci0gICAgLCBtX2lzRGVzdHJ1Y3RpbmcoZmFsc2UpCi0gICAgLCBtX2lzUHVyZ2luZyhmYWxzZSkK
LSAgICAsIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyhmYWxzZSkKLSAgICAsIG1fc2hvdWxkU3lu
Y0ZyYW1lKGZhbHNlKQotICAgICwgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXIo
ZmFsc2UpCiAgICAgLCBtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lcigqdGhpcywgJkNvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKQotI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICAsIG1fbGFzdEFuaW1hdGlvblNl
cnZpY2VUaW1lKDApCi0jZW5kaWYKIHsKIH0KIApAQCAtMTExLDcgKzk5LDcgQEAgYm9vbCBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgYm9v
bCB2aWV3cG9ydElzU3RhYmxlID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnZpZXdwb3J0
SXNTdGFibGUoKTsKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSh2aWV3cG9ydElzU3RhYmxlKTsKLSAgICBtX2NsaWVudC0+ZGlkRmx1c2hSb290
TGF5ZXIobV92aXNpYmxlQ29udGVudHNSZWN0KTsKKyAgICBtX2NsaWVudC5kaWRGbHVzaFJvb3RM
YXllcihtX3Zpc2libGVDb250ZW50c1JlY3QpOwogCiAgICAgaWYgKG1fb3ZlcmxheUNvbXBvc2l0
aW5nTGF5ZXIpCiAgICAgICAgIG1fb3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXItPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZShGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3Jvb3RMYXllci0+c2l6ZSgpKSwg
dmlld3BvcnRJc1N0YWJsZSk7CkBAIC0xMzMsNyArMTIxLDcgQEAgYm9vbCBDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgICAgICB9CiAgICAgICAg
IG1fc3RhdGUuc2Nyb2xsUG9zaXRpb24gPSBtX3Zpc2libGVDb250ZW50c1JlY3QubG9jYXRpb24o
KTsKIAotICAgICAgICBtX2NsaWVudC0+Y29tbWl0U2NlbmVTdGF0ZShtX3N0YXRlKTsKKyAgICAg
ICAgbV9jbGllbnQuY29tbWl0U2NlbmVTdGF0ZShtX3N0YXRlKTsKIAogICAgICAgICBjbGVhclBl
bmRpbmdTdGF0ZUNoYW5nZXMoKTsKICAgICAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsK
QEAgLTIxMiwxOCArMjAwLDEzIEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0xh
eWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBDb29yZGluYXRlZEdyCiAgICAgbV9zdGF0
ZS5sYXllcnNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWQsIHN0YXRlKSk7CiB9CiAK
LVBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlKiBpbWFnZSkKK1JlZjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNr
aW5nSWZOZWVkZWQoSW1hZ2UqIGltYWdlKQogewogICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQgaW1hZ2VJRCA9IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpnZXRDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKGltYWdlKTsKLSAgICBJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9p
bWFnZUJhY2tpbmdzLmZpbmQoaW1hZ2VJRCk7Ci0gICAgUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nPiBpbWFnZUJhY2tpbmc7Ci0gICAgaWYgKGl0ID09IG1faW1hZ2VCYWNraW5ncy5lbmQo
KSkgewotICAgICAgICBpbWFnZUJhY2tpbmcgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y3Jl
YXRlKHRoaXMsIGltYWdlKTsKLSAgICAgICAgbV9pbWFnZUJhY2tpbmdzLmFkZChpbWFnZUlELCBp
bWFnZUJhY2tpbmcpOwotICAgIH0gZWxzZQotICAgICAgICBpbWFnZUJhY2tpbmcgPSBpdC0+dmFs
dWU7Ci0KLSAgICByZXR1cm4gaW1hZ2VCYWNraW5nOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9p
bWFnZUJhY2tpbmdzLmVuc3VyZShpbWFnZUlELCBbdGhpcywgaW1hZ2VdIHsKKyAgICAgICAgcmV0
dXJuIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUodGhpcywgaW1hZ2UpOworICAgIH0p
OworICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlEKQpAQCAtMjMxLDcgKzIxNCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1h
Z2VJCiAgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5hcHBlbmQoaW1hZ2VJRCk7CiB9CiAKLXZv
aWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNv
b3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6dXBkYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4mIGNvb3JkaW5hdGVkU3VyZmFjZSkKIHsKICAgICBtX3Nob3VsZFN5bmNG
cmFtZSA9IHRydWU7CiAgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoaW1hZ2VJRCwgY29vcmRpbmF0ZWRTdXJmYWNlKSk7CkBAIC0yNzEsMTIgKzI1NCwxMiBA
QCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgR3JhcGhpY3NMYXllciosIGNvbnN0CiB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCiB7CiAgICAgaWYgKCFtX2lz
RGVzdHJ1Y3RpbmcgJiYgIWlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSkKLSAgICAgICAgbV9jbGll
bnQtPm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKKyAgICAgICAgbV9jbGllbnQubm90aWZ5Rmx1c2hS
ZXF1aXJlZCgpOwogfQogCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBhaW50Q29udGVu
dHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXBSZWN0KQogewotICAgIG1fY2xpZW50LT5wYWludExheWVyQ29udGVudHMoZ3JhcGhp
Y3NMYXllciwgZ3JhcGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KGNsaXBSZWN0KSk7Cisg
ICAgbV9jbGllbnQucGFpbnRMYXllckNvbnRlbnRzKGdyYXBoaWNzTGF5ZXIsIGdyYXBoaWNzQ29u
dGV4dCwgZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NMYXllcj4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlR3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyOjpUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xp
ZW50KQpAQCAtMzAwLDcgKzI4Myw3IEBAIGZsb2F0IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9y
KCk7CiB9CiAKLXZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMo
dWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5h
dGVkU3VyZmFjZSkKK3ZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRs
YXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mIGNvb3JkaW5h
dGVkU3VyZmFjZSkKIHsKICAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5hcHBlbmQo
c3RkOjptYWtlX3BhaXIoYXRsYXNJRCwgY29vcmRpbmF0ZWRTdXJmYWNlKSk7CiB9CkBAIC0zNzEs
MTEgKzM1NCw4IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIoQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgb2Zmc2V0KQogewotICAgIExheWVyTWFwOjppdGVyYXRvciBpID0gbV9yZWdpc3Rl
cmVkTGF5ZXJzLmZpbmQobGF5ZXJJRCk7Ci0gICAgaWYgKGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJz
LmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpLT52YWx1ZS0+Y29tbWl0U2Nyb2xsT2Zm
c2V0KG9mZnNldCk7CisgICAgaWYgKGF1dG8gbGF5ZXIgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZ2V0
KGxheWVySUQpKQorICAgICAgICBsYXllci0+Y29tbWl0U2Nyb2xsT2Zmc2V0KG9mZnNldCk7CiB9
CiAKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKQEAgLTM5
NSw3ICszNzUsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0
b3JlcygpCiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CiB9CiAKLWJvb2wgQ29tcG9zaXRp
bmdDb29yZGluYXRvcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBv
ZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQpCitib29sIENvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3Jk
aW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYg
b2Zmc2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYgY2xpZW50KQogewogICAgIGZvciAo
YXV0byYgdXBkYXRlQXRsYXMgOiBtX3VwZGF0ZUF0bGFzZXMpIHsKICAgICAgICAgVXBkYXRlQXRs
YXMqIGF0bGFzID0gdXBkYXRlQXRsYXMuZ2V0KCk7CkBAIC00MDcsNyArMzg3LDcgQEAgYm9vbCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmYKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0Y2hC
dWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28uCi0gICAg
bV91cGRhdGVBdGxhc2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZUF0bGFzPih0aGlz
LCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFncykpOworICAgIG1fdXBkYXRlQXRsYXNlcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVBdGxhcz4oKnRoaXMsIFNjcmF0Y2hCdWZmZXJE
aW1lbnNpb24sIGZsYWdzKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7
CiAgICAgcmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPnBhaW50T25BdmFpbGFibGVCdWZm
ZXIoc2l6ZSwgYXRsYXNJRCwgb2Zmc2V0LCBjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCmluZGV4IDlkYmU3MTQuLjdj
OTZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQ29tcG9zaXRpbmdDb29yZGluYXRvciA6IHB1
YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CitjbGFzcyBDb21wb3NpdGluZ0Nvb3Jk
aW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAs
IHB1YmxpYyBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q2xpZW50CiAgICAgLCBwdWJs
aWMgVXBkYXRlQXRsYXM6OkNsaWVudApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNsaXBSZWN0KSA9IDA7CiAgICAgfTsKIAotICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IoV2Vi
Q29yZTo6UGFnZSosIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCopOworICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3IoV2ViQ29yZTo6UGFnZSosIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6
OkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IoKTsKIAogICAg
IHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwpA
QCAtMTAwLDIwICsxMDAsMjAgQEAgcHJpdmF0ZToKIAogICAgIC8vIENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nOjpDbGllbnQKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFj
a2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlSW1hZ2VC
YWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckltYWdlQmFj
a2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpIG92ZXJyaWRlOwogCiAgICAgLy8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xp
ZW50CiAgICAgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzOyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRl
ZChXZWJDb3JlOjpJbWFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRl
ZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2Uq
KSBvdmVycmlkZTsKICAgICB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQz
Ml90JiAvKiBhdGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFRvU3VyZmFjZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNMYXll
clN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGUmKSBvdmVycmlkZTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzOjpDbGll
bnQKLSAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVh
dGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMy
X3QgYXRsYXNJRCkgb3ZlcnJpZGU7CiAKICAgICAvLyBHcmFwaGljc0xheWVyRmFjdG9yeQpAQCAt
MTMwLDExICsxMzAsMTEgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3Q7
CiAKICAgICBXZWJDb3JlOjpQYWdlKiBtX3BhZ2U7Ci0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRv
cjo6Q2xpZW50KiBtX2NsaWVudDsKKyAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGllbnQm
IG1fY2xpZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+
IG1fcm9vdExheWVyOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fcm9vdENvbXBvc2l0
aW5nTGF5ZXI7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9vdmVybGF5Q29tcG9zaXRp
bmdMYXllcjsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RDb21wb3NpdGluZ0xh
eWVyIHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fb3ZlcmxheUNv
bXBvc2l0aW5nTGF5ZXIgeyBudWxscHRyIH07CiAKICAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUgbV9zdGF0ZTsKIApAQCAtMTQ1LDE4ICsxNDUsMTcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFVwZGF0ZUF0bGFzPj4gbV91cGRhdGVBdGxhc2VzOwog
CiAgICAgLy8gV2UgZG9uJ3Qgc2VuZCB0aGUgbWVzc2FnZXMgcmVsYXRlZCB0byByZWxlYXNpbmcg
cmVzb3VyY2VzIHRvIHJlbmRlcmVyIGR1cmluZyBwdXJnaW5nLCBiZWNhdXNlIHJlbmRlcmVyIGFs
cmVhZHkgaGFkIHJlbW92ZWQgYWxsIHJlc291cmNlcy4KLSAgICBib29sIG1faXNEZXN0cnVjdGlu
ZzsKLSAgICBib29sIG1faXNQdXJnaW5nOwotICAgIGJvb2wgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFu
Z2VzOworICAgIGJvb2wgbV9pc0Rlc3RydWN0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNQ
dXJnaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFN5bmNGcmFtZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllciB7IGZhbHNlIH07CiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwotCi0gICAgYm9vbCBtX3Nob3Vs
ZFN5bmNGcmFtZTsKLSAgICBib29sIG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVy
OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyOwogCiAj
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGRvdWJsZSBtX2xhc3RBbmlt
YXRpb25TZXJ2aWNlVGltZTsKKyAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUg
eyAwIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IGRhMmFlODMuLmIwODFkMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcApAQCAtNjEsMTIgKzYxLDEyIEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiAKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXllclRy
ZWVIb3N0KHdlYlBhZ2UpCi0gICAgLCBtX2Nvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q29t
cG9zaXRpbmdDb29yZGluYXRvcj4od2ViUGFnZS5jb3JlUGFnZSgpLCB0aGlzKSkKKyAgICAsIG1f
Y29vcmRpbmF0b3Iod2ViUGFnZS5jb3JlUGFnZSgpLCAqdGhpcykKICAgICAsIG1fbGF5ZXJGbHVz
aFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+Y3JlYXRlUm9vdExh
eWVyKG1fd2ViUGFnZS5zaXplKCkpOworICAgIG1fY29vcmRpbmF0b3IuY3JlYXRlUm9vdExheWVy
KG1fd2ViUGFnZS5zaXplKCkpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBS
T0NFU1MpCi0gICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKG1fY29vcmRpbmF0b3ItPnJvb3RMYXllcigpKS0+aWQoKTsKKyAgICBtX2xh
eWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9j
b29yZGluYXRvci5yb290TGF5ZXIoKSktPmlkKCk7CiAjZW5kaWYKIAogICAgIENvb3JkaW5hdGVk
U3VyZmFjZTo6c2V0RmFjdG9yeShjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOwpAQCAtOTAsMTkg
KzkwLDE5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjYW5jZWxQZW5kaW5nTGF5
ZXJGbHVzaCgpCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlS
b290TGF5ZXIoR3JhcGhpY3NMYXllciogdmlld092ZXJsYXlSb290TGF5ZXIpCiB7CiAgICAgTGF5
ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIodmlld092ZXJsYXlSb290TGF5ZXIp
OwotICAgIG1fY29vcmRpbmF0b3ItPnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZpZXdPdmVybGF5
Um9vdExheWVyKTsKKyAgICBtX2Nvb3JkaW5hdG9yLnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZp
ZXdPdmVybGF5Um9vdExheWVyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7
Ci0gICAgbV9jb29yZGluYXRvci0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhpY3NMYXll
cik7CisgICAgbV9jb29yZGluYXRvci5zZXRSb290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xh
eWVyKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKQog
ewogICAgIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT5j
bGVhclJvb3RMYXllcigpOworICAgIG1fY29vcmRpbmF0b3IuY2xlYXJSb290TGF5ZXIoKTsKICAg
ICBMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKIHsKICAgICAvLyBU
aGlzIGlzIG5lY2Vzc2FyeSBmb3IgcnVubmluZyBsYXlvdXQgdGVzdHMuIFNpbmNlIGluIHRoaXMg
Y2FzZSB3ZSBhcmUgbm90IHdhaXRpbmcgZm9yIGEgVUlQcm9jZXNzIHRvIHJlcGx5IG5pY2VseS4K
ICAgICAvLyBJbnN0ZWFkIHdlIGFyZSBqdXN0IHRyaWdnZXJpbmcgZm9yY2VSZXBhaW50LiBCdXQg
d2Ugc3RpbGwgd2FudCB0byBoYXZlIHRoZSBzY3JpcHRlZCBhbmltYXRpb24gY2FsbGJhY2tzIGJl
aW5nIGV4ZWN1dGVkLgotICAgIG1fY29vcmRpbmF0b3ItPnN5bmNEaXNwbGF5U3RhdGUoKTsKKyAg
ICBtX2Nvb3JkaW5hdG9yLnN5bmNEaXNwbGF5U3RhdGUoKTsKIAogICAgIC8vIFdlIG5lZWQgdG8g
c2NoZWR1bGUgYW5vdGhlciBmbHVzaCwgb3RoZXJ3aXNlIHRoZSBmb3JjZWQgcGFpbnQgbWlnaHQg
Y2FuY2VsIGEgbGF0ZXIgZXhwZWN0ZWQgZmx1c2guCiAgICAgLy8gVGhpcyBpcyBhbGlnbmVkIHdp
dGggTGF5ZXJUcmVlSG9zdENBLgpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIGlmIChtX2lzV2FpdGluZ0ZvclJlbmRl
cmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT5mbHVzaFBlbmRpbmdM
YXllckNoYW5nZXMoKTsKKyAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cygpOwogfQogCiBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTEzMywxMyArMTMzLDEzIEBAIGJvb2wgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lE
KQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBuZXdTaXplKQogewotICAgIG1fY29vcmRpbmF0b3ItPnNpemVEaWRDaGFuZ2UobmV3
U2l6ZSk7CisgICAgbV9jb29yZGluYXRvci5zaXplRGlkQ2hhbmdlKG5ld1NpemUpOwogICAgIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0
UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBtX2Nvb3JkaW5hdG9y
LnNldFZpc2libGVDb250ZW50c1JlY3QocmVjdCwgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKQEAgLTE0NywxMiArMTQ3LDEyIEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoKQogewogICAgIG1faXNXYWl0aW5n
Rm9yUmVuZGVyZXIgPSBmYWxzZTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBtX2Nv
b3JkaW5hdG9yLT5yZW5kZXJOZXh0RnJhbWUoKTsKKyAgICBtX2Nvb3JkaW5hdG9yLnJlbmRlck5l
eHRGcmFtZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNr
aW5nU3RvcmVzKCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsK
KyAgICBtX2Nvb3JkaW5hdG9yLnB1cmdlQmFja2luZ1N0b3JlcygpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgRmxvYXRSZWN0JiB2
aXNpYmxlQ29udGVudFJlY3QpCkBAIC0xNjcsMTIgKzE2NywxMiBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogICAgIGlmIChtX2lzU3VzcGVu
ZGVkIHx8IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y29vcmRpbmF0b3ItPnN5bmNEaXNwbGF5U3RhdGUoKTsKKyAgICBtX2Nvb3JkaW5hdG9yLnN5bmNE
aXNwbGF5U3RhdGUoKTsKIAogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLT5mbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKTsKKyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcygpOwogCiAgICAgaWYgKG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKSB7CiAg
ICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFj
ayhtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFJl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
Q29vcmRpbmF0ZWRTdXJmYWNlKGNvCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpk
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotICAgIG1fY29vcmRpbmF0b3ItPmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworICAgIG1fY29vcmRpbmF0b3IuZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV93ZWJQYWdlLm1haW5GcmFtZSgpLT5w
YWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3RvcigpOwogfQog
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiAKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIHsKLSAgICBy
ZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsKKyAgICByZXR1cm4gJm1fY29vcmRpbmF0b3I7CiB9
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCkBAIC0yMzUsMTMgKzIzNSwx
MyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVBbmltYXRpb24oKQog
ICAgICAgICByZXR1cm47CiAKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBtX2xheWVy
Rmx1c2hUaW1lci5zdGFydE9uZVNob3QobV9jb29yZGluYXRvci0+bmV4dEFuaW1hdGlvblNlcnZp
Y2VUaW1lKCkpOworICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdChtX2Nvb3JkaW5h
dG9yLm5leHRBbmltYXRpb25TZXJ2aWNlVGltZSgpKTsKIH0KICNlbmRpZgogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5j
b21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KTsKKyAgICBtX2Nvb3JkaW5hdG9yLmNv
bW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKaW5kZXggZjk1N2Y3MC4uNjI3OWEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRT
dXJmYWNlPiBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPENvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7CisgICAgQ29tcG9zaXRp
bmdDb29yZGluYXRvciBtX2Nvb3JkaW5hdG9yOwogICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JSZW5k
ZXJlciB7IHRydWUgfTsKICAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJ
RCB7IDAgfTsKICAgICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+IG1f
bGF5ZXJGbHVzaFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3Bw
CmluZGV4IDlmYTc1NjcuLmFlNzM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRh
dGVBdGxhcy5jcHAKQEAgLTMyLDkgKzMyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQgOiBw
dWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQgeworY2xhc3MgVXBkYXRlQXRsYXNTdXJm
YWNlQ2xpZW50IGZpbmFsIDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKIHB1
YmxpYzoKLSAgICBVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQoQ29vcmRpbmF0ZWRTdXJmYWNlOjpD
bGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBzdXBwb3J0c0FscGhhKQor
ICAgIFVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudChDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYg
Y2xpZW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIHN1cHBvcnRzQWxwaGEpCiAgICAgICAg
IDogbV9jbGllbnQoY2xpZW50KQogICAgICAgICAsIG1fc2l6ZShzaXplKQogICAgICAgICAsIG1f
c3VwcG9ydHNBbHBoYShzdXBwb3J0c0FscGhhKQpAQCAtNDksMzkgKzQ5LDM4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9jbGllbnQtPnBhaW50VG9TdXJmYWNlQ29u
dGV4dChjb250ZXh0KTsKKyAgICAgICAgbV9jbGllbnQucGFpbnRUb1N1cmZhY2VDb250ZXh0KGNv
bnRleHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCogbV9jbGllbnQ7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIG1fY2xpZW50Owog
ICAgIEludFNpemUgbV9zaXplOwogICAgIGJvb2wgbV9zdXBwb3J0c0FscGhhOwogfTsKIAotVXBk
YXRlQXRsYXM6OlVwZGF0ZUF0bGFzKENsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorVXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKENs
aWVudCYgY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZs
YWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9pbmFjdGl2aXR5SW5TZWNvbmRz
KDApCiB7CiAgICAgc3RhdGljIHVpbnQzMl90IG5leHRJRCA9IDA7CiAgICAgbV9JRCA9ICsrbmV4
dElEOwogICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUoZGltZW5zaW9u
LCBkaW1lbnNpb24pKTsKICAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZShzaXplLCBmbGFncyk7CiAKLSAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwg
bV9zdXJmYWNlKTsKKyAgICBtX2NsaWVudC5jcmVhdGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZh
Y2UpOwogfQogCiBVcGRhdGVBdGxhczo6flVwZGF0ZUF0bGFzKCkKIHsKICAgICBpZiAobV9zdXJm
YWNlKQotICAgICAgICBtX2NsaWVudC0+cmVtb3ZlVXBkYXRlQXRsYXMobV9JRCk7CisgICAgICAg
IG1fY2xpZW50LnJlbW92ZVVwZGF0ZUF0bGFzKG1fSUQpOwogfQogCiB2b2lkIFVwZGF0ZUF0bGFz
OjpidWlsZExheW91dElmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fYXJlYUFsbG9jYXRvcikgewot
ICAgICAgICBtX2FyZWFBbGxvY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYWxBcmVhQWxs
b2NhdG9yPihzaXplKCkpOwotICAgICAgICBtX2FyZWFBbGxvY2F0b3ItPnNldE1pbmltdW1BbGxv
Y2F0aW9uKEludFNpemUoMzIsIDMyKSk7Ci0gICAgfQorICAgIGlmIChtX2FyZWFBbGxvY2F0b3Ip
CisgICAgICAgIHJldHVybjsKKyAgICBtX2FyZWFBbGxvY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdlbmVyYWxBcmVhQWxsb2NhdG9yPihzaXplKCkpOworICAgIG1fYXJlYUFsbG9jYXRvci0+c2V0
TWluaW11bUFsbG9jYXRpb24oSW50U2l6ZSgzMiwgMzIpKTsKIH0KIAogdm9pZCBVcGRhdGVBdGxh
czo6ZGlkU3dhcEJ1ZmZlcnMoKQpAQCAtODksOCArODgsNyBAQCB2b2lkIFVwZGF0ZUF0bGFzOjpk
aWRTd2FwQnVmZmVycygpCiAgICAgbV9hcmVhQWxsb2NhdG9yID0gbnVsbHB0cjsKIH0KIAotCi1i
b29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZFN1cmZh
Y2U6OkNsaWVudCogY2xpZW50KQorYm9vbCBVcGRhdGVBdGxhczo6cGFpbnRPbkF2YWlsYWJsZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9m
ZnNldCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIGNsaWVudCkKIHsKICAgICBtX2luYWN0
aXZpdHlJblNlY29uZHMgPSAwOwogICAgIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKQEAgLTEwOSw3
ICsxMDcsNyBAQCBib29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhc0lELAogICAgIG9mZnNldCA9IHJlY3QubG9j
YXRpb24oKTsKIAogICAgIFVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xpZW50KGNs
aWVudCwgc2l6ZSwgc3VwcG9ydHNBbHBoYSgpKTsKLSAgICBtX3N1cmZhY2UtPnBhaW50VG9TdXJm
YWNlKHJlY3QsICZzdXJmYWNlQ2xpZW50KTsKKyAgICBtX3N1cmZhY2UtPnBhaW50VG9TdXJmYWNl
KHJlY3QsIHN1cmZhY2VDbGllbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9V
cGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaAppbmRleCAwZDljYWM0ZC4uZDkwOThkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVXBkYXRlQXRsYXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCkBAIC00MSwxNyArNDEsMTcgQEAgY2xh
c3MgVXBkYXRlQXRsYXMgewogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGlj
OgotICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgLyogaWQg
Ki8sIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgLyogaWQgKi8sIFJlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgLyogaWQgKi8pID0gMDsKICAgICB9OwogCi0g
ICAgVXBkYXRlQXRsYXMoQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyk7CisgICAgVXBkYXRlQXRsYXMoQ2xpZW50JiwgaW50IGRpbWVuc2lv
biwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFz
KCk7CiAKICAgICBpbmxpbmUgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJmYWNlLT5zaXplKCk7IH0KIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMg
bm8gYXZhaWxhYmxlIGJ1ZmZlci4KLSAgICBib29sIHBhaW50T25BdmFpbGFibGVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2lu
dCYgb2Zmc2V0LCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCopOworICAgIGJv
b2wgcGFpbnRPbkF2YWlsYWJsZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDMy
X3QmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQsIFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50Jik7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVycygpOwogICAgIGJv
b2wgc3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBo
YSgpOyB9CiAKQEAgLTcxLDExICs3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRMYXlv
dXRJZk5lZWRlZCgpOwogCiBwcml2YXRlOgotICAgIENsaWVudCogbV9jbGllbnQ7CisgICAgQ2xp
ZW50JiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VuZXJhbEFyZWFBbGxvY2F0b3I+
IG1fYXJlYUFsbG9jYXRvcjsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
PiBtX3N1cmZhY2U7Ci0gICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsKLSAgICB1aW50
MzJfdCBtX0lEOworICAgIGRvdWJsZSBtX2luYWN0aXZpdHlJblNlY29uZHMgeyAwIH07CisgICAg
dWludDMyX3QgbV9JRCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5jcHAKaW5kZXggNDRlNWUwOC4uZTdiNmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
CkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKLSNpbmNs
dWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282748</attachid>
            <date>2016-07-04 23:02:43 -0700</date>
            <delta_ts>2016-07-04 23:10:32 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-coord-cleanup.diff</filename>
            <type>text/plain</type>
            <size>42044</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYWNmYzY1Li4yY2RkMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTYtMDYtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTW9kZXJuaXplIGFuZCBjbGVhbnVw
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2hlbiBw
b3NzaWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRvU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFj
a2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6CisKIDIw
MTYtMDctMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBSZXF1ZXN0T3JpZ2luUG9saWN5IGZyb20gUmVzb3VyY2VMb2FkZXJPcHRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IGZhMzdjNjcuLmUwYjZlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05NTAsNyArOTUwLDcgQEAgSW50
UmVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQog
ICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogfQogCi1ib29sIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMy
X3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCog
Y2xpZW50KQorYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnBhaW50VG9TdXJmYWNlKGNv
bnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhcywgSW50UG9pbnQmIG9mZnNldCwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQobV9jb29yZGlu
YXRvcik7CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKaW5kZXggMjM1YWFkOC4uZGY1YjE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNDksOSArNDksOSBAQCBjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRl
ZChJbWFnZSopID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxDb29yZGluYXRlZEltYWdlQmFja2luZz4g
Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRT
aXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBv
aW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJTdGF0ZSYpID0gMDsKIH07CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGls
ZUlEKSBvdmVycmlkZTsKLSAgICBib29sIHBhaW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmLCB1
aW50MzJfdCYgLyogYXRsYXNJRCAqLywgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1cmZhY2U6OkNs
aWVudCopIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYs
IHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCBlOGZjYWJiLi4zZjU2NzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAKQEAgLTEyOSwxMSArMTI5LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVw
ZGF0ZSgpCiAgICAgSW50UmVjdCByZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUobV9pbWFn
ZS0+c2l6ZSgpKSk7CiAKICAgICBJbWFnZUJhY2tpbmdTdXJmYWNlQ2xpZW50IHN1cmZhY2VDbGll
bnQoKm1faW1hZ2UsIHJlY3QpOwotICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwg
JnN1cmZhY2VDbGllbnQpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgc3Vy
ZmFjZUNsaWVudCk7CiAKICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKIAotICAgIG1fY2xpZW50LT51cGRhdGVJbWFnZUJhY2tpbmco
aWQoKSwgbV9zdXJmYWNlKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCks
IG1fc3VyZmFjZS5jb3B5UmVmKCkpOwogICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCmluZGV4
IDc0N2IyODAuLmI4NjAzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdl
QmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tp
bmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAw
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgK
aW5kZXggZjlkMzI2Mi4uYWM5YWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZFN1cmZhY2UuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBw
b3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIFN1cHBvcnRzQWxwaGE7IH0KICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiwgQ2xpZW50KikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiwgQ2xpZW50JikgPSAwOwog
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJl
KFJlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAKaW5kZXggYjY2
ZTY5Ny4uZjE1NWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBib29sIFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogCiAgICAgU3VyZmFjZVVwZGF0ZUluZm8g
dXBkYXRlSW5mbzsKIAotICAgIGlmICghbV90aWxlZEJhY2tpbmdTdG9yZS5jbGllbnQoKS0+cGFp
bnRUb1N1cmZhY2UobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0
ZUluZm8uc3VyZmFjZU9mZnNldCwgdGhpcykpCisgICAgaWYgKCFtX3RpbGVkQmFja2luZ1N0b3Jl
LmNsaWVudCgpLT5wYWludFRvU3VyZmFjZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0ZUluZm8u
YXRsYXNJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0LCAqdGhpcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9IG1fZGlydHlSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAppbmRl
eCBjNjQ1YjIyLi42MTkzNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBmbG9hdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxl
KHVpbnQzMl90IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShj
b25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiwgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJmYWNlKGNv
bnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZFN1
cmZhY2U6OkNsaWVudCYpID0gMDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZlMWNiNGUu
LmEwMzI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNi0wNi0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0Nvb3JkaW5h
dGVkIEdyYXBoaWNzXSBNb2Rlcm5pemUgYW5kIGNsZWFudXAgQ29tcG9zaXRpbmdDb29yZGluYXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
cyBkb25lOgorCisgICAgICAgICAgLSBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoZW4gcG9zc2libGUuCisgICAgICAgICAgLSBBZGQgbWlzc2luZyBmaW5hbC9vdmVycmlkZSBr
ZXl3b3Jkcy4KKyAgICAgICAgICAtIFJlZHVjZSB0aGUgdXNlIG9mIFBhc3NSZWZQdHIKKyAgICAg
ICAgICAtIE1vdmUgbWVtYmVyIGluaXRpYWxpemF0aW9ucyB0byB0aGUgZGVjbGFyYXRpb24uCisg
ICAgICAgICAgLSBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICAgLSBVc2UgSGFz
aE1hcDo6ZW5zdXJlKCkgaW5zdGVhZCBvZiBjb21wbGljYXRlZCBjb2RlIHdpdGggaXRlcmF0b3Jz
LgorICAgICAgICAgIC0gQXZvaWQgaGVhcCBhbGxvY2F0aW9uIHdoZW4gcG9zc2libGUuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJm
YWNlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHZW5lcmFsQXJlYUFsbG9jYXRvcjo6ZXhwYW5kKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJh
bEFyZWFBbGxvY2F0b3I6OnNwbGl0Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyYWxBcmVh
QWxsb2NhdG9yOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJhbEFyZWFBbGxvY2F0
b3I6OkdlbmVyYWxBcmVhQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNvbXBv
c2l0aW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5h
dG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRl
QXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjb21taXRT
Y3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpw
YWludFRvU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJh
Y2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmxheWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0
bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6YnVpbGRM
YXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpwYWludE9uQXZh
aWxhYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50
OjpVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmg6CisKIDIwMTYtMDct
MDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlByb2Nl
c3NlcyBkb24ndCBoYW5kbGUgRGF0YWJhc2VQcm9jZXNzIGdvaW5nIGF3YXkgdW5jbGVhbmx5Li4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IGNkODRmNzUuLmUzMjg5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMTgxLDEyICsx
ODEsMTAgQEAgYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6Q2xpZW50KiBjbGllbnQpCit2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6cGFpbnRUb1N1
cmZhY2UoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIGNs
aWVudCkKIHsKLSAgICBBU1NFUlQoY2xpZW50KTsKLQogICAgIGF1dG8gY29udGV4dCA9IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKLSAgICBjbGllbnQtPnBhaW50VG9TdXJmYWNlQ29udGV4
dCgqY29udGV4dCk7CisgICAgY2xpZW50LnBhaW50VG9TdXJmYWNlQ29udGV4dCgqY29udGV4dCk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5oCmluZGV4IDkzOGY2YTUuLjZkNzA2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkNv
b3JkaW5hdGVkU3VyZmFjZSgpOwogCi0gICAgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYpIG92ZXJyaWRlOwogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKQogICAgIHZvaWQgY29weVRvVGV4dHVyZShSZWZQdHI8V2ViQ29yZTo6
Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5h
dGVkU3VyZmFjZS5jcHAKaW5kZXggYzkxMjQ3My4uNTRiN2VmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRp
bmF0ZWRTdXJmYWNlLmNwcApAQCAtNTIsMTIgKzUyLDEwIEBAIFRocmVhZFNhZmVDb29yZGluYXRl
ZFN1cmZhY2U6On5UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlKCkKIHsKIH0KIAotdm9pZCBU
aHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0
JiByZWN0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQordm9pZCBUaHJlYWRT
YWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiByZWN0
LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVChjbGll
bnQpOwotCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gYmVnaW5QYWludChyZWN0KTsK
LSAgICBjbGllbnQtPnBhaW50VG9TdXJmYWNlQ29udGV4dChjb250ZXh0KTsKKyAgICBjbGllbnQu
cGFpbnRUb1N1cmZhY2VDb250ZXh0KGNvbnRleHQpOwogICAgIGVuZFBhaW50KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
U2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDU5YjNkZTAuLmY0NjBlYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q3JlYXRlIGEgbmV3IFRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UgYW5kIGFsbG9jYXRlIGVp
dGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIEltYWdlQnVmZmVyIGFzIGJhY2tpbmcuCiAgICAg
c3RhdGljIFJlZjxUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCi0g
ICAgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9T
dXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U6OkNsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29weVRvVGV4dHVyZShSZWZQdHI8V2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9BcmVhQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuY3BwCmluZGV4IGU4ODBi
NDYuLmE5ZWNlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3Iu
Y3BwCkBAIC03Niw5ICs3Niw2IEBAIEdlbmVyYWxBcmVhQWxsb2NhdG9yOjpHZW5lcmFsQXJlYUFs
bG9jYXRvcihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIG1fcm9vdCA9IG5ldyBOb2RlKCk7CiAg
ICAgbV9yb290LT5yZWN0ID0gSW50UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKTsKICAgICBtX3Jvb3QtPmxhcmdlc3RGcmVlID0gbV9zaXplOwotICAgIG1fcm9vdC0+
cGFyZW50ID0gMDsKLSAgICBtX3Jvb3QtPmxlZnQgPSAwOwotICAgIG1fcm9vdC0+cmlnaHQgPSAw
OwogICAgIG1fbm9kZUNvdW50ID0gMTsKICAgICBzZXRNaW5pbXVtQWxsb2NhdGlvbihJbnRTaXpl
KDgsIDgpKTsKIH0KQEAgLTEyOCwxMyArMTI1LDEzIEBAIHZvaWQgR2VuZXJhbEFyZWFBbGxvY2F0
b3I6OmV4cGFuZChjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICBOb2RlKiByaWdodCA9IG5l
dyBOb2RlKCk7CiAgICAgICAgIG1fbm9kZUNvdW50ICs9IDI7CiAgICAgICAgIG1fcm9vdC0+cGFy
ZW50ID0gcGFyZW50OwotICAgICAgICBwYXJlbnQtPnBhcmVudCA9IDA7CisgICAgICAgIHBhcmVu
dC0+cGFyZW50ID0gbnVsbHB0cjsKICAgICAgICAgcGFyZW50LT5sZWZ0ID0gbV9yb290OwogICAg
ICAgICBwYXJlbnQtPnJpZ2h0ID0gcmlnaHQ7CiAgICAgICAgIHBhcmVudC0+bGFyZ2VzdEZyZWUg
PSBtX3Jvb3QtPnJlY3Quc2l6ZSgpOwogICAgICAgICByaWdodC0+cGFyZW50ID0gcGFyZW50Owot
ICAgICAgICByaWdodC0+bGVmdCA9IDA7Ci0gICAgICAgIHJpZ2h0LT5yaWdodCA9IDA7CisgICAg
ICAgIHJpZ2h0LT5sZWZ0ID0gbnVsbHB0cjsKKyAgICAgICAgcmlnaHQtPnJpZ2h0ID0gbnVsbHB0
cjsKICAgICAgICAgcmlnaHQtPmxhcmdlc3RGcmVlID0gbV9yb290LT5yZWN0LnNpemUoKTsKICAg
ICAgICAgaWYgKHNwbGl0ID09IFNwbGl0T25YKSB7CiAgICAgICAgICAgICBwYXJlbnQtPnJlY3Qg
PSBJbnRSZWN0KG1fcm9vdC0+cmVjdC54KCksIG1fcm9vdC0+cmVjdC55KCksCkBAIC0yNDAsMjAg
KzIzNywxNSBAQCBJbnRQb2ludCBHZW5lcmFsQXJlYUFsbG9jYXRvcjo6YWxsb2NhdGVGcm9tTm9k
ZShjb25zdCBJbnRTaXplJiBzaXplLCBOb2RlKiBub2RlKQogICAgIHJldHVybiBJbnRQb2ludCgt
MSwgLTEpOwogfQogCi1HZW5lcmFsQXJlYUFsbG9jYXRvcjo6Tm9kZSogR2VuZXJhbEFyZWFBbGxv
Y2F0b3I6OnNwbGl0Tm9kZQotICAgIChOb2RlKiBub2RlLCBTcGxpdCBzcGxpdCkKK0dlbmVyYWxB
cmVhQWxsb2NhdG9yOjpOb2RlKiBHZW5lcmFsQXJlYUFsbG9jYXRvcjo6c3BsaXROb2RlKE5vZGUq
IG5vZGUsIFNwbGl0IHNwbGl0KQogewogICAgIE5vZGUqIGxlZnQgPSBuZXcgTm9kZSgpOwotICAg
IE5vZGUqIHJpZ2h0ID0gbmV3IE5vZGUoKTsKLSAgICBtX25vZGVDb3VudCArPSAyOwogICAgIGxl
ZnQtPnBhcmVudCA9IG5vZGU7Ci0gICAgbGVmdC0+bGVmdCA9IDA7Ci0gICAgbGVmdC0+cmlnaHQg
PSAwOworICAgIE5vZGUqIHJpZ2h0ID0gbmV3IE5vZGUoKTsKICAgICByaWdodC0+cGFyZW50ID0g
bm9kZTsKLSAgICByaWdodC0+bGVmdCA9IDA7Ci0gICAgcmlnaHQtPnJpZ2h0ID0gMDsKICAgICBu
b2RlLT5sZWZ0ID0gbGVmdDsKICAgICBub2RlLT5yaWdodCA9IHJpZ2h0OworICAgIG1fbm9kZUNv
dW50ICs9IDI7CiAKICAgICBpZiAoc3BsaXQgPT0gU3BsaXRPblgpIHsKICAgICAgICAgbGVmdC0+
cmVjdCA9IEludFJlY3Qobm9kZS0+cmVjdC54KCksIG5vZGUtPnJlY3QueSgpLApAQCAtMzE3LDgg
KzMwOSw4IEBAIHZvaWQgR2VuZXJhbEFyZWFBbGxvY2F0b3I6OnJlbGVhc2UoY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICAgICAgZnJlZU5vZGUobm9kZS0+bGVmdCk7CiAgICAgICAgIGZyZWVOb2Rl
KG5vZGUtPnJpZ2h0KTsKICAgICAgICAgbV9ub2RlQ291bnQgLT0gMjsKLSAgICAgICAgbm9kZS0+
bGVmdCA9IDA7Ci0gICAgICAgIG5vZGUtPnJpZ2h0ID0gMDsKKyAgICAgICAgbm9kZS0+bGVmdCA9
IG51bGxwdHI7CisgICAgICAgIG5vZGUtPnJpZ2h0ID0gbnVsbHB0cjsKICAgICAgICAgbm9kZS0+
bGFyZ2VzdEZyZWUgPSBub2RlLT5yZWN0LnNpemUoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFB
bGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0FyZWFBbGxvY2F0b3IuaAppbmRleCBiOGZmNmI5Li4yMGNhZGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9BcmVhQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5oCkBAIC03NiwyNiArNzYsMjggQEAg
cHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkludFNpemUgcm91bmRBbGxvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBjb25zdDsKIH07CiAKLWNsYXNzIEdlbmVyYWxBcmVhQWxsb2NhdG9y
IDogcHVibGljIEFyZWFBbGxvY2F0b3IgeworY2xhc3MgR2VuZXJhbEFyZWFBbGxvY2F0b3IgZmlu
YWwgOiBwdWJsaWMgQXJlYUFsbG9jYXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VuZXJhbEFyZWFBbGxvY2F0b3IoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogICAgIHZpcnR1YWwgfkdlbmVyYWxBcmVhQWxsb2NhdG9yKCk7CiAKLSAg
ICB2b2lkIGV4cGFuZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0gICAgV2ViQ29yZTo6SW50
UmVjdCBhbGxvY2F0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0gICAgdm9pZCByZWxlYXNl
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICBpbnQgb3ZlcmhlYWQoKSBjb25zdDsKKyAg
ICB2b2lkIGV4cGFuZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6SW50UmVjdCBhbGxvY2F0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CisgICAgdm9pZCByZWxlYXNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBpbnQgb3ZlcmhlYWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFNw
bGl0IHsgU3BsaXRPblgsIFNwbGl0T25ZIH07CiAKICAgICBzdHJ1Y3QgTm9kZSB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKICAgICAgICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0OwogICAgICAgICBXZWJDb3JlOjpJbnRTaXplIGxhcmdlc3RGcmVlOwotICAg
ICAgICBOb2RlKiBwYXJlbnQ7Ci0gICAgICAgIE5vZGUqIGxlZnQ7Ci0gICAgICAgIE5vZGUqIHJp
Z2h0OworICAgICAgICBOb2RlKiBwYXJlbnQgeyBudWxscHRyIH07CisgICAgICAgIE5vZGUqIGxl
ZnQgeyBudWxscHRyIH07CisgICAgICAgIE5vZGUqIHJpZ2h0IHsgbnVsbHB0ciB9OwogICAgIH07
CiAKICAgICBOb2RlKiBtX3Jvb3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkYTA5ZmIuLmM1ZjNiNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC0zNiwyOCArMzYsMTYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRy
b2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQ29tcG9zaXRpbmdD
b29yZGluYXRvcjo6Q29tcG9zaXRpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlLCBDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpDbGllbnQqIGNsaWVudCkKK0NvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6
Q2xpZW50JiBjbGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVu
dCkKLSAgICAsIG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIobnVsbHB0cikKLSAgICAsIG1fb3Zlcmxh
eUNvbXBvc2l0aW5nTGF5ZXIobnVsbHB0cikKLSAgICAsIG1faXNEZXN0cnVjdGluZyhmYWxzZSkK
LSAgICAsIG1faXNQdXJnaW5nKGZhbHNlKQotICAgICwgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
KGZhbHNlKQotICAgICwgbV9zaG91bGRTeW5jRnJhbWUoZmFsc2UpCi0gICAgLCBtX2RpZEluaXRp
YWxpemVSb290Q29tcG9zaXRpbmdMYXllcihmYWxzZSkKICAgICAsIG1fcmVsZWFzZUluYWN0aXZl
QXRsYXNlc1RpbWVyKCp0aGlzLCAmQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cmVsZWFzZUluYWN0
aXZlQXRsYXNlc1RpbWVyRmlyZWQpCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQotICAgICwgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUoMCkKLSNlbmRpZgogewogfQogCkBA
IC0xMTEsNyArOTksNyBAQCBib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpCiAKICAgICBib29sIHZpZXdwb3J0SXNTdGFibGUgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKS0+dmlld3BvcnRJc1N0YWJsZSgpOwogICAgIG1fcm9vdExheWVyLT5m
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHZpZXdwb3J0SXNTdGFibGUpOwot
ICAgIG1fY2xpZW50LT5kaWRGbHVzaFJvb3RMYXllcihtX3Zpc2libGVDb250ZW50c1JlY3QpOwor
ICAgIG1fY2xpZW50LmRpZEZsdXNoUm9vdExheWVyKG1fdmlzaWJsZUNvbnRlbnRzUmVjdCk7CiAK
ICAgICBpZiAobV9vdmVybGF5Q29tcG9zaXRpbmdMYXllcikKICAgICAgICAgbV9vdmVybGF5Q29t
cG9zaXRpbmdMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIG1fcm9vdExheWVyLT5zaXplKCkpLCB2aWV3cG9ydElzU3RhYmxlKTsKQEAgLTEzMyw3ICsx
MjEsNyBAQCBib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcygpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZS5zY3JvbGxQb3NpdGlvbiA9IG1fdmlz
aWJsZUNvbnRlbnRzUmVjdC5sb2NhdGlvbigpOwogCi0gICAgICAgIG1fY2xpZW50LT5jb21taXRT
Y2VuZVN0YXRlKG1fc3RhdGUpOworICAgICAgICBtX2NsaWVudC5jb21taXRTY2VuZVN0YXRlKG1f
c3RhdGUpOwogCiAgICAgICAgIGNsZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcygpOwogICAgICAgICBt
X3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOwpAQCAtMjEyLDE4ICsyMDAsMTMgQEAgdm9pZCBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQs
IENvb3JkaW5hdGVkR3IKICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihpZCwgc3RhdGUpKTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQo
SW1hZ2UqIGltYWdlKQorUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSogaW1hZ2UpCiB7CiAg
ICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEID0gQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoaW1hZ2UpOwotICAgIEltYWdlQmFj
a2luZ01hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlQmFja2luZ3MuZmluZChpbWFnZUlEKTsKLSAg
ICBSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGltYWdlQmFja2luZzsKLSAgICBpZiAo
aXQgPT0gbV9pbWFnZUJhY2tpbmdzLmVuZCgpKSB7Ci0gICAgICAgIGltYWdlQmFja2luZyA9IENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpjcmVhdGUodGhpcywgaW1hZ2UpOwotICAgICAgICBtX2lt
YWdlQmFja2luZ3MuYWRkKGltYWdlSUQsIGltYWdlQmFja2luZyk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGltYWdlQmFja2luZyA9IGl0LT52YWx1ZTsKLQotICAgIHJldHVybiBpbWFnZUJhY2tpbmc7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQmFja2luZ3MuZW5zdXJlKGltYWdlSUQsIFt0
aGlzLCBpbWFnZV0geworICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNy
ZWF0ZSh0aGlzLCBpbWFnZSk7CisgICAgfSk7CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOwogfQogCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdl
QmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCkBAIC0yMzEsMTAgKzIx
NCwxMCBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSQogICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVh
dGUuYXBwZW5kKGltYWdlSUQpOwogfQogCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnVw
ZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCit2b2lkIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgY29vcmRpbmF0ZWRT
dXJmYWNlKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3N0YXRlLmlt
YWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBjb29yZGluYXRlZFN1
cmZhY2UpKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihpbWFnZUlELCBXVEZNb3ZlKGNvb3JkaW5hdGVkU3VyZmFjZSkpKTsKIH0KIAogdm9pZCBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKQEAgLTI3MSwxMiArMjU0LDEyIEBAIHZvaWQgQ29tcG9z
aXRpbmdDb29yZGluYXRvcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xh
eWVyKiwgY29uc3QKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6bm90aWZ5Rmx1c2hSZXF1
aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKICAgICBpZiAoIW1faXNEZXN0cnVjdGluZyAm
JiAhaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKQotICAgICAgICBtX2NsaWVudC0+bm90aWZ5Rmx1
c2hSZXF1aXJlZCgpOworICAgICAgICBtX2NsaWVudC5ub3RpZnlGbHVzaFJlcXVpcmVkKCk7CiB9
CiAKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3Qp
CiB7Ci0gICAgbV9jbGllbnQtPnBhaW50TGF5ZXJDb250ZW50cyhncmFwaGljc0xheWVyLCBncmFw
aGljc0NvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpKTsKKyAgICBtX2NsaWVudC5w
YWludExheWVyQ29udGVudHMoZ3JhcGhpY3NMYXllciwgZ3JhcGhpY3NDb250ZXh0LCBlbmNsb3Np
bmdJbnRSZWN0KGNsaXBSZWN0KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVy
PiBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5
ZXI6OlR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQpCkBAIC0zMDAs
OSArMjgzLDkgQEAgZmxvYXQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAotdm9p
ZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxh
c0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQor
dm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBh
dGxhc0lELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYmIGNvb3JkaW5hdGVkU3VyZmFjZSkK
IHsKLSAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoYXRsYXNJRCwgY29vcmRpbmF0ZWRTdXJmYWNlKSk7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxh
c2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGF0bGFzSUQsIFdURk1vdmUoY29vcmRp
bmF0ZWRTdXJmYWNlKSkpOwogfQogCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnJlbW92
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCkBAIC0zNzEsMTEgKzM1NCw4IEBAIHZvaWQg
Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKiBsYXllcikKIAogdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjb21taXRTY3JvbGxP
ZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KQog
ewotICAgIExheWVyTWFwOjppdGVyYXRvciBpID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmZpbmQobGF5
ZXJJRCk7Ci0gICAgaWYgKGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpLT52YWx1ZS0+Y29tbWl0U2Nyb2xsT2Zmc2V0KG9mZnNldCk7CisgICAg
aWYgKGF1dG8qIGxheWVyID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmdldChsYXllcklEKSkKKyAgICAg
ICAgbGF5ZXItPmNvbW1pdFNjcm9sbE9mZnNldChvZmZzZXQpOwogfQogCiB2b2lkIENvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OnJlbmRlck5leHRGcmFtZSgpCkBAIC0zOTUsNyArMzc1LDcgQEAgdm9p
ZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fdXBk
YXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1ib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBh
aW50VG9TdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MgZmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpw
YWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzIGZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpDbGllbnQmIGNsaWVudCkKIHsKICAgICBmb3IgKGF1dG8mIHVwZGF0ZUF0bGFz
IDogbV91cGRhdGVBdGxhc2VzKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IHVwZGF0
ZUF0bGFzLmdldCgpOwpAQCAtNDA3LDcgKzM4Nyw3IEBAIGJvb2wgQ29tcG9zaXRpbmdDb29yZGlu
YXRvcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJm
CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGludCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uID0g
MTAyNDsgLy8gU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLgotICAgIG1fdXBkYXRlQXRsYXNlcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVBdGxhcz4odGhpcywgU2NyYXRjaEJ1ZmZlckRp
bWVuc2lvbiwgZmxhZ3MpKTsKKyAgICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8VXBkYXRlQXRsYXM+KCp0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFncykp
OwogICAgIHNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcygpOwogICAgIHJldHVybiBtX3Vw
ZGF0ZUF0bGFzZXMubGFzdCgpLT5wYWludE9uQXZhaWxhYmxlQnVmZmVyKHNpemUsIGF0bGFzSUQs
IG9mZnNldCwgY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCA5ZGJlNzE0Li5jMzFhZTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC00
OCwxMiArNDgsMTIgQEAgY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgQ29tcG9zaXRpbmdDb29yZGluYXRvciA6IHB1YmxpYyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2xpZW50CitjbGFzcyBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpD
b29yZGluYXRlZEltYWdlQmFja2luZzo6Q2xpZW50CiAgICAgLCBwdWJsaWMgVXBkYXRlQXRsYXM6
OkNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5IHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdGluZ0Nvb3JkaW5hdG9yKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcG9zaXRpbmdDb29y
ZGluYXRvcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50TGF5ZXJDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpID0gMDsKICAgICB9OwogCi0g
ICAgQ29tcG9zaXRpbmdDb29yZGluYXRvcihXZWJDb3JlOjpQYWdlKiwgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6Q2xpZW50Kik7CisgICAgQ29tcG9zaXRpbmdDb29yZGluYXRvcihXZWJDb3JlOjpQ
YWdlKiwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+Q29t
cG9zaXRpbmdDb29yZGluYXRvcigpOwogCiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CkBAIC0xMDAsMjAgKzEwMCwyMCBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNsaWVudAogICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIG92ZXJy
aWRlOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNr
aW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIG92ZXJyaWRlOwogCiAgICAg
Ly8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgYm9vbCBpc0ZsdXNoaW5nTGF5
ZXJDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0ZsdXNoaW5nTGF5ZXJDaGFu
Z2VzOyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VC
YWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGFj
aExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAg
IGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8s
IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQm
KSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSBvdmVycmlk
ZTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzOjpDbGllbnQKLSAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0
bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxh
c0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpIG92ZXJyaWRlOwogCiAg
ICAgLy8gR3JhcGhpY3NMYXllckZhY3RvcnkKQEAgLTEzMCwxMSArMTMwLDExIEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0OwogCiAgICAgV2ViQ29yZTo6UGFnZSogbV9w
YWdlOwotICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCogbV9jbGllbnQ7CisgICAg
Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50JiBtX2NsaWVudDsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiBtX3Jvb3RDb21wb3NpdGluZ0xheWVyOwotICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqIG1fb3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXI7CisgICAgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciogbV9yb290Q29tcG9zaXRpbmdMYXllciB7IG51bGxwdHIgfTsKKyAgICBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiBtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyIHsgbnVsbHB0ciB9
OwogCiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIG1fc3RhdGU7CiAKQEAg
LTE0NSwxOCArMTQ1LDE3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxV
cGRhdGVBdGxhcz4+IG1fdXBkYXRlQXRsYXNlczsKIAogICAgIC8vIFdlIGRvbid0IHNlbmQgdGhl
IG1lc3NhZ2VzIHJlbGF0ZWQgdG8gcmVsZWFzaW5nIHJlc291cmNlcyB0byByZW5kZXJlciBkdXJp
bmcgcHVyZ2luZywgYmVjYXVzZSByZW5kZXJlciBhbHJlYWR5IGhhZCByZW1vdmVkIGFsbCByZXNv
dXJjZXMuCi0gICAgYm9vbCBtX2lzRGVzdHJ1Y3Rpbmc7Ci0gICAgYm9vbCBtX2lzUHVyZ2luZzsK
LSAgICBib29sIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsKKyAgICBib29sIG1faXNEZXN0cnVj
dGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUHVyZ2luZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRT
eW5jRnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0
aW5nTGF5ZXIgeyBmYWxzZSB9OwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNv
bnRlbnRzUmVjdDsKLQotICAgIGJvb2wgbV9zaG91bGRTeW5jRnJhbWU7Ci0gICAgYm9vbCBtX2Rp
ZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3Jl
bGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lcjsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKLSAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWU7CisgICAgZG91
YmxlIG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lIHsgMCB9OwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAppbmRleCBkYTJhZTgzLi5iMDgxZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTYxLDEyICs2MSwx
MiBAQCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhvc3Qo
KQogCiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChX
ZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQotICAgICwgbV9j
b29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nQ29vcmRpbmF0b3I+KHdlYlBh
Z2UuY29yZVBhZ2UoKSwgdGhpcykpCisgICAgLCBtX2Nvb3JkaW5hdG9yKHdlYlBhZ2UuY29yZVBh
Z2UoKSwgKnRoaXMpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewot
ICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVJvb3RMYXllcihtX3dlYlBhZ2Uuc2l6ZSgpKTsKKyAg
ICBtX2Nvb3JkaW5hdG9yLmNyZWF0ZVJvb3RMYXllcihtX3dlYlBhZ2Uuc2l6ZSgpKTsKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQotICAgIG1fbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihtX2Nvb3JkaW5hdG9y
LT5yb290TGF5ZXIoKSktPmlkKCk7CisgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9
IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKG1fY29vcmRpbmF0b3Iucm9vdExheWVyKCkpLT5p
ZCgpOwogI2VuZGlmCiAKICAgICBDb29yZGluYXRlZFN1cmZhY2U6OnNldEZhY3RvcnkoY3JlYXRl
Q29vcmRpbmF0ZWRTdXJmYWNlKTsKQEAgLTkwLDE5ICs5MCwxOSBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKQogdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIHZp
ZXdPdmVybGF5Um9vdExheWVyKQogewogICAgIExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5
Um9vdExheWVyKHZpZXdPdmVybGF5Um9vdExheWVyKTsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRW
aWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3ZlcmxheVJvb3RMYXllcik7CisgICAgbV9jb29yZGlu
YXRvci5zZXRWaWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3ZlcmxheVJvb3RMYXllcik7CiB9CiAK
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIG1fY29vcmRpbmF0b3ItPnNldFJv
b3RDb21wb3NpdGluZ0xheWVyKGdyYXBoaWNzTGF5ZXIpOworICAgIG1fY29vcmRpbmF0b3Iuc2V0
Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhpY3NMYXllcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCkKIHsKICAgICBjYW5jZWxQZW5kaW5nTGF5ZXJG
bHVzaCgpOwogCi0gICAgbV9jb29yZGluYXRvci0+Y2xlYXJSb290TGF5ZXIoKTsKKyAgICBtX2Nv
b3JkaW5hdG9yLmNsZWFyUm9vdExheWVyKCk7CiAgICAgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSgpOwogfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHJ1bm5p
bmcgbGF5b3V0IHRlc3RzLiBTaW5jZSBpbiB0aGlzIGNhc2Ugd2UgYXJlIG5vdCB3YWl0aW5nIGZv
ciBhIFVJUHJvY2VzcyB0byByZXBseSBuaWNlbHkuCiAgICAgLy8gSW5zdGVhZCB3ZSBhcmUganVz
dCB0cmlnZ2VyaW5nIGZvcmNlUmVwYWludC4gQnV0IHdlIHN0aWxsIHdhbnQgdG8gaGF2ZSB0aGUg
c2NyaXB0ZWQgYW5pbWF0aW9uIGNhbGxiYWNrcyBiZWluZyBleGVjdXRlZC4KLSAgICBtX2Nvb3Jk
aW5hdG9yLT5zeW5jRGlzcGxheVN0YXRlKCk7CisgICAgbV9jb29yZGluYXRvci5zeW5jRGlzcGxh
eVN0YXRlKCk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHNjaGVkdWxlIGFub3RoZXIgZmx1c2gsIG90
aGVyd2lzZSB0aGUgZm9yY2VkIHBhaW50IG1pZ2h0IGNhbmNlbCBhIGxhdGVyIGV4cGVjdGVkIGZs
dXNoLgogICAgIC8vIFRoaXMgaXMgYWxpZ25lZCB3aXRoIExheWVyVHJlZUhvc3RDQS4KQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50
KCkKICAgICBpZiAobV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb29yZGluYXRvci0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgbV9jb29y
ZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIH0KIAogYm9vbCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBA
IC0xMzMsMTMgKzEzMywxMyBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VS
ZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKLSAgICBt
X2Nvb3JkaW5hdG9yLT5zaXplRGlkQ2hhbmdlKG5ld1NpemUpOworICAgIG1fY29vcmRpbmF0b3Iu
c2l6ZURpZENoYW5nZShuZXdTaXplKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAog
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQog
ewotICAgIG1fY29vcmRpbmF0b3ItPnNldFZpc2libGVDb250ZW50c1JlY3QocmVjdCwgdHJhamVj
dG9yeVZlY3Rvcik7CisgICAgbV9jb29yZGluYXRvci5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHJl
Y3QsIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCkBA
IC0xNDcsMTIgKzE0NywxMiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVy
TmV4dEZyYW1lKCkKIHsKICAgICBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyID0gZmFsc2U7CiAgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgbV9jb29yZGluYXRvci0+cmVuZGVyTmV4dEZyYW1l
KCk7CisgICAgbV9jb29yZGluYXRvci5yZW5kZXJOZXh0RnJhbWUoKTsKIH0KIAogdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7Ci0gICAgbV9jb29y
ZGluYXRvci0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7CisgICAgbV9jb29yZGluYXRvci5wdXJnZUJh
Y2tpbmdTdG9yZXMoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZEZs
dXNoUm9vdExheWVyKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KQpAQCAtMTY3
LDEyICsxNjcsMTIgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hU
aW1lckZpcmVkKCkKICAgICBpZiAobV9pc1N1c3BlbmRlZCB8fCBtX2lzV2FpdGluZ0ZvclJlbmRl
cmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jRGlzcGxheVN0
YXRlKCk7CisgICAgbV9jb29yZGluYXRvci5zeW5jRGlzcGxheVN0YXRlKCk7CiAKICAgICBpZiAo
IW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29y
ZGluYXRvci0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgYm9vbCBkaWRTeW5jID0g
bV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIAogICAgIGlmIChtX2Zv
cmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCkgewogICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9mb3JjZVJlcGFpbnRBc3luY0NhbGxi
YWNrSUQpKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjbwogCiB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5n
ZWQoKTsKKyAgICBtX2Nvb3JkaW5hdG9yLmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
OwogICAgIG1fd2ViUGFnZS5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlk
Q2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKTsKIH0KIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5n
ZWQoKQogCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpn
cmFwaGljc0xheWVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3IuZ2V0KCk7
CisgICAgcmV0dXJuICZtX2Nvb3JkaW5hdG9yOwogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQpAQCAtMjM1LDEzICsyMzUsMTMgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KG1f
Y29vcmRpbmF0b3ItPm5leHRBbmltYXRpb25TZXJ2aWNlVGltZSgpKTsKKyAgICBtX2xheWVyRmx1
c2hUaW1lci5zdGFydE9uZVNob3QobV9jb29yZGluYXRvci5uZXh0QW5pbWF0aW9uU2VydmljZVRp
bWUoKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1p
dFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBv
ZmZzZXQpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+Y29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQs
IG9mZnNldCk7CisgICAgbV9jb29yZGluYXRvci5jb21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwg
b2Zmc2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGY5NTdmNzAu
LjYyNzlhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0
aWMgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRT
dXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U6OkZsYWdzKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
PiBtX2Nvb3JkaW5hdG9yOworICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IgbV9jb29yZGluYXRv
cjsKICAgICBib29sIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgeyB0cnVlIH07CiAgICAgdWludDY0
X3QgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQgeyAwIH07CiAgICAgUnVuTG9vcDo6VGlt
ZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBtX2xheWVyRmx1c2hUaW1lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAppbmRleCA5ZmE3NTY3Li5lMmM0ZmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCkBAIC0zMiw5ICszMiw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50IHsKK2NsYXNzIFVwZGF0ZUF0bGFzU3VyZmFjZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBD
b29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgVXBkYXRlQXRsYXNTdXJm
YWNlQ2xpZW50KENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgc3VwcG9ydHNBbHBoYSkKKyAgICBVcGRhdGVBdGxhc1N1cmZhY2VDbGll
bnQoQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQmIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgYm9vbCBzdXBwb3J0c0FscGhhKQogICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAg
ICAgLCBtX3NpemUoc2l6ZSkKICAgICAgICAgLCBtX3N1cHBvcnRzQWxwaGEoc3VwcG9ydHNBbHBo
YSkKQEAgLTQ5LDM5ICs0OSwzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fY2xpZW50LT5wYWludFRvU3VyZmFjZUNvbnRleHQoY29udGV4dCk7CisgICAgICAgIG1f
Y2xpZW50LnBhaW50VG9TdXJmYWNlQ29udGV4dChjb250ZXh0KTsKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIG1fY2xpZW50OworICAgIENvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50JiBtX2NsaWVudDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBi
b29sIG1fc3VwcG9ydHNBbHBoYTsKIH07CiAKLVVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhDbGll
bnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFn
cykKK1VwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhDbGllbnQmIGNsaWVudCwgaW50IGRpbWVuc2lv
biwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVu
dCkKLSAgICAsIG1faW5hY3Rpdml0eUluU2Vjb25kcygwKQogewogICAgIHN0YXRpYyB1aW50MzJf
dCBuZXh0SUQgPSAwOwogICAgIG1fSUQgPSArK25leHRJRDsKICAgICBJbnRTaXplIHNpemUgPSBu
ZXh0UG93ZXJPZlR3byhJbnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7CiAgICAgbV9zdXJm
YWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgZmxhZ3MpOwogCi0gICAgbV9j
bGllbnQtPmNyZWF0ZVVwZGF0ZUF0bGFzKG1fSUQsIG1fc3VyZmFjZSk7CisgICAgbV9jbGllbnQu
Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9zdXJmYWNlLmNvcHlSZWYoKSk7CiB9CiAKIFVwZGF0
ZUF0bGFzOjp+VXBkYXRlQXRsYXMoKQogewogICAgIGlmIChtX3N1cmZhY2UpCi0gICAgICAgIG1f
Y2xpZW50LT5yZW1vdmVVcGRhdGVBdGxhcyhtX0lEKTsKKyAgICAgICAgbV9jbGllbnQucmVtb3Zl
VXBkYXRlQXRsYXMobV9JRCk7CiB9CiAKIHZvaWQgVXBkYXRlQXRsYXM6OmJ1aWxkTGF5b3V0SWZO
ZWVkZWQoKQogewotICAgIGlmICghbV9hcmVhQWxsb2NhdG9yKSB7Ci0gICAgICAgIG1fYXJlYUFs
bG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhbEFyZWFBbGxvY2F0b3I+KHNpemUoKSk7
Ci0gICAgICAgIG1fYXJlYUFsbG9jYXRvci0+c2V0TWluaW11bUFsbG9jYXRpb24oSW50U2l6ZSgz
MiwgMzIpKTsKLSAgICB9CisgICAgaWYgKG1fYXJlYUFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fYXJlYUFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhbEFyZWFBbGxv
Y2F0b3I+KHNpemUoKSk7CisgICAgbV9hcmVhQWxsb2NhdG9yLT5zZXRNaW5pbXVtQWxsb2NhdGlv
bihJbnRTaXplKDMyLCAzMikpOwogfQogCiB2b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVy
cygpCkBAIC04OSw4ICs4OCw3IEBAIHZvaWQgVXBkYXRlQXRsYXM6OmRpZFN3YXBCdWZmZXJzKCkK
ICAgICBtX2FyZWFBbGxvY2F0b3IgPSBudWxscHRyOwogfQogCi0KLWJvb2wgVXBkYXRlQXRsYXM6
OnBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0
bGFzSUQsIEludFBvaW50JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGll
bnQpCitib29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNp
emUmIHNpemUsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCYgY2xpZW50KQogewogICAgIG1faW5hY3Rpdml0eUluU2Vjb25kcyA9
IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtMTA5LDcgKzEwNyw3IEBAIGJvb2wg
VXBkYXRlQXRsYXM6OnBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
dWludDMyX3QmIGF0bGFzSUQsCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwogCiAgICAg
VXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IHN1cmZhY2VDbGllbnQoY2xpZW50LCBzaXplLCBzdXBw
b3J0c0FscGhhKCkpOwotICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZh
Y2VDbGllbnQpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgc3VyZmFjZUNs
aWVudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRh
dGVBdGxhcy5oCmluZGV4IDBkOWNhYzRkLi5iMDc4MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1VwZGF0ZUF0bGFzLmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBjbGFzcyBVcGRhdGVBdGxhcyB7
CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAqLywgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAqLywgUmVmUHRyPFdlYkNvcmU6OkNvb3Jk
aW5hdGVkU3VyZmFjZT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRl
QXRsYXModWludDMyX3QgLyogaWQgKi8pID0gMDsKICAgICB9OwogCi0gICAgVXBkYXRlQXRsYXMo
Q2xpZW50KiwgaW50IGRpbWVuc2lvbiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyk7CisgICAgVXBkYXRlQXRsYXMoQ2xpZW50JiwgaW50IGRpbWVuc2lvbiwgV2ViQ29yZTo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBpbmxp
bmUgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXpl
KCk7IH0KIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1
ZmZlci4KLSAgICBib29sIHBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0LCBXZWJD
b3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCopOworICAgIGJvb2wgcGFpbnRPbkF2YWls
YWJsZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIFdl
YkNvcmU6OkludFBvaW50JiBvZmZzZXQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xp
ZW50Jik7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVycygpOwogICAgIGJvb2wgc3VwcG9ydHNBbHBo
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpOyB9CiAKQEAgLTcx
LDExICs3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwog
CiBwcml2YXRlOgotICAgIENsaWVudCogbV9jbGllbnQ7CisgICAgQ2xpZW50JiBtX2NsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VuZXJhbEFyZWFBbGxvY2F0b3I+IG1fYXJlYUFsbG9jYXRv
cjsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7Ci0g
ICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsKLSAgICB1aW50MzJfdCBtX0lEOworICAg
IGRvdWJsZSBtX2luYWN0aXZpdHlJblNlY29uZHMgeyAwIH07CisgICAgdWludDMyX3QgbV9JRCB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="306525"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>