<?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>85205</bug_id>
          
          <creation_ts>2012-04-30 10:14:31 -0700</creation_ts>
          <short_desc>[V8][Performance] Remove Isolate lookup from the call path to get a cached JS wrapper object by getDOMXXXXMap()</short_desc>
          <delta_ts>2012-05-06 21:38:54 -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 JavaScript</component>
          <version>528+ (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>
          
          <blocked>84074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612720</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-30 10:14:31 -0700</bug_when>
    <thetext>By passing Isolate around, we can remove Isolate lookup from the call path to get a cached wrapper JS object by getDOMXXXXMap(). For example, this improves the performance of toV8(NodeList*) in getElementsByTagName(), getElementsByName() and getElementsByClassName().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612721</commentid>
    <comment_count>1</comment_count>
      <attachid>139468</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-30 10:14:50 -0700</bug_when>
    <thetext>Created attachment 139468
Performance test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612722</commentid>
    <comment_count>2</comment_count>
      <attachid>139469</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-30 10:15:53 -0700</bug_when>
    <thetext>Created attachment 139469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617367</commentid>
    <comment_count>3</comment_count>
      <attachid>139469</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 21:38:49 -0700</bug_when>
    <thetext>Comment on attachment 139469
Patch

Clearing flags on attachment: 139469

Committed r116269: &lt;http://trac.webkit.org/changeset/116269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617368</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 21:38:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>139468</attachid>
            <date>2012-04-30 10:14:50 -0700</date>
            <delta_ts>2012-04-30 10:14:50 -0700</delta_ts>
            <desc>Performance test</desc>
            <filename>dom_getelementsbytagname.html</filename>
            <type>text/html</type>
            <size>1734</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPHNjcmlwdD4KaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CgpmdW5jdGlvbiBydW4o
dGl0bGUsIHJlcGVhdE51bSwgZnVuYykgewogIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0Iik7CgogIHZhciByb3VuZHMgPSA1MDsKICB2YXIgdGltZXMgPSBbXTsK
ICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsgcisrKSB7CiAgICB2YXIgc3RhcnQgPSBEYXRl
Lm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwogICAgdGltZXMucHVzaChEYXRlLm5vdygpIC0g
c3RhcnQpOwogIH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAtIGI7
IH0pOwogIHZhciBzdW0gPSAwLCBtaW4gPSAobmV3IERhdGUoMjAyMiwgMTIsIDMxKSkuZ2V0VGlt
ZSgpLCBtYXggPSAtMTsKICB2YXIgbWVkaWFuID0gdGltZXNbTWF0aC5mbG9vcih0aW1lcy5sZW5n
dGggLyAyKV07CiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1lcy5sZW5ndGg7IGkrKykgewogICAg
aWYgKG1pbiA+IHRpbWVzW2ldKQogICAgICBtaW4gPSB0aW1lc1tpXTsKICAgIGlmIChtYXggPCB0
aW1lc1tpXSkKICAgICAgbWF4ID0gdGltZXNbaV07CiAgICBzdW0gKz0gdGltZXNbaV07CiAgfQoK
ICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUgKyAiIDog
bWVhbj0iICsgKHN1bSAvIHJvdW5kcykudG9GaXhlZCgyKSArICJtcywgbWluPSIgKyBtaW4gKyAi
bXMsIG1lZGlhbj0iICsgbWVkaWFuICsgIm1zLCBtYXg9IiArIG1heCArICJtcyIpKTsKICByZXN1
bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cn0KCndpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIHJlcGVhdE51bSA9IDUwMDAwMDsKCiAgcnVuKCJn
ZXRFbGVtZW50c0J5VGFnTmFtZSIsIHJlcGVhdE51bSwgZnVuY3Rpb24ocmVwZWF0TnVtKSB7CiAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IHJlcGVhdE51bTsgaisrKSB7CiAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJzcGFuIik7CiAgICB9CiAgfSk7CgogIHJ1bigiZ2V0RWxlbWVu
dHNCeVRhZ05hbWUiLCByZXBlYXROdW0sIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogICAgZm9yICh2
YXIgaiA9IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgic3BhbiIpOwogICAgfQogIH0pOwoKICBydW4oImdldEVsZW1lbnRzQnlOYW1l
IiwgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBq
IDwgcmVwZWF0TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIm5h
bWUiKTsKICAgIH0KICB9KTsKCiAgcnVuKCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwgcmVwZWF0
TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0
TnVtOyBqKyspIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiY2xhc3Mi
KTsKICAgIH0KICB9KTsKfQo8L3NjcmlwdD4KPGJvZHk+CjxzcGFuPjwvc3Bhbj4KPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KPGRpdiBuYW1lPSJuYW1lIj48L2Rpdj4KPGRpdiBjbGFzcz0iY2xhc3Mi
PjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139469</attachid>
            <date>2012-04-30 10:15:53 -0700</date>
            <delta_ts>2012-05-06 21:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85205-20120430101552.patch</filename>
            <type>text/plain</type>
            <size>19683</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzYzkwZTI4NmZiZjY4
M2ExYWVkZjcwNzBhZjdhMDNlYzZlYzZiMy4uNDYxMjM3NjE0NTE0NzQ2YzdkYzE4ZTg4MWFmOTM0
YWY3OTg3Mzc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA0LTMwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdW1BlcmZvcm1h
bmNlXSBSZW1vdmUgSXNvbGF0ZSBsb29rdXAgZnJvbSB0aGUgY2FsbCBwYXRoCisgICAgICAgIHRv
IGdldCBhIGNhY2hlZCBKUyB3cmFwcGVyIG9iamVjdCBieSBnZXRET01YWFhYTWFwKCkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTIwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYXRjaCBpbXBy
b3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZ2V0dGluZyBhIGNhY2hlZCBKUyB3cmFwcGVyCisgICAg
ICAgIGJ5IGdldERPTVhYWFhNYXAoKS4gRm9yIGV4YW1wbGUsIGl0IGltcHJvdmVzIHRoZSBwZXJm
b3JtYW5jZQorICAgICAgICBvZiB0b1Y4KE5vZGVMaXN0KikgaW4gZ2V0RWxlbWVudHNCeVRhZ05h
bWUoKSwgZ2V0RWxlbWVudHNCeU5hbWUoKSwKKyAgICAgICAgZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgpIGJ5IDcgfiA5JS4KKworICAgICAgICBQZXJmb3JtYW5jZSB0ZXN0czogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MTM5NDY4CisKKyAgICAgICAgVGhlIHBlcmZv
cm1hbmNlIHRlc3QgcmVzdWx0cyBpbiBteSBMaW51eCBkZXNrdG9wOgorCisgICAgICAgIGdldEVs
ZW1lbnRzQnlUYWdOYW1lIDogICA0MC43NiBtcyA9PiAzNy41Mm1zICgrOC42JSkKKyAgICAgICAg
Z2V0RWxlbWVudHNCeU5hbWUgOiAgICAgIDQxLjAyIG1zID0+IDM3LjQybXMgKCs5LjYlKQorICAg
ICAgICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDogNDAuMzIgbXMgPT4gMzcuNjhtcyAoKzcuMCUp
CisKKyAgICAgICAgVW5mb3J0dW5hdGVseSB3ZSBjYW5ub3Qgb2JzZXJ2ZSBwZXJmb3JtYW5jZSBp
bXByb3ZlbWVudCBpbgorICAgICAgICBEcm9tYWVvL2RvbS1xdWVyeS5odG1sLCB3aGljaCBhcmUg
dGVzdGluZyBnZXRFbGVtZW50c0J5VGFnTmFtZSgpLAorICAgICAgICBnZXRFbGVtZW50c0J5TmFt
ZSgpLCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCkuIFRoaXMgaXMgYmVjYXVzZQorICAgICAgICB0
aGUgYm90dGxlbmVjayBvZiB0aGVzZSBEcm9tYWVvIHRlc3RzIGlzIG5vdCB0b1Y4KE5vZGVMaXN0
KikgYnV0CisgICAgICAgIC5sZW5ndGggYW5kIC5ub2RlVHlwZSBhY2Nlc3Nlcy4gVGhlIHBhdGNo
IGZvciBvcHRpbWl6aW5nIHRoZW0KKyAgICAgICAgd2lsbCBiZSBjb21pbmcgc29vbi4KKworICAg
ICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IE1vZGlmaWVkIGFzIGRlc2NyaWJlZCBhYm92
ZS4KKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0
ckdldHRlcik6CisgICAgICAgIChHZXREb21NYXBGdW5jdGlvbik6CisgICAgICAgIChOYXRpdmVU
b0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRGF0YTo6Z2V0Q3VycmVudFN0b3JlKToKKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oOiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10
ZXN0cyByZXN1bHRzLgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OndyYXApOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6d3JhcCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXApOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjppdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OndyYXApOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OndyYXApOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRB
dHRyaWJ1dGUyQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6Z2V0U1ZHRG9jdW1lbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2Jq
Ojp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXApOgorCiAyMDEyLTA0LTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI5MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZjcxYzNiYjhhMDU0ODZjZjI3YmUyZDgy
ZmQ1YjQ2YWJhMWM0YmYxMS4uYTVmYjIzMDY4ZDNhNTA4ZGE0OTdiZDY0NGRjNGZjZmUwZGIyZDI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTMxNCw3ICszMTQsNiBAQCBFTkQKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgImZhbHNlO1xuIik7CiAgICAgfQogCi0gICAgbXkgJGRvbU1hcEZ1bmN0aW9uID0gR2V0
RG9tTWFwRnVuY3Rpb24oJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgbXkgJGZvcmNl
TmV3T2JqZWN0UGFyYW1ldGVyID0gSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkgPyAiLCBi
b29sIGZvcmNlTmV3T2JqZWN0ID0gZmFsc2UiIDogIiI7CiAgICAgbXkgJGZvcmNlTmV3T2JqZWN0
SW5wdXQgPSBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSA/ICIsIGJvb2wgZm9yY2VOZXdP
YmplY3QiIDogIiI7CiAgICAgbXkgJGZvcmNlTmV3T2JqZWN0Q2FsbCA9IElzRE9NTm9kZVR5cGUo
JGludGVyZmFjZU5hbWUpID8gIiwgZm9yY2VOZXdPYmplY3QiIDogIiI7CkBAIC00MjQsNiArNDIz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVU
eXBlfSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2wKIHsKIEVORAogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgaWYgKCFmb3JjZU5ld09iamVjdCkge1xuIikgaWYgSXNET01Ob2RlVHlwZSgk
aW50ZXJmYWNlTmFtZSk7CisgICAgbXkgJGRvbU1hcEZ1bmN0aW9uID0gR2V0RG9tTWFwRnVuY3Rp
b24oJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgImlzb2xhdGUiKTsKICAgICBteSAkZ2V0Q2Fj
aGVkV3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSA/ICJWOERPTVdyYXBwZXI6Omdl
dENhY2hlZFdyYXBwZXIoaW1wbCkiIDogIiR7ZG9tTWFwRnVuY3Rpb259LmdldChpbXBsKSI7CiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSAkZ2V0Q2FjaGVkV3JhcHBlcjsKQEAgLTkyOSw3ICs5MjksNyBAQCBF
TkQKICAgICAgICAgIyBDaGVjayBmb3IgYSB3cmFwcGVyIGluIHRoZSB3cmFwcGVyIGNhY2hlLiBJ
ZiB0aGVyZSBpcyBvbmUsIHdlIGtub3cgdGhhdCBhIGhpZGRlbiByZWZlcmVuY2UgaGFzIGFscmVh
ZHkKICAgICAgICAgIyBiZWVuIGNyZWF0ZWQuIElmIHdlIGRvbid0IGZpbmQgYSB3cmFwcGVyLCB3
ZSBjcmVhdGUgYm90aCBhIHdyYXBwZXIgYW5kIGEgaGlkZGVuIHJlZmVyZW5jZS4KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8JHJldHVyblR5cGU+IHJlc3VsdCA9
ICR7Z2V0dGVyU3RyaW5nfTtcbiIpOwotICAgICAgICBteSAkZG9tTWFwRnVuY3Rpb24gPSBHZXRE
b21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgbXkgJGRv
bU1hcEZ1bmN0aW9uID0gR2V0RG9tTWFwRnVuY3Rpb24oJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFt
ZSwgImluZm8uR2V0SXNvbGF0ZSgpIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyAke2Rv
bU1hcEZ1bmN0aW9ufS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVy
LklzRW1wdHkoKSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
ICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7
CkBAIC0zMjA2LDcgKzMyMDYsMTEgQEAgRU5ECiAKIHN1YiBHZXREb21NYXBGdW5jdGlvbgogewot
ICAgIHJldHVybiAiZ2V0IiAuIEdldERvbU1hcE5hbWUoQF8pIC4gIk1hcCgpIjsKKyAgICBteSAk
ZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15
ICRnZXRJc29sYXRlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gImdldCIgLiBHZXREb21NYXBOYW1l
KCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpIC4gIk1hcCgiIC4gJGdldElzb2xhdGUgLiAiKSI7
CiB9CiAKIHN1YiBHZXREb21NYXBOYW1lCkBAIC0zODE3LDcgKzM4MjEsNyBAQCBzdWIgTmF0aXZl
VG9KU1ZhbHVlCiAKICAgICAjIHNwZWNpYWwgY2FzZSBmb3Igbm9uLURPTSBub2RlIGludGVyZmFj
ZXMKICAgICBpZiAoSXNET01Ob2RlVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgcmV0dXJuICJ0b1Y4
KCR7dmFsdWV9IiAuICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJuTmV3
T2JqZWN0In0gPyAiLCAkZ2V0SXNvbGF0ZSwgdHJ1ZSkiIDogIikiKTsKKyAgICAgICAgcmV0dXJu
ICJ0b1Y4KCR7dmFsdWV9IiAuICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0
dXJuTmV3T2JqZWN0In0gPyAiLCAkZ2V0SXNvbGF0ZSwgdHJ1ZSkiIDogIiwgJGdldElzb2xhdGUp
Iik7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmgKaW5kZXggMTA0MTVkMzUxYzkzNGYyMTMzYzI4NzIzYjkzY2VkZjlmZTQ2NmUzNS4uMzY4
ZmNlYmE4ZmQwYjE1MzI1Mzk4OTQ2MzBkNDkxY2FmMTdhNzQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZs
b2F0NjRBcnJheTo6d3JhcChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmpl
Y3RNYXAoKS5nZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4g
VjhGbG9hdDY0QXJyYXk6OndyYXBTbG93KGltcGwsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oCmluZGV4IDM5MGFkNGYwZGQ3YWFlYTgzYTY0OGY5OTQ5OGE0OGRmMTBhNDYw
YmUuLmM1NTIwMjgzMWRjMDg0NWQzYTZmMGUzNjUyYmRhYWFjNzVmMmE1ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXAoVGVzdEFjdGl2ZURP
TU9iamVjdCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlz
b2xhdGUpLmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RBY3RpdmVET01PYmplY3Q6
OndyYXBTbG93KGltcGwsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aAppbmRleCAyNGJkMjBhYTI2NDM1ZWQ0MTkxMTA3MTY0YWExODVmNGY5ZTA3ODQxLi45OTQ3MmI3
NTVjMWFiZmE1NTIyOTBhYTNiYmY0MzEyOWVhOGUzNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp3cmFwKFRlc3RDdXN0b21OYW1lZEdl
dHRlciogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xh
dGUpLmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6
d3JhcFNsb3coaW1wbCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApp
bmRleCBhODdmMmQ4ZDNjYTRjY2M0YWZhNjc2ZWRjMzI3ZTU4ZjgxZWExOWNiLi4xMTkzMTBiZTM1
NDA4ZmRiNjE1ODA1NjMxOTc5NDg5ZTMwZjk0Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0
KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXBTbG93
KGltcGwsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMWVkZmVjNDhi
ZDE5Zjc5Yzc0MDQ0MTdkM2UxZTU3OTNmZTRkNmI1Ny4uZjg4YjZlMzEwZDdkNzBkZmQ5Y2ExNDE1
ZTIyYzU3MWE4MGZlNzhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaXRlbUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAg
IGdvdG8gZmFpbDsKICAgICB9Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT5pdGVtKGluZGV4KSk7Cisg
ICAgcmV0dXJuIHRvVjgoaW1wLT5pdGVtKGluZGV4KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IH0KICAgICBmYWlsOgogICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAppbmRleCAwMjY4ZWFhNDQ4MTFmZDIzNDlm
YjU0ZWNmNDcxN2I5MTQ4ZWM3MjMxLi5kNTc3Yzk4ZDg2YmE2MjQ1ZGRjNDk4NzVhYWQ1NjE5MGQ0
MzY5YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRl
OgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50VGFyZ2V0Ojp3cmFwKFRlc3RF
dmVudFRhcmdldCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFw
KGlzb2xhdGUpLmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RFdmVudFRhcmdldDo6
d3JhcFNsb3coaW1wbCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGUyMDU4
Yjk3ZjljYzZhY2FiMzI2OGM1NDBkOTExZGZiMGU1Yjk3ZjEuLjIyOTQ1M2E3ODIyOGE3NmRlZTAw
ODQwMDI4ODFmMWZiMTc4NTk3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC04OCw3ICs4
OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVz
dEludGVyZmFjZS5zdXBwbGVtZW50YWxOb2RlLl9nZXQiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVy
biB0b1Y4KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1wKSk7CisgICAgcmV0
dXJuIHRvVjgoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZShpbXApLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCBkMDJjZTI4YjRiZTFmYjgyZDZk
MTRjZDM1OTgzNWJkMWIxMGE4NjI1Li44MjA2NDE1NGNjOGE2MGQxNjI5NjE4YjZmMDY2MTNhN2Y1
ZjNiOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAK
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjp3cmFwKFRlc3RJbnRlcmZh
Y2UqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5nZXQoaW1wbCk7Cisg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldEFjdGl2ZURPTU9iamVj
dE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNl
Ojp3cmFwU2xvdyhpbXBsLCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oCmluZGV4IGE5ODI3NzZiZWIyNzgxYTcyZmRiOTU5OTkwNWM0MTJjYjgyMWQ2
MTEuLjBmZTcxNzk5ZDEwMjEwMGZiMzk0NmM5OGE1MGI4ZThmNGQ0MjNjYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2
YXRlOgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OndyYXAoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRE
T01PYmplY3RNYXAoKS5nZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CiAgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICBy
ZXR1cm4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3coaW1wbCwgaXNvbGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAwYTVmNThmNjhmNTc2YjRi
MjAxOGRhYTkxZjFjYWRjMzY1NGY3OTc2Li5jNmUyNjI1YmZmOWUwOGFhNzkwNjcxNzAxMzZhYTlk
MmJkOTY1OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yOjp3cmFwKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0QWN0
aXZlRE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwog
ICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAgICAgcmV0dXJuIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OndyYXBTbG93KGltcGwsIGlz
b2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcAppbmRleCA1YTU1MjUxZWU2MTEyNGYxMWM4MGNjZTU1MzczNWFlMzBi
NWRmZjBjLi4zOTA5NTFkNTY0NzkwMWFkOTdjZjZlYjA0OWI2NTUyMzNhOGFjNmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRP
bmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoucmVhZE9ubHlUZXN0T2JqQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBSZWZQdHI8
VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT5yZWFkT25seVRlc3RPYmpBdHRyKCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyBnZXRET01PYmplY3RNYXAo
KS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IGdldERPTU9iamVjdE1h
cChpbmZvLkdldElzb2xhdGUoKSkuZ2V0KHJlc3VsdC5nZXQoKSkgOiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIHdyYXBwZXIg
PSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmEKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNhY2hlZEF0dHJpYnV0ZTEuX2dldCIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAgICAgUmVmUHRyPGFueT4gcmVzdWx0ID0gaW1wLT5jYWNoZWRBdHRyaWJ1dGUxKCk7Ci0gICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyBnZXRET01PYmpl
Y3RNYXAoKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IGdldERPTU9i
amVjdE1hcChpbmZvLkdldElzb2xhdGUoKSkuZ2V0KHJlc3VsdC5nZXQoKSkgOiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIHdy
YXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmEKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNhY2hlZEF0dHJpYnV0ZTIu
X2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CiAgICAgUmVmUHRyPGFueT4gcmVzdWx0ID0gaW1wLT5jYWNoZWRBdHRyaWJ1dGUyKCk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyBnZXRE
T01PYmplY3RNYXAoKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IGdl
dERPTU9iamVjdE1hcChpbmZvLkdldElzb2xhdGUoKSkuZ2V0KHJlc3VsdC5nZXQoKSkgOiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAg
ICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtMTExMyw3ICsxMTEzLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW0KICAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvTm9kZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmNvbnRlbnREb2N1bWVu
dCgpKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKTsK
IAotICAgIHJldHVybiB0b1Y4KGltcC0+Y29udGVudERvY3VtZW50KCkpOworICAgIHJldHVybiB0
b1Y4KGltcC0+Y29udGVudERvY3VtZW50KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTg5
Miw3ICsxODkyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRTVkdEb2N1bWVu
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiByZXN1bHQgPSBpbXAtPmdldFNWR0RvY3VtZW50KGVjKTsKICAgICBpZiAoVU5MSUtFTFko
ZWMpKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIH0KICAgICBmYWlsOgogICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJn
cy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDRmMzA1YTlhMDlhOTU1ZWY0NmEwZjRlMzFhNjQ2
NjUwMWUxNmExMjkuLjc4ZjcxOGQ1NWNlNTQ2NzViNTViMDIzOGQ2ZDgzYzVlYWY2YzAzNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RPYmo6OndyYXAoVGVzdE9iaiogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1h
cCgpLmdldChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
Z2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRl
c3RPYmo6OndyYXBTbG93KGltcGwsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDkzM2Y5MThlOWJkZTY1NWYz
ZTdhNjY2YWE4NjUzZWY0YzcwYjk0ZjIuLmJkNmQ5ZTYxMmFiZWU5MWNiZTY0ODAzYjFkMGIzNzQz
OTAxN2JkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXAoVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9i
amVjdE1hcCgpLmdldChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVy
biBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXBTbG93KGltcGwsIGlz
b2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAppbmRleCBjM2ZhZjk4
OWZiODZlNzVjZmRiYmJhMDJhYTBlZWJmZmVjYjNjZGVlLi45Yzg0YjUzODZhNTQ3Y2Y3ODYyMTgx
ZWI4MDhjNGYxOGQxZGMzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBET01EYXRhU3RvcmUmIERP
TURhdGE6OmdldEN1cnJlbnRTdG9yZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0YXRpY0RPTURhdGFTdG9yZSwgZGVmYXVsdFN0b3JlLCAoKSk7Ci0g
ICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoaXNvbGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKGRh
dGEtPmRvbURhdGFTdG9yZSgpICE9IDApKQogICAgICAgICByZXR1cm4gKmRhdGEtPmRvbURhdGFT
dG9yZSgpOwogICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRl
eHQ6OmdldEVudGVyZWQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>