<?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>157082</bug_id>
          
          <creation_ts>2016-04-27 10:28:56 -0700</creation_ts>
          <short_desc>Modernize Intl constructors; using InternalFunction::createSubclassStructure</short_desc>
          <delta_ts>2016-05-15 14:10:37 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="André Bargull">andre.bargull</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187794</commentid>
    <comment_count>0</comment_count>
    <who name="André Bargull">andre.bargull</who>
    <bug_when>2016-04-27 10:28:56 -0700</bug_when>
    <thetext>SVN: rev200124
Build with: perl Tools/Scripts/build-jsc --gtk --debug


The following test case triggers this assertion error:
---
ASSERTION FAILED: prototype
---


Test case:
---
Reflect.construct(Intl.Collator, [], new Proxy(function(){},{}))
---


Stack trace:
---
#0  0x00007ffff6e289ac in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:322
#1  0x00007ffff6c5b30d in JSC::JSObject::setPrototypeDirect (this=0x7fffaedabf30, vm=..., prototype=...) at ../../Source/JavaScriptCore/runtime/JSObject.cpp:1320
#2  0x00007ffff6c5b6e4 in JSC::JSObject::setPrototypeWithCycleCheck (this=0x7fffaedabf30, vm=..., exec=0x7fffffffc800, prototype=..., shouldThrowIfCantSet=false)
    at ../../Source/JavaScriptCore/runtime/JSObject.cpp:1373
#3  0x00007ffff6c5b782 in JSC::JSObject::setPrototype (object=0x7fffaedabf30, exec=0x7fffffffc800, prototype=..., shouldThrowIfCantSet=false) at ../../Source/JavaScriptCore/runtime/JSObject.cpp:1379
#4  0x00007ffff6c5b7f2 in JSC::JSObject::setPrototype (this=0x7fffaedabf30, vm=..., exec=0x7fffffffc800, prototype=..., shouldThrowIfCantSet=false)
    at ../../Source/JavaScriptCore/runtime/JSObject.cpp:1389
#5  0x00007ffff6bc3f37 in JSC::constructIntlCollator (state=0x7fffffffc800) at ../../Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:100
#6  0x00007ffff6a2da0a in vmEntryToNative () at ../../Source/JavaScriptCore/heap/Strong.h:85
#7  0x00007ffff6998ae5 in JSC::Interpreter::executeConstruct (this=0x7ffff0def058, callFrame=0x7fffffffcae0, constructor=0x7fffaeddef20, constructType=&lt;incomplete type&gt;, constructData=..., args=..., 
    newTarget=...) at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:1090
#8  0x00007ffff6b8a3ac in JSC::construct (exec=0x7fffffffcae0, constructorObject=..., constructType=&lt;incomplete type&gt;, constructData=..., args=..., newTarget=...)
    at ../../Source/JavaScriptCore/runtime/ConstructData.cpp:52
#9  0x00007ffff6cfbbd8 in JSC::reflectObjectConstruct (exec=0x7fffffffcae0) at ../../Source/JavaScriptCore/runtime/ReflectObject.cpp:130
#10 0x00007fffb0bff028 in ?? ()
#11 0x00007fffffffcb60 in ?? ()
#12 0x00007ffff6a33818 in llint_entry () from /home/andre/svn/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18
Backtrace stopped: frame did not save the PC
---</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193220</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-05-15 09:18:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/26290096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193221</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 09:19:45 -0700</bug_when>
    <thetext>getDirect may return empty for non-existing property.
We should check whether the given &quot;prototype&quot; value is non-empty.

But, more preferable way is using InternalFunction::createSubclassStructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193228</commentid>
    <comment_count>3</comment_count>
      <attachid>278971</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 11:05:03 -0700</bug_when>
    <thetext>Created attachment 278971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193231</commentid>
    <comment_count>4</comment_count>
      <attachid>278973</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 11:12:56 -0700</bug_when>
    <thetext>Created attachment 278973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193244</commentid>
    <comment_count>5</comment_count>
      <attachid>278973</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 13:49:15 -0700</bug_when>
    <thetext>Comment on attachment 278973
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193251</commentid>
    <comment_count>6</comment_count>
      <attachid>278973</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-15 14:10:33 -0700</bug_when>
    <thetext>Comment on attachment 278973
Patch

Clearing flags on attachment: 278973

Committed r200928: &lt;http://trac.webkit.org/changeset/200928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193252</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-15 14:10:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278971</attachid>
            <date>2016-05-15 11:05:03 -0700</date>
            <delta_ts>2016-05-15 11:12:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157082-20160516030556.patch</filename>
            <type>text/plain</type>
            <size>28734</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OGIyNWNjMjhiMDUyOTk1M2M3ZWYwY2U4NWM5NmMyZjM5OWFjZmY4Li42MzAwN2NjMTRkMTBjOTUx
NTUyOTIzMzg3NzhjNTA5MDY0MDQzMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxNi0wNS0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgSW50bCBjb25zdHJ1Y3RvcnM7IHVzaW5nIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwODIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCBJbnRsIGNvbnN0cnVjdG9y
cyByZXRyaWV2ZSAicHJvdG90eXBlIiB0byBpbmhlcml0IHRoZSAibmV3LnRhcmdldCIuCisgICAg
ICAgIEF0IHRoYXQgdGltZSwgdGhpcyBtaXMtYXNzdW1lZCB0aGF0IGdldERpcmVjdCgpIGFsd2F5
cyByZXR1cm5zIG1lYW5pbmdmdWwgSlMgdmFsdWUuCisgICAgICAgIEFjdHVhbGx5LCBpdCByZXR1
cm5zIGFuIGVtcHR5IHZhbHVlIGlmIGEgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisKKyAgICAg
ICAgSW5zdGVhZCBvZiBmaXhpbmcgdGhpcyBhc3NlcnRpb24sIHdlIG5vdyB1c2UgSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUKKyAgICAgICAgaW4gSW50bCBjb25zdHJ1
Y3RvcnMuIEl0IGlzIG1vZGVybiBhbmQgcHJlZmVyYWJsZSB3YXkgc2luY2UgaXQgY2FuIGNhY2hl
IHRoZSBkZXJpdmVkCisgICAgICAgIHN0cnVjdHVyZXMgaW4gSW50ZXJuYWxGdW5jdGlvbi4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2xlYW5zIHVwIHRoZSB3b3JrYXJvdW5kIGluIEludGwu
TnVtYmVyRm9ybWF0IGFuZCBJbnRsLkRhdGVUaW1lRm9ybWF0LgorICAgICAgICBUaG9zZSBjb2Rl
IGFyZSBsYXJnZWx5IGR1cGxpY2F0ZS4gVGhpcyBpcyBub3cgZXh0cmFjdGVkIGludG8KKyAgICAg
ICAgY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3Ry
dWN0b3IuIFRoaXMgY2xlYW4gdXAgZG9lcyBub3QKKyAgICAgICAgaGF2ZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcy4gVGhleSBhcmUgYWxyZWFkeSB0ZXN0ZWQgaW4gTGF5b3V0VGVzdHMvanMvaW50bC1k
YXRldGltZWZvcm1hdAorICAgICAgICBhbmQgTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3Jt
YXQuCisKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOgorICAgICAgICAoSlNDOjpjYWxsSW50bENv
bGxhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVG
b3JtYXQpOgorICAgICAgICAoSlNDOjpjYWxsSW50bERhdGVUaW1lRm9ybWF0KToKKyAgICAgICAg
KiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6
OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6Y2Fs
bEludGxOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0
ZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRG
b3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9pbnRsLWNv
bnN0cnVjdG9ycy13aXRoLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRocm93Lm5ldy5FcnJvci5FbXB0eSk6CisgICAgICAgICh0aHJvdy5uZXcuRXJyb3Ip
OgorICAgICAgICAoc2hvdWxkQmUuRW1wdHkpOgorCiAyMDE2LTA1LTE0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIExlZ2FjeVByb2ZpbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRl
eCA0NTdlYWFiZTNjZGQyYWU1NThjMDU1MjM2OGQ3ZTNiNTUwMmJkMmYxLi5mN2NhNGQ0MTVlNTM5
NzZkMTBiYTZmODYwY2ViNTg2ODhhZjQ2ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUNvbGxhdG9yKiBjb2xsYXRvcikg
Y29uc3QKICAgICAgICAgdWNvbF9jbG9zZShjb2xsYXRvcik7CiB9CiAKLUludGxDb2xsYXRvciog
SW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCitJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Io
dm0sIGNvbnN0cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAgICBJbnRsQ29sbGF0b3Iq
IGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvcj4odm0uaGVh
cCkpIEludGxDb2xsYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCBhN2FkZGY5NDgxNTY0NjkyNDY4MGI2ZTFhNWYx
OWQxNTE1OGQ3ZWNiLi40Yzk0NTVmNTBiYzNkNzlhMzY0NjE3N2FkNmU2N2IzNWFjZWUyYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAot
ICAgIHN0YXRpYyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKik7CisgICAgc3RhdGljIEludGxDb2xsYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAppbmRl
eCA2NDM4ZDZkNTNhMDE3YzUwZjI1YzFlZDFhNWNjZTkyN2IyMTMzZTdkLi41YTEyOGVkNjk3YWMy
ZmNiOTZkOWIzMmE3MmJkMjc1NTM1YWY5NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCkBAIC04OCwy
NyArODgsMTYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgLy8gMTAuMS4yIEludGwuQ29s
bGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJ
ZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVu
Y3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgotICAgIEpTVmFs
dWUgbmV3VGFyZ2V0ID0gc3RhdGUtPm5ld1RhcmdldCgpOwotICAgIGlmIChuZXdUYXJnZXQuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgbmV3VGFyZ2V0ID0gc3RhdGUtPmNhbGxlZSgpOwotCiAgICAg
Ly8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rh
cmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCi0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0g
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nh
c3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpKTsKLSAgICBpZiAo
Y29sbGF0b3IgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihuZXdU
YXJnZXQpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIGFzT2Jq
ZWN0KGNvbGxhdG9yKS0+c2V0UHJvdG90eXBlKHZtLCBzdGF0ZSwgcHJvdG8pOwotICAgICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7Ci0gICAgfQotCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxDb2xsYXRv
ckNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7Cisg
ICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENv
bGxhdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNvbGxh
dG9yKTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxv
Y2FsZXMsIG9wdGlvbnMpLgotICAgIEpTVmFsdWUgbG9jYWxlcyA9IHN0YXRlLT5hcmd1bWVudCgw
KTsKLSAgICBKU1ZhbHVlIG9wdGlvbnMgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgY29sbGF0
b3ItPmluaXRpYWxpemVDb2xsYXRvcigqc3RhdGUsIGxvY2FsZXMsIG9wdGlvbnMpOworICAgIGNv
bGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0
YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7
CiB9CiAKQEAgLTExOCwxNyArMTA3LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICAvLyAxLiBJZiBO
ZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rp
b24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1Rh
cmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAg
ICAvLyAyLiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3
VGFyZ2V0LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
LSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpz
Q2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkpOworICAgIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogCisgICAgLy8gRklYTUU6IENvbGxhdG9yIGRvZXMg
bm90IGdldCB0aGUgd29ya2Fyb3VuZCBmb3IgRUNNQS00MDIgMS4wIGNvbXBhdGliaWxpdHkuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQorCisg
ICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQo
Y29sbGF0b3IpLgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNy
ZWF0ZSh2bSwgY2FsbGVlLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKICAgICBBU1NFUlQoY29sbGF0
b3IpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9j
YWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0gc3RhdGUtPmFyZ3VtZW50KDAp
OwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAgICBjb2xsYXRv
ci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgbG9jYWxlcywgb3B0aW9ucyk7CisgICAgY29s
bGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3Rh
dGUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKaW5kZXggZmM4ODI4ZTFlOGY2YjM2YTljYzRkNzY3ZmM4OTk2OTY4ZjU5NWNh
My4uNDgzODljZDNiMjU0YjhhMzllYzEwNTE4NTFhOWNjNTRlYjc5Y2NlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBA
IC01Niw5ICs1Niw5IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpVRGF0ZUZvcm1hdERlbGV0
ZXI6Om9wZXJhdG9yKCkoVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiAgICAgICAgIHVkYXRfY2xv
c2UoZGF0ZUZvcm1hdCk7CiB9CiAKLUludGxEYXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IpCitJbnRsRGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZt
LmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5kYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRl
VGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCBhMjVjMTYwNWNlZjczNzA2OTI1NDgz
NTY0YTI5ZjBjODFkZWJiOTE0Li5hYTdmYjI1MzViNjY0ODc1MjlmZTVjYTRiMDE5YzVmMmE0MWYy
NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0
cnVjdGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXQqIGNy
ZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIElu
dGxEYXRlVGltZUZvcm1hdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA1
YjBlNWYwNzBkMWFiNWIyZTlhOTQ1NTk4ZjlmZjM4MjRmNmUxYWNhLi41OTEyNTU1ODc1MTI2MDJh
YjM3NThiYTA4NWI0MGE4OGIzMTdkMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCkBAIC04NywyNyArODgsMTYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUKIHsKICAgICAv
LyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdU
YXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBi
ZSBOZXdUYXJnZXQuCi0gICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSBzdGF0ZS0+bmV3VGFyZ2V0KCk7
Ci0gICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQotICAgICAgICBuZXdUYXJnZXQgPSBz
dGF0ZS0+Y2FsbGVlKCk7Ci0KICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5h
cnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUlKS4KLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkpOwotICAgIGlm
IChkYXRlVGltZUZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0
KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsK
LSAgICAgICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5cGUodm0sIHN0YXRl
LCBwcm90byk7Ci0gICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1Rh
cmdldCgpLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoZGF0ZVRp
bWVGb3JtYXQpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChk
YXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0g
c3RhdGUtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVu
dCgxKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpzdGF0
ZSwgbG9jYWxlcywgb3B0aW9ucyk7CisgICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKIH0KIApAQCAt
MTE3LDM2ICsxMDcsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0
IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBj
YWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmls
aXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBk
YXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odGhpc1Zh
bHVlKTsKLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7
Ci0gICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKHN0YXRlLCB0aGlzVmFs
dWUsIHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KHN0YXRlKTsKLSAgICAgICAgICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLQotICAgICAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmNyZWF0ZSh2bSwgY2FsbGVlKTsKLSAgICAgICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1
bWVudCgxKSk7Ci0gICAgICAgICAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICAg
ICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW50bFN1
YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lLCBkYXRlVGltZUZvcm1hdCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0
b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KLSAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCi0gICAgZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgY2FsbGVlKTsKLQotICAgIC8vIDQuIFJldHVybiBJbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgot
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkYXRlVGltZUZvcm1hdCk7CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzY3OQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50
bERhdGVUaW1lRm9ybWF0Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0g
KFZNJiB2bSkgeworICAgICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlD
cmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUl
KS4KKyAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgICAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGUodm0sIGNhbGxlZS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAg
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBkYXRl
VGltZUZvcm1hdDsKKyAgICB9KSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IGU2ODM1MTVlZjU0
OTMwZDgxNTU3MjVlNjM3YTIzODQzMGQ4NzYxNmEuLjkzNzkzODI3Yzg5ZWZkMzJlNjY5YjI2YWYz
ZDBiNjI5OGNmODdlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTE5LDYgKzEx
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0
ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
KTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3
aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0ZikKICAgICAg
ICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnRsU3Vic3RpdHV0
ZVZhbHVlUHJpdmF0ZU5hbWUpKTsKIApAQCAtMTU1LDYgKzE1Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEt
NDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQogICAg
ICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
c3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+
aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMDZmN2U5NWY0Y2M5
MDJmMzg2YTFjN2MwZjI4MGQ3YjgyZjgxZWM2MC4uZWNlNWZhNWIwMTFiYmE0MDMzMmU3ZDUxMTli
MWFkZjdlN2E4MDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3IKICAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwogfQogCi1JbnRsTnVtYmVy
Rm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQorSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE51
bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJl
ckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5udW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxO
dW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAwMTA3YjEzNzk5NTYwMDA1MjU1YTdiNTE0
ZjllNDkxMzBlZmE2NDY5Li4yMzgxNzJiODc4ZDk0MWU5ZGY1ZDhlMTIyZjA1YzRkY2UxM2FkNmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVP
YmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiBjcmVhdGUoVk0mLCBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1h
dCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDBhMTEwNzhmZTU2NDQ4OWFlMzIw
ZmYzMDRjZjRlOWNmNTk1NDYxNzguLjhmZTU0NGYyYWIwYTNkMjQwNjQyMDdkYmFlY2M2ZTZjMjJl
YTk5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC04NywyNyArODgsMTYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1h
dChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAo
W2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCi0gICAgSlNWYWx1ZSBuZXdU
YXJnZXQgPSBzdGF0ZS0+bmV3VGFyZ2V0KCk7Ci0gICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICBuZXdUYXJnZXQgPSBzdGF0ZS0+Y2FsbGVlKCk7Ci0KICAgICAvLyAyLiBM
ZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rhcmdl
dCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwot
ICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNy
ZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxs
ZWUoKSkpOwotICAgIGlmIChudW1iZXJGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKj4obmV3VGFyZ2V0KSkgewotICAgICAgICBKU1ZhbHVlIHByb3Rv
ID0gYXNPYmplY3QobmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUpOwotICAgICAgICBhc09iamVjdChudW1iZXJGb3JtYXQpLT5zZXRQcm90b3R5cGUo
dm0sIHN0YXRlLCBwcm90byk7Ci0gICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICAvLyAz
LiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgorICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRl
LT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5jYWxsZWUoKSktPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBpZiAoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQobnVtYmVyRm9y
bWF0KTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0gc3RhdGUtPmFy
Z3VtZW50KDApOwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAg
ICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRlLCBsb2NhbGVzLCBv
cHRpb25zKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOwogfQogCkBAIC0xMTcsMzYgKzEwNywyMCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChF
eGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRv
IHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRl
cm5zLgotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0
YXRlLT5jYWxsZWUoKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxOdW1iZXJGb3JtYXQqPih0aGlzVmFsdWUpOwotICAgIGlmICghbnVtYmVyRm9ybWF0KSB7
Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhh
c0luc3RhbmNlKHN0YXRlLCB0aGlzVmFsdWUsIHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KHN0YXRlKTsKLSAgICAgICAg
ICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICAgICAgbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUpOwotICAgICAgICAgICAgbnVt
YmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwotICAgICAgICAgICAgaWYgKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSwgbnVtYmVyRm9ybWF0KTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVG
cm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCi0gICAg
Ly8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KLSAgICBudW1iZXJGb3JtYXQgPSBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZSk7Ci0KLSAgICAvLyA0LiBSZXR1cm4g
SW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgot
ICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdCk7CisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBj
b21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQorICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRG
b3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+
dGhpc1ZhbHVlKCksIGNhbGxlZSwgWyZdIChWTSYgdm0pIHsKKyAgICAgICAgLy8gMi4gTGV0IG51
bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVO
dW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVt
YmVyRm9ybWF0KS4KKyAgICAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgp
KTsKKyAgICAgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CisKKyAgICAgICAgLy8gNC4gUmV0dXJu
IEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICByZXR1cm4gbnVt
YmVyRm9ybWF0OworICAgIH0pKTsKIH0KIAogQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggN2NkYmViNGEyOWVmMWI5MWIy
OTI3N2E2YTE4NmU4YjRkOWVlNjEzOS4uYjg3ODE1ODE5MDcwOGM2MWU3YzI4MmE0NzY2YzIwMDkx
OTYzZTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQoRXhlY1N0YXRlKiBzdAogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWlj
Q2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEu
MCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIW5mKQogICAgICAgICBuZiA9IGpzRHluYW1p
Y0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0
YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSkp
OwogCkBAIC0xNDMsNiArMTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3QKICAgICBJbnRs
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8g
cHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVy
bnMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3
OQogICAgIGlmICghbnVtYmVyRm9ybWF0KQogICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFt
aWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBz
dGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTI5ZDk4NTUzOGY1Yjg4MmMwMGNkOWRjZjAzNDczYjA3YmVjNjRj
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsSW5zdGFuY2UsIHR5cGVuYW1lIENvbnN0cnVjdG9yLCB0eXBl
bmFtZSBGYWN0b3J5PgorSlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3Vu
ZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgQ29uc3RydWN0b3IqIGNhbGxlZSwgRmFjdG9yeSBmYWN0b3J5KQoreworICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEu
MCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM2NzkKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGlmICgh
anNEeW5hbWljQ2FzdDxJbnRsSW5zdGFuY2UqPih0aGlzVmFsdWUpKSB7CisgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSk7CisgICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKCZzdGF0
ZSwgdGhpc1ZhbHVlLCBwcm90b3R5cGUpKSB7CisgICAgICAgICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHRoaXNWYWx1ZS50b09iamVjdCgmc3RhdGUpOworICAgICAgICAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgICAgICAgICBJbnRsSW5zdGFuY2UqIGluc3RhbmNlID0gZmFjdG9yeSh2bSk7CisgICAg
ICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lLCBpbnN0YW5j
ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBmYWN0b3J5KHZtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvaW50bC1jb25zdHJ1Y3RvcnMtd2l0aC1wcm94eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50bC1jb25zdHJ1Y3RvcnMtd2l0aC1wcm94eS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOWI3OGVkMmQxNDRiN2EwZGZkMWUzOGVhYzQ0YzA2N2Q1Y2VhYjgwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnRsLWNvbnN0
cnVjdG9ycy13aXRoLXByb3h5LmpzCkBAIC0wLDAgKzEsMzYgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit7CisgICAg
ZnVuY3Rpb24gRW1wdHkoKSB7CisgICAgfQorICAgIGxldCBwcm94eSA9IG5ldyBQcm94eShFbXB0
eSwge30pOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5Db2xsYXRvciwg
W10sIHByb3h5KSBpbnN0YW5jZW9mIEVtcHR5LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmNvbnN0cnVjdChJbnRsLkNvbGxhdG9yLCBbXSwgcHJveHkpLl9fcHJvdG9fXywgRW1wdHkucHJv
dG90eXBlKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwuTnVtYmVyRm9y
bWF0LCBbXSwgcHJveHkpIGluc3RhbmNlb2YgRW1wdHksIHRydWUpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuY29uc3RydWN0KEludGwuTnVtYmVyRm9ybWF0LCBbXSwgcHJveHkpLl9fcHJvdG9fXywg
RW1wdHkucHJvdG90eXBlKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwu
RGF0ZVRpbWVGb3JtYXQsIFtdLCBwcm94eSkgaW5zdGFuY2VvZiBFbXB0eSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5EYXRlVGltZUZvcm1hdCwgW10sIHByb3h5
KS5fX3Byb3RvX18sIEVtcHR5LnByb3RvdHlwZSk7Cit9CisKK3sKKyAgICBmdW5jdGlvbiBFbXB0
eSgpIHsKKyAgICB9CisgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShFbXB0eSwge30pOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1
Y3QoSW50bC5Db2xsYXRvciwgW10sIHByb3h5KSBpbnN0YW5jZW9mIEludGwuQ29sbGF0b3IsIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwuQ29sbGF0b3IsIFtdLCBw
cm94eSkuX19wcm90b19fLCBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSk7CisKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmNvbnN0cnVjdChJbnRsLk51bWJlckZvcm1hdCwgW10sIHByb3h5KSBpbnN0YW5j
ZW9mIEludGwuTnVtYmVyRm9ybWF0LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmNvbnN0
cnVjdChJbnRsLk51bWJlckZvcm1hdCwgW10sIHByb3h5KS5fX3Byb3RvX18sIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSk7CisKKyAgICBzaG91bGRCZShSZWZsZWN0LmNvbnN0cnVjdChJbnRs
LkRhdGVUaW1lRm9ybWF0LCBbXSwgcHJveHkpIGluc3RhbmNlb2YgSW50bC5EYXRlVGltZUZvcm1h
dCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5EYXRlVGltZUZv
cm1hdCwgW10sIHByb3h5KS5fX3Byb3RvX18sIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278973</attachid>
            <date>2016-05-15 11:12:56 -0700</date>
            <delta_ts>2016-05-15 14:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157082-20160516031350.patch</filename>
            <type>text/plain</type>
            <size>32667</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OGIyNWNjMjhiMDUyOTk1M2M3ZWYwY2U4NWM5NmMyZjM5OWFjZmY4Li45N2EzZjQ2ZDdhOWFkNGQ5
NzIxNDYyZjA4MTgzOTlmNjViYWQ1NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0wNS0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgSW50bCBjb25zdHJ1Y3RvcnM7IHVzaW5nIEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwODIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCBJbnRsIGNvbnN0cnVjdG9y
cyByZXRyaWV2ZSAicHJvdG90eXBlIiB0byBpbmhlcml0IHRoZSAibmV3LnRhcmdldCIuCisgICAg
ICAgIEF0IHRoYXQgdGltZSwgdGhpcyBtaXMtYXNzdW1lZCB0aGF0IGdldERpcmVjdCgpIGFsd2F5
cyByZXR1cm5zIG1lYW5pbmdmdWwgSlMgdmFsdWUuCisgICAgICAgIEFjdHVhbGx5LCBpdCByZXR1
cm5zIGFuIGVtcHR5IHZhbHVlIGlmIGEgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuCisKKyAgICAg
ICAgSW5zdGVhZCBvZiBmaXhpbmcgdGhpcyBhc3NlcnRpb24sIHdlIG5vdyB1c2UgSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUKKyAgICAgICAgaW4gSW50bCBjb25zdHJ1
Y3RvcnMuIEl0IGlzIG1vZGVybiBhbmQgcHJlZmVyYWJsZSB3YXkgc2luY2UgaXQgY2FuIGNhY2hl
IHRoZSBkZXJpdmVkCisgICAgICAgIHN0cnVjdHVyZXMgaW4gSW50ZXJuYWxGdW5jdGlvbi4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2xlYW5zIHVwIHRoZSB3b3JrYXJvdW5kIGluIEludGwu
TnVtYmVyRm9ybWF0IGFuZCBJbnRsLkRhdGVUaW1lRm9ybWF0LgorICAgICAgICBUaG9zZSBjb2Rl
IGFyZSBsYXJnZWx5IGR1cGxpY2F0ZS4gVGhpcyBpcyBub3cgZXh0cmFjdGVkIGludG8KKyAgICAg
ICAgY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3Ry
dWN0b3IuIFRoaXMgY2xlYW4gdXAgZG9lcyBub3QKKyAgICAgICAgaGF2ZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcy4gVGhleSBhcmUgYWxyZWFkeSB0ZXN0ZWQgaW4gTGF5b3V0VGVzdHMvanMvaW50bC1k
YXRldGltZWZvcm1hdAorICAgICAgICBhbmQgTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3Jt
YXQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEludGxDb2xsYXRvcik6CisgICAgICAgIChKU0M6OmNhbGxJbnRsQ29sbGF0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1h
dCk6CisgICAgICAgIChKU0M6OmNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQpOgorICAgICAgICAoSlNDOjpjYWxsSW50
bE51bWJlckZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxl
Z2FjeUludGxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2ludGwtY29uc3Ry
dWN0b3JzLXdpdGgtcHJveHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAodGhyb3cubmV3LkVycm9yLkVtcHR5KToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6Cisg
ICAgICAgIChzaG91bGRCZS5FbXB0eSk6CisKIDIwMTYtMDUtMTQgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgTGVnYWN5UHJvZmlsZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGY5ZGVlMmI2MmQ0OTQ3MDE0OGZlMDBiNGVm
YzFkOTYwOWY4Zjc4ZC4uZTczY2YyMzE0MjJhYzIxOTgyNzQ4ZmU4NDc5NjUwNTcyNmM3OTNkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzcsNiArMTIzNyw3IEBACiAJCTcw
NUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUE4MUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2xPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MDVCNDFCMTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUE5
MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovOyB9OwogCQk3MDVCNDFC
MjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBQTFBNkU1MDFFMDA3MTY3NTcgLyog
U3ltYm9sUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDhFQkUy
MzFDRThGMzUwMDA0NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDk0QzRERTFBRTQzOTUzMDA0MUEy
RUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUgLyogQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgKi87IH07CiAJCTcwOTRDNERGMUFFNDM5NTMwMDQx
QTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDk0QzRERDFBRTQzOTUzMDA0MUEyRUUgLyogQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcwOUZCODY3MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4
NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgKi87IH07CkBAIC0zNDA4LDYgKzM0
MDksNyBAQAogCQk3MDVCNDFBODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUFBMUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcwOEVCRTIzMUNFOEYzNTAwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzA5NEM0REQxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2MTFBRTMzNUM2
MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2Vha1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDky
LDYgKzU0OTQsNyBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzA4RUJFMjMxQ0U4
RjM1MDAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggKi8sCiAJCQkJRENGM0Q1NjQxQ0Qy
OTQ2ODAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgKi8sCiAJCQkJRENGM0Q1NjUx
Q0QyOTQ2ODAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5oICovLAogCQkJCURDRjNENTY2
MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmggKi8sCkBAIC03
NDgyLDYgKzc0ODUsNyBAQAogCQkJCTBGRTA1MDE5MUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmlj
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMg
LyogR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkMw
MUMxMTA0MUEwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFC
MDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRl
eCA0NTdlYWFiZTNjZGQyYWU1NThjMDU1MjM2OGQ3ZTNiNTUwMmJkMmYxLi5mN2NhNGQ0MTVlNTM5
NzZkMTBiYTZmODYwY2ViNTg2ODhhZjQ2ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBJbnRsQ29s
bGF0b3I6OlVDb2xsYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUNvbGxhdG9yKiBjb2xsYXRvcikg
Y29uc3QKICAgICAgICAgdWNvbF9jbG9zZShjb2xsYXRvcik7CiB9CiAKLUludGxDb2xsYXRvciog
SW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCitJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Io
dm0sIGNvbnN0cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAgICBJbnRsQ29sbGF0b3Iq
IGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvcj4odm0uaGVh
cCkpIEludGxDb2xsYXRvcih2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCBhN2FkZGY5NDgxNTY0NjkyNDY4MGI2ZTFhNWYx
OWQxNTE1OGQ3ZWNiLi40Yzk0NTVmNTBiYzNkNzlhMzY0NjE3N2FkNmU2N2IzNWFjZWUyYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAot
ICAgIHN0YXRpYyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKik7CisgICAgc3RhdGljIEludGxDb2xsYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAppbmRl
eCA2NDM4ZDZkNTNhMDE3YzUwZjI1YzFlZDFhNWNjZTkyN2IyMTMzZTdkLi41YTEyOGVkNjk3YWMy
ZmNiOTZkOWIzMmE3MmJkMjc1NTM1YWY5NDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCkBAIC04OCwy
NyArODgsMTYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgLy8gMTAuMS4yIEludGwuQ29s
bGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJ
ZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVu
Y3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgotICAgIEpTVmFs
dWUgbmV3VGFyZ2V0ID0gc3RhdGUtPm5ld1RhcmdldCgpOwotICAgIGlmIChuZXdUYXJnZXQuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgbmV3VGFyZ2V0ID0gc3RhdGUtPmNhbGxlZSgpOwotCiAgICAg
Ly8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rh
cmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCi0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0g
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nh
c3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpKTsKLSAgICBpZiAo
Y29sbGF0b3IgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihuZXdU
YXJnZXQpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIGFzT2Jq
ZWN0KGNvbGxhdG9yKS0+c2V0UHJvdG90eXBlKHZtLCBzdGF0ZSwgcHJvdG8pOwotICAgICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7Ci0gICAgfQotCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxDb2xsYXRv
ckNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7Cisg
ICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENv
bGxhdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIHN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKGNvbGxh
dG9yKTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxv
Y2FsZXMsIG9wdGlvbnMpLgotICAgIEpTVmFsdWUgbG9jYWxlcyA9IHN0YXRlLT5hcmd1bWVudCgw
KTsKLSAgICBKU1ZhbHVlIG9wdGlvbnMgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgY29sbGF0
b3ItPmluaXRpYWxpemVDb2xsYXRvcigqc3RhdGUsIGxvY2FsZXMsIG9wdGlvbnMpOworICAgIGNv
bGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0
YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7
CiB9CiAKQEAgLTExOCwxNyArMTA3LDE5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICAvLyAxLiBJZiBO
ZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rp
b24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgogICAgIC8vIE5ld1Rh
cmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCiAKLSAg
ICAvLyAyLiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3
VGFyZ2V0LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
LSAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpz
Q2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkpOworICAgIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjYWxsZWUgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogCisgICAgLy8gRklYTUU6IENvbGxhdG9yIGRvZXMg
bm90IGdldCB0aGUgd29ya2Fyb3VuZCBmb3IgRUNNQS00MDIgMS4wIGNvbXBhdGliaWxpdHkuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQorCisg
ICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCiAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQo
Y29sbGF0b3IpLgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNy
ZWF0ZSh2bSwgY2FsbGVlLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKICAgICBBU1NFUlQoY29sbGF0
b3IpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9j
YWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0gc3RhdGUtPmFyZ3VtZW50KDAp
OwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAgICBjb2xsYXRv
ci0+aW5pdGlhbGl6ZUNvbGxhdG9yKCpzdGF0ZSwgbG9jYWxlcywgb3B0aW9ucyk7CisgICAgY29s
bGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3Rh
dGUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKaW5kZXggZmM4ODI4ZTFlOGY2YjM2YTljYzRkNzY3ZmM4OTk2OTY4ZjU5NWNh
My4uNDgzODljZDNiMjU0YjhhMzllYzEwNTE4NTFhOWNjNTRlYjc5Y2NlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBA
IC01Niw5ICs1Niw5IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpVRGF0ZUZvcm1hdERlbGV0
ZXI6Om9wZXJhdG9yKCkoVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiAgICAgICAgIHVkYXRfY2xv
c2UoZGF0ZUZvcm1hdCk7CiB9CiAKLUludGxEYXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IpCitJbnRsRGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZt
LmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5kYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRl
VGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKICAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZXR1cm4gZm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAppbmRleCBhMjVjMTYwNWNlZjczNzA2OTI1NDgz
NTY0YTI5ZjBjODFkZWJiOTE0Li5hYTdmYjI1MzViNjY0ODc1MjlmZTVjYTRiMDE5YzVmMmE0MWYy
NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0
cnVjdGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXQqIGNy
ZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIElu
dGxEYXRlVGltZUZvcm1hdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAogICAgIERFQ0xBUkVfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA1
YjBlNWYwNzBkMWFiNWIyZTlhOTQ1NTk4ZjlmZjM4MjRmNmUxYWNhLi41OTEyNTU1ODc1MTI2MDJh
YjM3NThiYTA4NWI0MGE4OGIzMTdkMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCkBAIC04NywyNyArODgsMTYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUKIHsKICAgICAv
LyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdU
YXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBi
ZSBOZXdUYXJnZXQuCi0gICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSBzdGF0ZS0+bmV3VGFyZ2V0KCk7
Ci0gICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQotICAgICAgICBuZXdUYXJnZXQgPSBz
dGF0ZS0+Y2FsbGVlKCk7Ci0KICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5h
cnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUlKS4KLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSkpOwotICAgIGlm
IChkYXRlVGltZUZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0
KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsK
LSAgICAgICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5cGUodm0sIHN0YXRl
LCBwcm90byk7Ci0gICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShzdGF0ZSwgc3RhdGUtPm5ld1Rh
cmdldCgpLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBpZiAoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQoZGF0ZVRp
bWVGb3JtYXQpOwogCiAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChk
YXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0g
c3RhdGUtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVu
dCgxKTsKLSAgICBkYXRlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KCpzdGF0
ZSwgbG9jYWxlcywgb3B0aW9ucyk7CisgICAgZGF0ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKIH0KIApAQCAt
MTE3LDM2ICsxMDcsMjAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0
IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBj
YWxsZWUgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2Fs
bGVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmls
aXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBk
YXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odGhpc1Zh
bHVlKTsKLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7
Ci0gICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKHN0YXRlLCB0aGlzVmFs
dWUsIHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KHN0YXRlKTsKLSAgICAgICAgICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLQotICAgICAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmNyZWF0ZSh2bSwgY2FsbGVlKTsKLSAgICAgICAgICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1
bWVudCgxKSk7Ci0gICAgICAgICAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICAg
ICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW50bFN1
YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lLCBkYXRlVGltZUZvcm1hdCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0
b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KLSAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCi0gICAgZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgY2FsbGVlKTsKLQotICAgIC8vIDQuIFJldHVybiBJbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgot
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkYXRlVGltZUZvcm1hdCk7CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzY3OQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50
bERhdGVUaW1lRm9ybWF0Pigqc3RhdGUsIHN0YXRlLT50aGlzVmFsdWUoKSwgY2FsbGVlLCBbJl0g
KFZNJiB2bSkgeworICAgICAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlD
cmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUl
KS4KKyAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgICAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGUodm0sIGNhbGxlZS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAg
ICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBkYXRl
VGltZUZvcm1hdDsKKyAgICB9KSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IGU2ODM1MTVlZjU0
OTMwZDgxNTU3MjVlNjM3YTIzODQzMGQ4NzYxNmEuLjkzNzkzODI3Yzg5ZWZkMzJlNjY5YjI2YWYz
ZDBiNjI5OGNmODdlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTE5LDYgKzEx
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0
ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
KTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3
aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0ZikKICAgICAg
ICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnRsU3Vic3RpdHV0
ZVZhbHVlUHJpdmF0ZU5hbWUpKTsKIApAQCAtMTU1LDYgKzE1Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEt
NDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQogICAg
ICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
c3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+
aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMDZmN2U5NWY0Y2M5
MDJmMzg2YTFjN2MwZjI4MGQ3YjgyZjgxZWM2MC4uZWNlNWZhNWIwMTFiYmE0MDMzMmU3ZDUxMTli
MWFkZjdlN2E4MDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3IKICAgICAgICAgdW51bV9jbG9zZShudW1iZXJGb3JtYXQpOwogfQogCi1JbnRsTnVtYmVy
Rm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQorSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgSW50bE51
bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJl
ckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5udW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxO
dW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSk7CiAgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmV0dXJuIGZvcm1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAwMTA3YjEzNzk5NTYwMDA1MjU1YTdiNTE0
ZjllNDkxMzBlZmE2NDY5Li4yMzgxNzJiODc4ZDk0MWU5ZGY1ZDhlMTIyZjA1YzRkY2UxM2FkNmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXQgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVP
YmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiBjcmVhdGUoVk0mLCBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1h
dCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IDBhMTEwNzhmZTU2NDQ4OWFlMzIw
ZmYzMDRjZjRlOWNmNTk1NDYxNzguLjhmZTU0NGYyYWIwYTNkMjQwNjQyMDdkYmFlY2M2ZTZjMjJl
YTk5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC04NywyNyArODgsMTYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1h
dChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAo
W2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCi0gICAgSlNWYWx1ZSBuZXdU
YXJnZXQgPSBzdGF0ZS0+bmV3VGFyZ2V0KCk7Ci0gICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICBuZXdUYXJnZXQgPSBzdGF0ZS0+Y2FsbGVlKCk7Ci0KICAgICAvLyAyLiBM
ZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rhcmdl
dCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwot
ICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNy
ZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxs
ZWUoKSkpOwotICAgIGlmIChudW1iZXJGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKj4obmV3VGFyZ2V0KSkgewotICAgICAgICBKU1ZhbHVlIHByb3Rv
ID0gYXNPYmplY3QobmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUpOwotICAgICAgICBhc09iamVjdChudW1iZXJGb3JtYXQpLT5zZXRQcm90b3R5cGUo
dm0sIHN0YXRlLCBwcm90byk7Ci0gICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICAvLyAz
LiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgorICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRl
LT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5jYWxsZWUoKSktPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBpZiAoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgc3RydWN0dXJlKTsKICAgICBBU1NFUlQobnVtYmVyRm9y
bWF0KTsKIAogICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCi0gICAgSlNWYWx1ZSBsb2NhbGVzID0gc3RhdGUtPmFy
Z3VtZW50KDApOwotICAgIEpTVmFsdWUgb3B0aW9ucyA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAg
ICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRlLCBsb2NhbGVzLCBv
cHRpb25zKTsKKyAgICBudW1iZXJGb3JtYXQtPmluaXRpYWxpemVOdW1iZXJGb3JtYXQoKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCksIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOwogfQogCkBAIC0xMTcsMzYgKzEwNywyMCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChF
eGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCiAgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KIAotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRv
IHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRl
cm5zLgotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY2FsbGVlID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KHN0
YXRlLT5jYWxsZWUoKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxOdW1iZXJGb3JtYXQqPih0aGlzVmFsdWUpOwotICAgIGlmICghbnVtYmVyRm9ybWF0KSB7
Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhh
c0luc3RhbmNlKHN0YXRlLCB0aGlzVmFsdWUsIHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KHN0YXRlKTsKLSAgICAgICAg
ICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICAgICAgbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUpOwotICAgICAgICAgICAgbnVt
YmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwotICAgICAgICAgICAgaWYgKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSwgbnVtYmVyRm9ybWF0KTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVG
cm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCi0gICAg
Ly8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KLSAgICBudW1iZXJGb3JtYXQgPSBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGNhbGxlZSk7Ci0KLSAgICAvLyA0LiBSZXR1cm4g
SW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgot
ICAgIG51bWJlckZvcm1hdC0+aW5pdGlhbGl6ZU51bWJlckZvcm1hdCgqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdCk7CisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBj
b21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQorICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRG
b3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bE51bWJlckZvcm1hdD4oKnN0YXRlLCBzdGF0ZS0+
dGhpc1ZhbHVlKCksIGNhbGxlZSwgWyZdIChWTSYgdm0pIHsKKyAgICAgICAgLy8gMi4gTGV0IG51
bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVO
dW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICAgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVt
YmVyRm9ybWF0KS4KKyAgICAgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBjYWxsZWUtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgp
KTsKKyAgICAgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CisKKyAgICAgICAgLy8gNC4gUmV0dXJu
IEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBzdGF0ZS0+YXJndW1lbnQoMSkpOworICAgICAgICByZXR1cm4gbnVt
YmVyRm9ybWF0OworICAgIH0pKTsKIH0KIAogQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggN2NkYmViNGEyOWVmMWI5MWIy
OTI3N2E2YTE4NmU4YjRkOWVlNjEzOS4uYjg3ODE1ODE5MDcwOGM2MWU3YzI4MmE0NzY2YzIwMDkx
OTYzZTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQoRXhlY1N0YXRlKiBzdAogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWlj
Q2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEu
MCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIW5mKQogICAgICAgICBuZiA9IGpzRHluYW1p
Y0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0
YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSkp
OwogCkBAIC0xNDMsNiArMTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3QKICAgICBJbnRs
TnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8g
cHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVy
bnMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3
OQogICAgIGlmICghbnVtYmVyRm9ybWF0KQogICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFt
aWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBz
dGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTI5ZDk4NTUzOGY1Yjg4MmMwMGNkOWRjZjAzNDczYjA3YmVjNjRj
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsSW5zdGFuY2UsIHR5cGVuYW1lIENvbnN0cnVjdG9yLCB0eXBl
bmFtZSBGYWN0b3J5PgorSlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3Vu
ZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgQ29uc3RydWN0b3IqIGNhbGxlZSwgRmFjdG9yeSBmYWN0b3J5KQoreworICAgIC8vIEZJ
WE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEu
MCBjYWxsL2FwcGx5IHBhdHRlcm5zLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM2NzkKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGlmICgh
anNEeW5hbWljQ2FzdDxJbnRsSW5zdGFuY2UqPih0aGlzVmFsdWUpKSB7CisgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSk7CisgICAgICAgIGlmIChKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKCZzdGF0
ZSwgdGhpc1ZhbHVlLCBwcm90b3R5cGUpKSB7CisgICAgICAgICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHRoaXNWYWx1ZS50b09iamVjdCgmc3RhdGUpOworICAgICAgICAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgICAgICAgICBJbnRsSW5zdGFuY2UqIGluc3RhbmNlID0gZmFjdG9yeSh2bSk7CisgICAg
ICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lLCBpbnN0YW5j
ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBmYWN0b3J5KHZtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvaW50bC1jb25zdHJ1Y3RvcnMtd2l0aC1wcm94eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50bC1jb25zdHJ1Y3RvcnMtd2l0aC1wcm94eS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOWI3OGVkMmQxNDRiN2EwZGZkMWUzOGVhYzQ0YzA2N2Q1Y2VhYjgwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnRsLWNvbnN0
cnVjdG9ycy13aXRoLXByb3h5LmpzCkBAIC0wLDAgKzEsMzYgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit7CisgICAg
ZnVuY3Rpb24gRW1wdHkoKSB7CisgICAgfQorICAgIGxldCBwcm94eSA9IG5ldyBQcm94eShFbXB0
eSwge30pOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5Db2xsYXRvciwg
W10sIHByb3h5KSBpbnN0YW5jZW9mIEVtcHR5LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0
LmNvbnN0cnVjdChJbnRsLkNvbGxhdG9yLCBbXSwgcHJveHkpLl9fcHJvdG9fXywgRW1wdHkucHJv
dG90eXBlKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwuTnVtYmVyRm9y
bWF0LCBbXSwgcHJveHkpIGluc3RhbmNlb2YgRW1wdHksIHRydWUpOworICAgIHNob3VsZEJlKFJl
ZmxlY3QuY29uc3RydWN0KEludGwuTnVtYmVyRm9ybWF0LCBbXSwgcHJveHkpLl9fcHJvdG9fXywg
RW1wdHkucHJvdG90eXBlKTsKKworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwu
RGF0ZVRpbWVGb3JtYXQsIFtdLCBwcm94eSkgaW5zdGFuY2VvZiBFbXB0eSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5EYXRlVGltZUZvcm1hdCwgW10sIHByb3h5
KS5fX3Byb3RvX18sIEVtcHR5LnByb3RvdHlwZSk7Cit9CisKK3sKKyAgICBmdW5jdGlvbiBFbXB0
eSgpIHsKKyAgICB9CisgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShFbXB0eSwge30pOworCisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1
Y3QoSW50bC5Db2xsYXRvciwgW10sIHByb3h5KSBpbnN0YW5jZW9mIEludGwuQ29sbGF0b3IsIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZmxlY3QuY29uc3RydWN0KEludGwuQ29sbGF0b3IsIFtdLCBw
cm94eSkuX19wcm90b19fLCBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSk7CisKKyAgICBzaG91bGRC
ZShSZWZsZWN0LmNvbnN0cnVjdChJbnRsLk51bWJlckZvcm1hdCwgW10sIHByb3h5KSBpbnN0YW5j
ZW9mIEludGwuTnVtYmVyRm9ybWF0LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LmNvbnN0
cnVjdChJbnRsLk51bWJlckZvcm1hdCwgW10sIHByb3h5KS5fX3Byb3RvX18sIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSk7CisKKyAgICBzaG91bGRCZShSZWZsZWN0LmNvbnN0cnVjdChJbnRs
LkRhdGVUaW1lRm9ybWF0LCBbXSwgcHJveHkpIGluc3RhbmNlb2YgSW50bC5EYXRlVGltZUZvcm1h
dCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5jb25zdHJ1Y3QoSW50bC5EYXRlVGltZUZv
cm1hdCwgW10sIHByb3h5KS5fX3Byb3RvX18sIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
KTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>