<?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>174166</bug_id>
          
          <creation_ts>2017-07-05 11:30:14 -0700</creation_ts>
          <short_desc>FileMonitor should not be ref counted</short_desc>
          <delta_ts>2017-07-06 14:45:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325665</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-05 11:30:14 -0700</bug_when>
    <thetext>The current API for FileMonitor is fragile, because it requires the user to manually stop the monitor to make sure it is properly cleaned up.

This was done to make sure the event handler would never be left with a dangling this pointer. Instead, we should vend a WeakPtr to the closure, and check it when processing events to see if the FileMonitor was destroyed. If it was, we don&apos;t need to take any action.

This will allow the object to properly terminate monitoring when the object goes out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326141</commentid>
    <comment_count>1</comment_count>
      <attachid>314745</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 13:03:39 -0700</bug_when>
    <thetext>Created attachment 314745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326145</commentid>
    <comment_count>2</comment_count>
      <attachid>314746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 13:07:35 -0700</bug_when>
    <thetext>Created attachment 314746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326196</commentid>
    <comment_count>3</comment_count>
      <attachid>314746</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:42:42 -0700</bug_when>
    <thetext>Comment on attachment 314746
Patch

Looks good! Nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326197</commentid>
    <comment_count>4</comment_count>
      <attachid>314746</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:43:15 -0700</bug_when>
    <thetext>Comment on attachment 314746
Patch

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

&gt; Source/WebCore/platform/FileMonitor.cpp:-46
&gt; -}

Much simpler!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326199</commentid>
    <comment_count>5</comment_count>
      <attachid>314746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 14:45:08 -0700</bug_when>
    <thetext>Comment on attachment 314746
Patch

Clearing flags on attachment: 314746

Committed r219219: &lt;http://trac.webkit.org/changeset/219219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326200</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 14:45:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314745</attachid>
            <date>2017-07-06 13:03:39 -0700</date>
            <delta_ts>2017-07-06 13:07:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174166-20170706130338.patch</filename>
            <type>text/plain</type>
            <size>16633</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU5NjM5YzNjZTFlYjcw
M2NlODAwMGM3MzlhYTA4OWIzODJkZjYwNC4uNTQyNzY2YjRmNTkxYmI2ZTZjMjNmZGFhY2RjNjdl
NDAyZmQ1NTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA3LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsZU1vbml0b3Igc2hvdWxk
IG5vdCBiZSByZWYgY291bnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIEZpbGVNb25pdG9yIHRvIG5vIGxvbmdlciBiZSByZWZjb3VudGVk
LiBJdCB3YXMgcHJldmlvdXNseSBlYXN5IHRvIGxlYWsgaXQKKyAgICAgICAgYmVjYXVzZSB0aGUg
b2JqZWN0IHdvdWxkIHJlZiBpdHNlbGYgaW4gdmFyaW91cyBsYW1iZGFzLiBUaGUgY2xpZW50IHdv
dWxkIGhhdmUgdG8KKyAgICAgICAgZXhwbGljaXRlbHkgY2FsbCBGaWxlTW9uaXRvcjo6c3RvcE1v
bml0b3JpbmcoKSB3aGljaCB3YXMgZnJhZ2lsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
c2ltcGxpZmllcyB0aGUgY29kZSBhbmQgQVBJIGEgYml0IHNpbmNlIG5vIGxvbmdlciBhY3R1YWxs
eQorICAgICAgICByZXF1aXJlcyBzdGFydE1vbml0b3JpbmcoKSAvIHN0b3BNb25pdG9yaW5nKCkg
QVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
TW9uaXRvcjo6RmlsZU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6On5G
aWxlTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6Y3JlYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpzdGFydE1vbml0b3JpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OnN0b3BNb25pdG9yaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxl
TW9uaXRvcjo6RmlsZU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6On5G
aWxlTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6c3RhcnRNb25pdG9y
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpzdG9wTW9uaXRv
cmluZyk6IERlbGV0ZWQuCisKIDIwMTctMDctMDYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgZ2V0dGluZyB0aGUgY29u
dGVudCBvZiBXZWJHTC9XZWJHTDIgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwM2Y3NzU2ZTgyMWI2
MTQzYzViMDM2M2MxMDMxMGIzMTQ0MmIxNjJlLi41YzMxOGNlODkwMzhjODQ2YzY1YTQzMjkxYmE4
ZWNkN2ZmNDFlOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTctMDctMDYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBGaWxlTW9uaXRvciBzaG91
bGQgbm90IGJlIHJlZiBjb3VudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY29kZSB1c2luZyBGaWxlTW9uaXRvciB0byByZWZsZWN0IEFQ
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RvcE1vbml0b3JpbmdTdGF0aXN0aWNz
U3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorCisyMDE3LTA3LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgTW92ZSBSZXNvdXJjZUxvYWRPYnNlcnZlciBub3RpZmljYXRpb24gdGhyb3R0bGlu
ZyBsb2dpYyBmcm9tIFdlYlByb2Nlc3MgY2xhc3MgdG8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDE5NAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMmJkMmE5ZTUzODMxNjll
MzRlNWQyMGM3YzExNjE4Y2U0ZmYxMDlhYi4uNjg2YTA3ZmVhY2NkODE2MzFiYTliYzQ1OWU1ZTYw
OTJjZWM5YjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcApAQCAt
MjgsMzIgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEZpbGVNb25pdG9y
PiBGaWxlTW9uaXRvcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4m
JiBoYW5kbGVyUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9k
aWZpY2F0aW9uSGFuZGxlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlTW9uaXRv
cihwYXRoLCBXVEZNb3ZlKGhhbmRsZXJRdWV1ZSksIFdURk1vdmUobW9kaWZpY2F0aW9uSGFuZGxl
cikpKTsKLX0KLSAgICAKLUZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25zdCBTdHJpbmcmIHBh
dGgsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmls
ZUNoYW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpCi0gICAgOiBtX3BhdGgocGF0aCkK
LSAgICAsIG1fbW9kaWZpY2F0aW9uSGFuZGxlcihXVEZNb3ZlKG1vZGlmaWNhdGlvbkhhbmRsZXIp
KQotICAgICwgbV9oYW5kbGVyUXVldWUoV1RGTW92ZShoYW5kbGVyUXVldWUpKQotewotfQotICAg
IAotRmlsZU1vbml0b3I6On5GaWxlTW9uaXRvcigpCi17Ci0gICAgc3RvcE1vbml0b3JpbmcoKTsK
LX0KLSAgICAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIEZpbGVNb25pdG9yOjpzdGFydE1v
bml0b3JpbmcoKQorCitGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwgUmVm
PFdvcmtRdWV1ZT4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4mJikKIHsK
LSAgICAvLyBEbyBOb3RoaW5nCiB9Ci0gICAgCi12b2lkIEZpbGVNb25pdG9yOjpzdG9wTW9uaXRv
cmluZygpCisKK0ZpbGVNb25pdG9yOjp+RmlsZU1vbml0b3IoKQogewotICAgIC8vIERvIE5vdGhp
bmcKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
TW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCAx
YjZlMDc5MzlmOWZiMGJkZGQwNjI2OTk1YzE2YTUxNzE2NWQ3YjAxLi42NzI0Y2QxNjI1MmZiYWEz
MTMwZGU4OWQ2YzMxYTY0NGM1ZjdlNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25p
dG9yLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC0zNywyNiArMzYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGaWxlTW9u
aXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGaWxlTW9uaXRvcj4geworY2xhc3Mg
RmlsZU1vbml0b3IgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgRmlsZUNoYW5nZVR5cGUgewog
ICAgICAgICBNb2RpZmljYXRpb24sCiAgICAgICAgIFJlbW92YWwKICAgICB9OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlTW9uaXRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYs
IFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNo
YW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZp
bGVNb25pdG9yKGNvbnN0IFN0cmluZyYsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5GaWxlTW9uaXRvcigpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydE1vbml0b3JpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BN
b25pdG9yaW5nKCk7Ci0KIHByaXZhdGU6Ci0gICAgRmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwg
UmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hh
bmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcik7Ci0KLSAgICBTdHJpbmcgbV9wYXRoOwot
ICAgIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+IG1fbW9kaWZpY2F0aW9uSGFu
ZGxlcjsKLSAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1faGFuZGxlclF1ZXVlOwotCiAjaWYgVVNF
KENPQ09BX0VWRU5UX0xPT1ApCiAgICAgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1f
cGxhdGZvcm1Nb25pdG9yOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCA1ZTI5YzdlYzJjZGU0YjRhNGY1MjQ0MzBi
N2NkN2M4NTExMGVjOTAwLi4zOTVkZjc3NzE5YTA2NDMxYzc5MzdiZmU1M2U2ZmY4NWYxZTk0MTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29j
b2EubW0KQEAgLTI4LDYwICsyOCw1NiBAQAogCiAjaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotI2ltcG9ydCA8
d3RmL0Rpc3BhdGNoUHRyLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY29uc3RleHByIHVuc2lnbmVkIG1vbml0b3JNYXNrID0gRElTUEFU
Q0hfVk5PREVfREVMRVRFIHwgRElTUEFUQ0hfVk5PREVfV1JJVEUgfCBESVNQQVRDSF9WTk9ERV9S
RU5BTUUgfCBESVNQQVRDSF9WTk9ERV9SRVZPS0U7CiBjb25zdGV4cHIgdW5zaWduZWQgZmlsZVVu
YXZhaWxhYmxlTWFzayA9IERJU1BBVENIX1ZOT0RFX0RFTEVURSB8IERJU1BBVENIX1ZOT0RFX1JF
TkFNRSB8IERJU1BBVENIX1ZOT0RFX1JFVk9LRTsKIAotdm9pZCBGaWxlTW9uaXRvcjo6c3RhcnRN
b25pdG9yaW5nKCkKK0ZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25zdCBTdHJpbmcmIHBhdGgs
IFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNo
YW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fcGxhdGZvcm1N
b25pdG9yKQorICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgaWYgKCFtb2RpZmljYXRpb25IYW5kbGVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbW9kaWZpY2F0aW9uSGFuZGxlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgsIE9wZW5Gb3JFdmVu
dHNPbmx5KTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JFdmVudHNP
bmx5KTsKICAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIkZhaWxlZCB0
byBvcGVuIHN0YXRpc3RpY3MgZmlsZSBmb3IgbW9uaXRvcmluZzogJXMiLCBtX3BhdGgudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsICJGYWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwg
cGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGxh
dGZvcm1Nb25pdG9yID0gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BB
VENIX1NPVVJDRV9UWVBFX1ZOT0RFLCBoYW5kbGUsIG1vbml0b3JNYXNrLCBtX2hhbmRsZXJRdWV1
ZS0+ZGlzcGF0Y2hRdWV1ZSgpKSk7CisgICAgLy8gVGhlIHNvdXJjZSAocGxhdGZvcm1Nb25pdG9y
KSByZXRhaW5zIHRoZSBkaXNwYXRjaCBxdWV1ZS4KKyAgICBtX3BsYXRmb3JtTW9uaXRvciA9IGFk
b3B0RGlzcGF0Y2goZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9W
Tk9ERSwgaGFuZGxlLCBtb25pdG9yTWFzaywgaGFuZGxlclF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkp
KTsKIAogICAgIExPRyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiQ3JlYXRpbmcgbW9uaXRvciAl
cCIsIG1fcGxhdGZvcm1Nb25pdG9yLmdldCgpKTsKIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRf
ZXZlbnRfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBmaWxlTW9uaXRvciA9IG1fcGxhdGZvcm1Nb25pdG9yLmdl
dCgpXSAoKSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIo
bV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCksIEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShb
bW9kaWZpY2F0aW9uSGFuZGxlciA9IFdURk1vdmUobW9kaWZpY2F0aW9uSGFuZGxlciksIGZpbGVN
b25pdG9yID0gbV9wbGF0Zm9ybU1vbml0b3JdIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBnZXR0
aW5nIGNhbGxlZCBhZnRlciB0aGUgbW9uaXRvciB3YXMgY2FuY2VsbGVkLCBqdXN0IGRyb3AgdGhl
IG5vdGlmaWNhdGlvbi4KLSAgICAgICAgaWYgKGRpc3BhdGNoX3NvdXJjZV90ZXN0Y2FuY2VsKGZp
bGVNb25pdG9yKSkKKyAgICAgICAgaWYgKGRpc3BhdGNoX3NvdXJjZV90ZXN0Y2FuY2VsKGZpbGVN
b25pdG9yLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB1bnNpZ25lZCBm
bGFnID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKGZpbGVNb25pdG9yKTsKLSAgICAgICAgTE9H
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJGaWxlIGV2ZW50ICUjWCBmb3IgbW9uaXRvciAlcCIs
IGZsYWcsIGZpbGVNb25pdG9yKTsKKyAgICAgICAgdW5zaWduZWQgZmxhZyA9IGRpc3BhdGNoX3Nv
dXJjZV9nZXRfZGF0YShmaWxlTW9uaXRvci5nZXQoKSk7CisgICAgICAgIExPRyhSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLCAiRmlsZSBldmVudCAlI1ggZm9yIG1vbml0b3IgJXAiLCBmbGFnLCBmaWxl
TW9uaXRvci5nZXQoKSk7CiAgICAgICAgIGlmIChmbGFnICYgZmlsZVVuYXZhaWxhYmxlTWFzaykg
ewotICAgICAgICAgICAgbV9tb2RpZmljYXRpb25IYW5kbGVyKEZpbGVDaGFuZ2VUeXBlOjpSZW1v
dmFsKTsKLSAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwoZmlsZU1vbml0b3IpOwor
ICAgICAgICAgICAgbW9kaWZpY2F0aW9uSGFuZGxlcihGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCk7
CisgICAgICAgICAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKGZpbGVNb25pdG9yLmdldCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChmbGFnICYgRElTUEFUQ0hfVk5P
REVfV1JJVEUpOwotICAgICAgICAgICAgbV9tb2RpZmljYXRpb25IYW5kbGVyKEZpbGVDaGFuZ2VU
eXBlOjpNb2RpZmljYXRpb24pOworICAgICAgICAgICAgbW9kaWZpY2F0aW9uSGFuZGxlcihGaWxl
Q2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uKTsKICAgICAgICAgfQotICAgIH0pOworICAgIH0pLmdl
dCgpKTsKICAgICAKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcGxh
dGZvcm1Nb25pdG9yLmdldCgpLCBbZmlsZU1vbml0b3IgPSBtX3BsYXRmb3JtTW9uaXRvci5nZXQo
KV0gewotICAgICAgICBhdXRvIGhhbmRsZSA9IHN0YXRpY19jYXN0PFBsYXRmb3JtRmlsZUhhbmRs
ZT4oZGlzcGF0Y2hfc291cmNlX2dldF9oYW5kbGUoZmlsZU1vbml0b3IpKTsKKyAgICBkaXNwYXRj
aF9zb3VyY2Vfc2V0X2NhbmNlbF9oYW5kbGVyKG1fcGxhdGZvcm1Nb25pdG9yLmdldCgpLCBbaGFu
ZGxlXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfSk7CiAg
ICAgCiAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fcGxhdGZvcm1Nb25pdG9yLmdldCgpKTsKIH0KLSAg
ICAKLXZvaWQgRmlsZU1vbml0b3I6OnN0b3BNb25pdG9yaW5nKCkKKworRmlsZU1vbml0b3I6On5G
aWxlTW9uaXRvcigpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtTW9uaXRvcikKICAgICAgICAgcmV0
dXJuOwpAQCAtODksNyArODUsNiBAQCB2b2lkIEZpbGVNb25pdG9yOjpzdG9wTW9uaXRvcmluZygp
CiAgICAgTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJTdG9wcGluZyBtb25pdG9yICVwIiwg
bV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwogCiAgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNlbCht
X3BsYXRmb3JtTW9uaXRvci5nZXQoKSk7Ci0gICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBudWxscHRy
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IGI3Njg3MTdjODMzZTNlNmQ5YjE5ZmQwNGYwNzM5MmFmMWM0ODA2YTEuLmZiZjA0OTVjOWFmYzAx
NWMwZGI2MWU4NjRiZjM5Mzg4NzkxZTNhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00
MjcsNyArNDI3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXJ0
TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fc3RhdGlzdGljc1N0b3JhZ2VN
b25pdG9yID0gRmlsZU1vbml0b3I6OmNyZWF0ZShyZXNvdXJjZUxvZ1BhdGgsIG1fc3RhdGlzdGlj
c1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlw
ZSkgeworICAgIG1fc3RhdGlzdGljc1N0b3JhZ2VNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBtX3N0YXRpc3RpY3NRdWV1ZS5jb3B5UmVmKCks
IFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtNDM5
LDE5ICs0MzksMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXJ0
TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfSk7Ci0KLSAgICBtX3N0YXRpc3RpY3NTdG9yYWdlTW9uaXRvci0+c3RhcnRNb25p
dG9yaW5nKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdG9w
TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JhZ2VNb25pdG9yKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBGSVhNRSgxNzQxNjYpOiBUaGUgRmlsZU1vbml0b3IgY2FwdHVyZXMg
aXRzZWxmLCBpbmNyZW1lbnRpbmcgaXRzIHJlZmNvdW50LiBNYW51YWxseSBzdG9wcGluZyB0aGUg
bW9uaXRvciBzaHV0cyBkb3duIHRoZSBsYW1iZGEgaG9sZGluZyB0aGUgZXh0cmEKLSAgICAvLyBy
ZWZlcmVuY2UsIHNvIHRoZSBvYmplY3Qgd2lsbCBiZSBjbGVhbmVkIHVwIHByb3Blcmx5LgotICAg
IG1fc3RhdGlzdGljc1N0b3JhZ2VNb25pdG9yLT5zdG9wTW9uaXRvcmluZygpOwogICAgIG1fc3Rh
dGlzdGljc1N0b3JhZ2VNb25pdG9yID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDAzYzk2ZDQ3NDMxNzNiNmViMzdjNzNhMDRmYWJhZTE2MjQ0N2NiNTQuLmU0MjBhZGY2NTFh
MTMzNjg4Y2M1OGY1MWM2ODQwNDU1NWU0NWYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE0
NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXI7CiAjZW5kaWYKICAgICBSZWY8
V1RGOjpXb3JrUXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpG
aWxlTW9uaXRvcj4gbV9zdGF0aXN0aWNzU3RvcmFnZU1vbml0b3I7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX3N0YXRpc3RpY3NTdG9yYWdlTW9uaXRvcjsKICAg
ICBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7CiAgICAgV1RGOjpXYWxsVGltZSBtX2xh
c3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lOwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gbV90ZWxlbWV0cnlPbmVTaG90VGltZXI7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmIzMDg1MzBkOTI1Njhk
ZTExNGUzM2NkMjhjYTg4ZTYxNmE1NTJkNC4uZDdiZGFjMDAxMjNiOTg4YzkzYzgyY2UzMjIzZGE4
NDZkMTk5ZGI2NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgRmlsZU1vbml0b3Igc2hvdWxkIG5vdCBiZSByZWYgY291bnRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IHRoZSBBUEkgdGVzdHMgdG8gcmVmbGVjdCB0aGUgQVBJIGNoYW5nZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDE3LTA3LTA2ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5
MTk0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHAKaW5kZXggYzEzYmNmMTE4N2YxYzkxMTIxOTBiMmIwNjQ1NjBiMGE0ZTVkZGNmOC4uMWQy
NGJhN2IzMmViOWQ2YjFjYzVhNDlkMTEwMTY5M2I0ZDVkZjZkZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0
ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBh
dXRvIG1vbml0b3IgPSBXZWJDb3JlOjpGaWxlTW9uaXRvcjo6Y3JlYXRlKHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbdGhpc10gKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAo
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZp
bGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTYwLDcgKzE2MCw2
IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfSk7Ci0gICAgbW9uaXRvci0+c3RhcnRNb25pdG9yaW5nKCk7
CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
U3RyaW5nIGZpbGVDb250ZW50cyA9IHJlYWRDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CkBAIC0xOTIsNyArMTkxLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlw
bGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVz
dCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBXZWJDb3JlOjpGaWxlTW9uaXRv
cjo6Y3JlYXRlKHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbdGhpc10gKFdl
YkNvcmU6OkZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25p
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUp
IHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZp
Y2F0aW9uOgpAQCAtMjAzLDcgKzIwMiw2IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dE11bHRpcGxlQ2hhbmdlcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgbW9uaXRvci0+c3RhcnRNb25pdG9yaW5nKCk7CiAgICAgCiAgICAgdGVzdFF1ZXVlLT5k
aXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIFN0cmluZyBmaWxlQ29udGVudHMg
PSByZWFkQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwpAQCAtMjUzLDcgKzI1MSw3IEBA
IFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0
UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRv
IG1vbml0b3IgPSBXZWJDb3JlOjpGaWxlTW9uaXRvcjo6Y3JlYXRlKHRlbXBGaWxlUGF0aCgpLCB0
ZXN0UXVldWUuY29weVJlZigpLCBbdGhpc10gKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
TW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjY0LDcgKzI2Miw2IEBA
IFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBtb25pdG9yLT5zdGFydE1vbml0b3JpbmcoKTsK
IAogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewogICAgICAgICBT
dHJpbmdCdWlsZGVyIGNvbW1hbmQ7CkBAIC0yOTMsNyArMjkwLDcgQEAgVEVTVF9GKEZpbGVNb25p
dG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25p
dG9yID0gV2ViQ29yZTo6RmlsZU1vbml0b3I6OmNyZWF0ZSh0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1
ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5
cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0
b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0zMDQsNyArMzAxLDYgQEAg
VEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0pOwotICAgIG1vbml0b3ItPnN0YXJ0
TW9uaXRvcmluZygpOwogCiAgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIFN0cmluZyBmaWxlQ29udGVudHMgPSByZWFkQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwpAQCAtMzUxLDcgKzM0Nyw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1
ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9u
aXRvciA9IFdlYkNvcmU6OkZpbGVNb25pdG9yOjpjcmVhdGUodGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25p
dG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9u
aXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzYyLDcgKzM1OCw2IEBA
IFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFu
Z2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBtb25p
dG9yLT5zdGFydE1vbml0b3JpbmcoKTsKIAogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNd
ICgpIG11dGFibGUgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGNvbW1hbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314746</attachid>
            <date>2017-07-06 13:07:35 -0700</date>
            <delta_ts>2017-07-06 14:45:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174166-20170706130734.patch</filename>
            <type>text/plain</type>
            <size>16656</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU5NjM5YzNjZTFlYjcw
M2NlODAwMGM3MzlhYTA4OWIzODJkZjYwNC4uNTQyNzY2YjRmNTkxYmI2ZTZjMjNmZGFhY2RjNjdl
NDAyZmQ1NTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA3LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsZU1vbml0b3Igc2hvdWxk
IG5vdCBiZSByZWYgY291bnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIEZpbGVNb25pdG9yIHRvIG5vIGxvbmdlciBiZSByZWZjb3VudGVk
LiBJdCB3YXMgcHJldmlvdXNseSBlYXN5IHRvIGxlYWsgaXQKKyAgICAgICAgYmVjYXVzZSB0aGUg
b2JqZWN0IHdvdWxkIHJlZiBpdHNlbGYgaW4gdmFyaW91cyBsYW1iZGFzLiBUaGUgY2xpZW50IHdv
dWxkIGhhdmUgdG8KKyAgICAgICAgZXhwbGljaXRlbHkgY2FsbCBGaWxlTW9uaXRvcjo6c3RvcE1v
bml0b3JpbmcoKSB3aGljaCB3YXMgZnJhZ2lsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
c2ltcGxpZmllcyB0aGUgY29kZSBhbmQgQVBJIGEgYml0IHNpbmNlIG5vIGxvbmdlciBhY3R1YWxs
eQorICAgICAgICByZXF1aXJlcyBzdGFydE1vbml0b3JpbmcoKSAvIHN0b3BNb25pdG9yaW5nKCkg
QVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
TW9uaXRvcjo6RmlsZU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6On5G
aWxlTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6Y3JlYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpzdGFydE1vbml0b3JpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OnN0b3BNb25pdG9yaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxl
TW9uaXRvcjo6RmlsZU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6On5G
aWxlTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6c3RhcnRNb25pdG9y
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpzdG9wTW9uaXRv
cmluZyk6IERlbGV0ZWQuCisKIDIwMTctMDctMDYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgZ2V0dGluZyB0aGUgY29u
dGVudCBvZiBXZWJHTC9XZWJHTDIgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMTQ4NWM3YzU4NjMw
MmFjNGE3NDI5ZDk2MWUyODVhOTliMWI5NWZhLi44NTMzZTQwZjNlNDIzZjY1ZWE0OGE1NmY3ODY3
NjIxOTEzYmMzOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTctMDctMDYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBGaWxlTW9uaXRvciBzaG91
bGQgbm90IGJlIHJlZiBjb3VudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY29kZSB1c2luZyBGaWxlTW9uaXRvciB0byByZWZsZWN0IEFQ
SSBjaGFuZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RvcE1vbml0b3JpbmdTdGF0aXN0aWNz
U3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorCisyMDE3LTA3LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJz
aXN0ZW50U3RvcmFnZVBhdGgoV1RGOjpTdHJpbmcgY29uc3QmKQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjA1CiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMzA5MzU1Mj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAppbmRl
eCAyYmQyYTllNTM4MzE2OWUzNGU1ZDIwYzdjMTE2MThjZTRmZjEwOWFiLi42ODZhMDdmZWFjY2Q4
MTYzMWJhOWJjNDU5ZTVlNjA5MmNlYzliMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZU1vbml0b3IuY3BwCkBAIC0yOCwzMiArMjgsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8RmlsZU1vbml0b3I+IEZpbGVNb25pdG9yOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVD
aGFuZ2VUeXBlKT4mJiBtb2RpZmljYXRpb25IYW5kbGVyKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZpbGVNb25pdG9yKHBhdGgsIFdURk1vdmUoaGFuZGxlclF1ZXVlKSwgV1RGTW92ZSht
b2RpZmljYXRpb25IYW5kbGVyKSkpOwotfQotICAgIAotRmlsZU1vbml0b3I6OkZpbGVNb25pdG9y
KGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6
RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcikKLSAg
ICA6IG1fcGF0aChwYXRoKQotICAgICwgbV9tb2RpZmljYXRpb25IYW5kbGVyKFdURk1vdmUobW9k
aWZpY2F0aW9uSGFuZGxlcikpCi0gICAgLCBtX2hhbmRsZXJRdWV1ZShXVEZNb3ZlKGhhbmRsZXJR
dWV1ZSkpCi17Ci19Ci0gICAgCi1GaWxlTW9uaXRvcjo6fkZpbGVNb25pdG9yKCkKLXsKLSAgICBz
dG9wTW9uaXRvcmluZygpOwotfQotICAgIAogI2lmICFQTEFURk9STShDT0NPQSkKLXZvaWQgRmls
ZU1vbml0b3I6OnN0YXJ0TW9uaXRvcmluZygpCisKK0ZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihj
b25zdCBTdHJpbmcmLCBSZWY8V29ya1F1ZXVlPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNo
YW5nZVR5cGUpPiYmKQogewotICAgIC8vIERvIE5vdGhpbmcKIH0KLSAgICAKLXZvaWQgRmlsZU1v
bml0b3I6OnN0b3BNb25pdG9yaW5nKCkKKworRmlsZU1vbml0b3I6On5GaWxlTW9uaXRvcigpCiB7
Ci0gICAgLy8gRG8gTm90aGluZwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
TW9uaXRvci5oCmluZGV4IDFiNmUwNzkzOWY5ZmIwYmRkZDA2MjY5OTVjMTZhNTE3MTY1ZDdiMDEu
LjY3MjRjZDE2MjUyZmJhYTMxMzBkZTg5ZDZjMzFhNjQ0YzVmN2U0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZU1vbml0b3IuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTM3LDI2ICszNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEZpbGVNb25pdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZpbGVN
b25pdG9yPiB7CitjbGFzcyBGaWxlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBG
aWxlQ2hhbmdlVHlwZSB7CiAgICAgICAgIE1vZGlmaWNhdGlvbiwKICAgICAgICAgUmVtb3ZhbAog
ICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGVNb25pdG9yPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6RnVu
Y3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4m
JiBoYW5kbGVyUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9k
aWZpY2F0aW9uSGFuZGxlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZpbGVNb25pdG9yKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0TW9uaXRvcmluZygpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmcoKTsKLQogcHJpdmF0ZToKLSAgICBGaWxlTW9uaXRv
cihjb25zdCBTdHJpbmcmLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4mJiBtb2RpZmljYXRpb25IYW5kbGVyKTsKLQotICAg
IFN0cmluZyBtX3BhdGg7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4g
bV9tb2RpZmljYXRpb25IYW5kbGVyOwotICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV9oYW5kbGVy
UXVldWU7Ci0KICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBEaXNwYXRjaFB0cjxkaXNw
YXRjaF9zb3VyY2VfdD4gbV9wbGF0Zm9ybU1vbml0b3I7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDVlMjljN2Vj
MmNkZTRiNGE0ZjUyNDQzMGI3Y2Q3Yzg1MTEwZWM5MDAuLjM5NWRmNzc3MTlhMDY0MzFjNzkzN2Jm
ZTUzZTZmZjg1ZjFlOTQxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtMjgsNjAgKzI4LDU2IEBACiAKICNpbXBvcnQgIkZp
bGVTeXN0ZW0uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPGRpc3BhdGNoL2Rpc3Bh
dGNoLmg+Ci0jaW1wb3J0IDx3dGYvRGlzcGF0Y2hQdHIuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjb25zdGV4cHIgdW5zaWduZWQgbW9u
aXRvck1hc2sgPSBESVNQQVRDSF9WTk9ERV9ERUxFVEUgfCBESVNQQVRDSF9WTk9ERV9XUklURSB8
IERJU1BBVENIX1ZOT0RFX1JFTkFNRSB8IERJU1BBVENIX1ZOT0RFX1JFVk9LRTsKIGNvbnN0ZXhw
ciB1bnNpZ25lZCBmaWxlVW5hdmFpbGFibGVNYXNrID0gRElTUEFUQ0hfVk5PREVfREVMRVRFIHwg
RElTUEFUQ0hfVk5PREVfUkVOQU1FIHwgRElTUEFUQ0hfVk5PREVfUkVWT0tFOwogCi12b2lkIEZp
bGVNb25pdG9yOjpzdGFydE1vbml0b3JpbmcoKQorRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNv
bnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6RnVu
Y3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcikKIHsKLSAg
ICBpZiAobV9wbGF0Zm9ybU1vbml0b3IpCisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1vZGlmaWNh
dGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9tb2RpZmljYXRpb25I
YW5kbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKG1f
cGF0aCwgT3BlbkZvckV2ZW50c09ubHkpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0
aCwgT3BlbkZvckV2ZW50c09ubHkpOwogICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLCAiRmFpbGVkIHRvIG9wZW4gc3RhdGlzdGljcyBmaWxlIGZvciBtb25pdG9yaW5nOiAl
cyIsIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcywgIkZhaWxlZCB0byBvcGVuIHN0YXRpc3RpY3MgZmlsZSBmb3Ig
bW9uaXRvcmluZzogJXMiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBhZG9wdERpc3BhdGNoKGRpc3BhdGNoX3Nv
dXJjZV9jcmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfVk5PREUsIGhhbmRsZSwgbW9uaXRvck1h
c2ssIG1faGFuZGxlclF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkpKTsKKyAgICAvLyBUaGUgc291cmNl
IChwbGF0Zm9ybU1vbml0b3IpIHJldGFpbnMgdGhlIGRpc3BhdGNoIHF1ZXVlLgorICAgIG1fcGxh
dGZvcm1Nb25pdG9yID0gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BB
VENIX1NPVVJDRV9UWVBFX1ZOT0RFLCBoYW5kbGUsIG1vbml0b3JNYXNrLCBoYW5kbGVyUXVldWUt
PmRpc3BhdGNoUXVldWUoKSkpOwogCiAgICAgTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJD
cmVhdGluZyBtb25pdG9yICVwIiwgbV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwogCi0gICAgZGlz
cGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1fcGxhdGZvcm1Nb25pdG9yLmdldCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGZpbGVNb25pdG9yID0gbV9w
bGF0Zm9ybU1vbml0b3IuZ2V0KCldICgpIG11dGFibGUgeworICAgIGRpc3BhdGNoX3NvdXJjZV9z
ZXRfZXZlbnRfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgQmxvY2tQdHI8dm9pZCgp
Pjo6ZnJvbUNhbGxhYmxlKFttb2RpZmljYXRpb25IYW5kbGVyID0gV1RGTW92ZShtb2RpZmljYXRp
b25IYW5kbGVyKSwgZmlsZU1vbml0b3IgPSBtX3BsYXRmb3JtTW9uaXRvcl0gewogICAgICAgICAv
LyBJZiB0aGlzIGlzIGdldHRpbmcgY2FsbGVkIGFmdGVyIHRoZSBtb25pdG9yIHdhcyBjYW5jZWxs
ZWQsIGp1c3QgZHJvcCB0aGUgbm90aWZpY2F0aW9uLgotICAgICAgICBpZiAoZGlzcGF0Y2hfc291
cmNlX3Rlc3RjYW5jZWwoZmlsZU1vbml0b3IpKQorICAgICAgICBpZiAoZGlzcGF0Y2hfc291cmNl
X3Rlc3RjYW5jZWwoZmlsZU1vbml0b3IuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIHVuc2lnbmVkIGZsYWcgPSBkaXNwYXRjaF9zb3VyY2VfZ2V0X2RhdGEoZmlsZU1vbml0
b3IpOwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIkZpbGUgZXZlbnQgJSNY
IGZvciBtb25pdG9yICVwIiwgZmxhZywgZmlsZU1vbml0b3IpOworICAgICAgICB1bnNpZ25lZCBm
bGFnID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKGZpbGVNb25pdG9yLmdldCgpKTsKKyAgICAg
ICAgTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJGaWxlIGV2ZW50ICUjWCBmb3IgbW9uaXRv
ciAlcCIsIGZsYWcsIGZpbGVNb25pdG9yLmdldCgpKTsKICAgICAgICAgaWYgKGZsYWcgJiBmaWxl
VW5hdmFpbGFibGVNYXNrKSB7Ci0gICAgICAgICAgICBtX21vZGlmaWNhdGlvbkhhbmRsZXIoRmls
ZUNoYW5nZVR5cGU6OlJlbW92YWwpOwotICAgICAgICAgICAgZGlzcGF0Y2hfc291cmNlX2NhbmNl
bChmaWxlTW9uaXRvcik7CisgICAgICAgICAgICBtb2RpZmljYXRpb25IYW5kbGVyKEZpbGVDaGFu
Z2VUeXBlOjpSZW1vdmFsKTsKKyAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9jYW5jZWwoZmls
ZU1vbml0b3IuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGZs
YWcgJiBESVNQQVRDSF9WTk9ERV9XUklURSk7Ci0gICAgICAgICAgICBtX21vZGlmaWNhdGlvbkhh
bmRsZXIoRmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbik7CisgICAgICAgICAgICBtb2RpZmlj
YXRpb25IYW5kbGVyKEZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb24pOwogICAgICAgICB9Ci0g
ICAgfSk7CisgICAgfSkuZ2V0KCkpOwogICAgIAotICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2Fu
Y2VsX2hhbmRsZXIobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCksIFtmaWxlTW9uaXRvciA9IG1fcGxh
dGZvcm1Nb25pdG9yLmdldCgpXSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gc3RhdGljX2Nhc3Q8
UGxhdGZvcm1GaWxlSGFuZGxlPihkaXNwYXRjaF9zb3VyY2VfZ2V0X2hhbmRsZShmaWxlTW9uaXRv
cikpOworICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfY2FuY2VsX2hhbmRsZXIobV9wbGF0Zm9ybU1v
bml0b3IuZ2V0KCksIFtoYW5kbGVdICgpIG11dGFibGUgewogICAgICAgICBjbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRjaF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0
b3IuZ2V0KCkpOwogfQotICAgIAotdm9pZCBGaWxlTW9uaXRvcjo6c3RvcE1vbml0b3JpbmcoKQor
CitGaWxlTW9uaXRvcjo6fkZpbGVNb25pdG9yKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1Nb25p
dG9yKQogICAgICAgICByZXR1cm47CkBAIC04OSw3ICs4NSw2IEBAIHZvaWQgRmlsZU1vbml0b3I6
OnN0b3BNb25pdG9yaW5nKCkKICAgICBMT0coUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlN0b3Bw
aW5nIG1vbml0b3IgJXAiLCBtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSk7CiAKICAgICBkaXNwYXRj
aF9zb3VyY2VfY2FuY2VsKG1fcGxhdGZvcm1Nb25pdG9yLmdldCgpKTsKLSAgICBtX3BsYXRmb3Jt
TW9uaXRvciA9IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggOWE4MGUzMjc0ODg1NDhiMzE5Y2FmNTViNGFlZDc1YjAxMTY5Mzgx
NS4uZjZjZWQ5YTUyMThhZDBjMzIzMWMwMDA3OWM4NDNmZDJmYTJmOWZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogICAgIGlmIChy
ZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9z
dGF0aXN0aWNzU3RvcmFnZU1vbml0b3IgPSBGaWxlTW9uaXRvcjo6Y3JlYXRlKHJlc291cmNlTG9n
UGF0aCwgbV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9zdGF0aXN0aWNzU3RvcmFnZU1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fc3RhdGlzdGlj
c1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlw
ZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2Rp
ZmljYXRpb246CkBAIC00NDYsMTkgKzQ0NiwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9KTsKLQotICAgIG1fc3RhdGlzdGljc1N0b3JhZ2VN
b25pdG9yLT5zdGFydE1vbml0b3JpbmcoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnN0b3BNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmFnZU1v
bml0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FKDE3NDE2Nik6IFRoZSBGaWxl
TW9uaXRvciBjYXB0dXJlcyBpdHNlbGYsIGluY3JlbWVudGluZyBpdHMgcmVmY291bnQuIE1hbnVh
bGx5IHN0b3BwaW5nIHRoZSBtb25pdG9yIHNodXRzIGRvd24gdGhlIGxhbWJkYSBob2xkaW5nIHRo
ZSBleHRyYQotICAgIC8vIHJlZmVyZW5jZSwgc28gdGhlIG9iamVjdCB3aWxsIGJlIGNsZWFuZWQg
dXAgcHJvcGVybHkuCi0gICAgbV9zdGF0aXN0aWNzU3RvcmFnZU1vbml0b3ItPnN0b3BNb25pdG9y
aW5nKCk7CiAgICAgbV9zdGF0aXN0aWNzU3RvcmFnZU1vbml0b3IgPSBudWxscHRyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggYzFhMzk2ODdhMDYyMTU3MGU4ZjI1YzYxMzIwNjgyNTAyNWJi
MDJhOC4uMGM2NWY2NDUxZTE1YTk3MGMyYTBiYTIzZjQxMjIzMTE1NTAxOTRjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXIgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllcjsK
ICNlbmRpZgogICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX3N0YXRpc3RpY3NTdG9yYWdlTW9uaXRvcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RmlsZU1vbml0b3I+IG1fc3RhdGlzdGljc1N0
b3JhZ2VNb25pdG9yOwogICAgIGNvbnN0IFN0cmluZyBtX3N0YXRpc3RpY3NTdG9yYWdlUGF0aDsK
ICAgICBXVEY6OldhbGxUaW1lIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7CiAgICAgUnVu
TG9vcDo6VGltZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3RlbGVtZXRyeU9u
ZVNob3RUaW1lcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmYjMwODUzMGQ5MjU2OGRlMTE0ZTMzY2QyOGNhODhlNjE2YTU1MmQ0Li5kN2JkYWMw
MDEyM2I5ODhjOTNjODJjZTMyMjNkYTg0NmQxOTlkYjY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDctMDYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaWxlTW9uaXRvciBz
aG91bGQgbm90IGJlIHJlZiBjb3VudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIEFQSSB0ZXN0cyB0byByZWZsZWN0IHRoZSBBUEkg
Y2hhbmdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTctMDctMDYg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkxOTQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCBjMTNiY2YxMTg3ZjFjOTExMjE5MGIy
YjA2NDU2MGIwYTRlNWRkY2Y4Li4xZDI0YmE3YjMyZWI5ZDZiMWNjNWE0OWQxMTAxNjkzYjRkNWRm
NmRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0
IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IFdlYkNvcmU6OkZpbGVNb25pdG9y
OjpjcmVhdGUodGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoV2Vi
Q29yZTo6RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1
ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0xNjAsNyArMTYwLDYgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
Q2hhbmdlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBtb25p
dG9yLT5zdGFydE1vbml0b3JpbmcoKTsKIAogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNd
ICgpIG11dGFibGUgewogICAgICAgICBTdHJpbmcgZmlsZUNvbnRlbnRzID0gcmVhZENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKQEAgLTE5Miw3ICsxOTEsNyBAQCBURVNUX0YoRmlsZU1v
bml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRv
ciA9IFdlYkNvcmU6OkZpbGVNb25pdG9yOjpjcmVhdGUodGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1
ZS5jb3B5UmVmKCksIFt0aGlzXSAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9y
Pih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yMDMsNyArMjAyLDYgQEAgVEVTVF9G
KEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBtb25pdG9yLT5zdGFydE1vbml0b3JpbmcoKTsK
ICAgICAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgU3RyaW5nIGZpbGVDb250ZW50cyA9IHJlYWRDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CkBAIC0yNTMsNyArMjUxLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVs
ZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdv
cmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IFdlYkNvcmU6OkZpbGVNb25pdG9yOjpj
cmVhdGUodGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoV2ViQ29y
ZTo6RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRp
b246CkBAIC0yNjQsNyArMjYyLDYgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVs
ZXRpb24pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0pOwotICAgIG1vbml0
b3ItPnN0YXJ0TW9uaXRvcmluZygpOwogCiAgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbdGhpc10g
KCkgbXV0YWJsZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY29tbWFuZDsKQEAgLTI5Myw3ICsy
OTAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRl
KQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1
ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBXZWJDb3JlOjpGaWxlTW9uaXRvcjo6Y3JlYXRl
KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbdGhpc10gKFdlYkNvcmU6OkZp
bGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlv
bjoKQEAgLTMwNCw3ICszMDEsNiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFu
Z2VBbmRUaGVuRGVsZXRlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fSk7Ci0gICAgbW9uaXRvci0+c3RhcnRNb25pdG9yaW5nKCk7CiAKICAgICB0ZXN0UXVldWUtPmRp
c3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgU3RyaW5nIGZpbGVDb250ZW50cyA9
IHJlYWRDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CkBAIC0zNTEsNyArMzQ3LDcgQEAg
VEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5n
ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBR
dWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gV2ViQ29yZTo6RmlsZU1vbml0b3I6OmNyZWF0
ZSh0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChXZWJDb3JlOjpG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29w
eVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRp
b246CkBAIC0zNjIsNyArMzU4LDYgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVs
ZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIG1vbml0b3ItPnN0YXJ0TW9uaXRvcmluZygpOwogCiAgICAgdGVz
dFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgY29tbWFuZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>