<?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>140397</bug_id>
          
          <creation_ts>2015-01-13 11:38:22 -0800</creation_ts>
          <short_desc>Out of bounds access in BytecodeGenerator::emitGetById under DotAccessorNode::emitBytecode</short_desc>
          <delta_ts>2015-12-08 14:21:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060856</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:38:22 -0800</bug_when>
    <thetext>Out of bounds access in BytecodeGenerator::emitGetById under DotAccessorNode::emitBytecode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060858</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:39:42 -0800</bug_when>
    <thetext>Alexey says:

When using a preliminary version of a patch that enables ASan bounds checking for WTF:Vector, I keep hitting this crash under DotAccessorNode::emitBytecode.

It looks like an actual issue in JSC, not just a mistake in the WIP patch.

Steps to reproduce:
1. Apply patch
2. Load &lt;about:blank&gt; in Safari.

Results: Crash when running Safari injected bundleJS  code.

Looks like what happens is:
1. RegisterID* base = generator.emitNode(m_base); adds a register.
2. generator.finalDestination(dst); calls BytecodeGenerator::newTemporary(), which reclaims some unreferenced registers, including the base.
3. The base is then used in a call to emitGetById().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060859</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:39:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/19437740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060864</commentid>
    <comment_count>3</comment_count>
      <attachid>244527</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:42:03 -0800</bug_when>
    <thetext>Created attachment 244527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060865</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:42:33 -0800</bug_when>
    <thetext>Committed r178365: &lt;http://trac.webkit.org/changeset/178365&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244527</attachid>
            <date>2015-01-13 11:42:03 -0800</date>
            <delta_ts>2015-01-13 11:42:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140397-20150113114209.patch</filename>
            <type>text/plain</type>
            <size>16424</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTAxLTEzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgT3V0IG9mIGJvdW5kcyBhY2Nlc3MgaW4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlk
IHVuZGVyIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAzOTcKKworICAgICAgICBQYXRjaCBieSBB
bGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFJldmlld2VkLCBwZXJmb3JtYW5jZSB0ZXN0
ZWQsIGFuZCBDaGFuZ2VMb2dnZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgTm8gcGVy
Zm9ybWFuY2UgY2hhbmdlLgorCisgICAgICAgIE5vIHRlc3QsIHNpbmNlIHRoaXMgaXMgYSBzbWFs
bCBwYXN0LXRoZS1lbmQgcmVhZCwgd2hpY2ggaXMgdmVyeQorICAgICAgICBkaWZmaWN1bHQgdG8g
dHVybiBpbnRvIGEgcmVwcm9kdWNpYmxlIGZhaWxpbmcgdGVzdCAtLSBhbmQgZXhpc3RpbmcgdGVz
dHMKKyAgICAgICAgY3Jhc2ggcmVsaWFibHkgdXNpbmcgQVNhbi4KKworICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RGVsZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXF1YWxOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6IFVzZSBSZWZQdHIgaW4gbW9y
ZSBwbGFjZXMuIEFueQorICAgICAgICByZWdpc3RlciB1c2VkIGFjcm9zcyBhIGNhbGwgdG8gYSBm
dW5jdGlvbiB0aGF0IG1pZ2h0IGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHRlbXBvcmFyeSByZWdp
c3RlciBtdXN0IGJlIGhlbGQgaW4gYSBSZWZQdHIuCisKIDIwMTUtMDEtMTIgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYWwgSlNBcnJheSogImtleXMi
IGluIG9iamVjdENvbnN0cnVjdG9yS2V5cygpIGlzIG5vdCBtYXJrZWQgZHVyaW5nIGdhcmJhZ2Ug
Y29sbGVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTc4MzExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODQsOSArMzg0LDkgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5
dAogICAgIGlmIChtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUoKSAKICAgICAgICAgJiYgZ2VuZXJhdG9y
LndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2Up
LT5pZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93
QXJndW1lbnRzKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9zdWJzY3JpcHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVy
dHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgZ2VuZXJhdG9yLnVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVn
aXN0ZXIoKSwgcHJvcGVydHkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRBcmd1
bWVudEJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci51bmNo
ZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9CiAK
ICAgICBSZWdpc3RlcklEKiByZXQ7CkBAIC00MjUsMTAgKzQyNSwxMCBAQCBSZWdpc3RlcklEKiBE
b3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kCiAgICAgfQogCiBub25Bcmd1bWVudHNQYXRoOgot
ICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmaW5hbERlc3QsIGJhc2UsIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2UuZ2V0KCksIG1faWRlbnQpOwogICAgIGlm
IChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZShmaW5hbERlc3QsIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUds
b2JhbElELCBudWxscHRyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNTY0LDkgKzU2NCw5IEBA
IFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKIFJlZ2lzdGVySUQqIEZ1
bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7Ci0gICAgUmVnaXN0ZXJJRCogcHJvcGVydHkg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24u
Z2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwpAQCAtODEwLDIzICs4MTAsMjMgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5v
ZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcmVzb2x2
ZS0+aWRlbnRpZmllcigpOwogCiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2Fs
KGlkZW50KSkgewotICAgICAgICBSZWdpc3RlcklEKiBsb2NhbFJlZyA9IGxvY2FsLmdldCgpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbG9jYWxSZWcgPSBsb2NhbC5nZXQoKTsKICAgICAg
ICAgaWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKCk7Ci0gICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsK
KyAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGdl
bmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAg
ICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCksIGxvY2FsUmVnKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcu
Z2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCks
IGxvY2FsUmVnLmdldCgpKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRl
bXBEc3RTcmMuZ2V0KCksIG1fb3BlcmF0b3IpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsUmVnLCB0ZW1wRHN0U3JjLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0TW92ZShsb2NhbFJlZy5nZXQoKSwgdGVtcERzdFNyYy5nZXQoKSk7CiAgICAgICAgICAgICBp
ZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKQogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIHJldHVybiB0ZW1wRHN0LmdldCgpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgbG9jYWxSZWcsIG1fb3BlcmF0b3IpOworICAgICAgICByZXR1cm4gZW1p
dFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IGxvY2FsUmVnLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC05
MjYsMjAgKzkyNiwyMCBAQCBSZWdpc3RlcklEKiBEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
CiBSZWdpc3RlcklEKiBEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKLSAgICBSZWdpc3RlcklEKiBy
MSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHIxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREZWxldGVCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCByMC5nZXQoKSwgcjEpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERl
bGV0ZUJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIwLmdldCgpLCByMS5n
ZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVEb3RO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIERl
bGV0ZURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREZWxl
dGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIwLCBtX2lkZW50KTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREZWxldGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksIHIwLmdldCgpLCBtX2lkZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIERlbGV0ZVZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMTAwMywyMSArMTAwMywyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjpl
bWl0UmVzb2x2ZShCeXRlCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSByZXNvbHZlLT5p
ZGVudGlmaWVyKCk7CiAKICAgICBpZiAoTG9jYWwgbG9jYWwgPSBnZW5lcmF0b3IubG9jYWwoaWRl
bnQpKSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsUmVnID0gbG9jYWwuZ2V0KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBsb2NhbFJlZyA9IGxvY2FsLmdldCgpOwogICAgICAgICBp
ZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRP
bmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKLSAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOworICAg
ICAgICAgICAgbG9jYWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBsb2NhbFJlZy5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZ2VuZXJh
dG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcuZ2V0KCkpOwogICAg
ICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRv
cik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWxSZWcsIHRlbXBEc3QuZ2V0
KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLmdldCgpLCB0ZW1w
RHN0LmdldCgpKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVy
KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9u
SW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVtcERzdC5nZXQoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgbG9jYWxSZWcsIG1fb3BlcmF0
b3IpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBsb2NhbFJlZyk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIGxvY2FsUmVn
LmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgbG9jYWxSZWcuZ2V0KCkpOwogICAgIH0KIAogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKQEAgLTEwOTgsOSArMTA5OCw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCeXRl
Y29kZShCeXQKIAogUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVnaXN0ZXJJ
RCogc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCBzcmMpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Ao
b3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKTsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTA4LDggKzExMDgsOCBAQCBS
ZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiBSZWdpc3RlcklEKiBCaXR3
aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRv
ci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKC0xKSk7Ci0gICAg
UmVnaXN0ZXJJRCogc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX2JpdHhvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0LCBzcmMxKSwgc3JjMSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwci0+
cmVzdWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCks
IE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVt
YmVyVHlwZUlzSW50MzIoKSkpOwogfQogIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIExvZ2ljYWxOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC0xMzI0LDE5ICsxMzI0LDE5IEBAIFJlZ2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVj
b2RlKEIKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKGxlZnQsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgcmlnaHQtPmlzUHVy
ZShnZW5lcmF0b3IpKTsKICAgICBib29sIHdhc1R5cGVvZiA9IGdlbmVyYXRvci5tX2xhc3RPcGNv
ZGVJRCA9PSBvcF90eXBlb2Y7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5lbWl0
Tm9kZShyaWdodCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUocmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24o
KSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7CiAgICAgaWYgKHdhc1R5cGVvZiAmJiAob3Bjb2Rl
SUQgPT0gb3BfbmVxIHx8IG9wY29kZUlEID09IG9wX25zdHJpY3RlcSkpIHsKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRtcCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAg
ICAgICAgaWYgKG9wY29kZUlEID09IG9wX25lcSkKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXF1YWxpdHlPcChvcF9lcSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24odG1wLmdldCgpLCBz
cmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEVxdWFsaXR5T3Aob3BfZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKHRtcC5nZXQoKSwg
c3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogICAgICAgICBlbHNlIGlmIChv
cGNvZGVJRCA9PSBvcF9uc3RyaWN0ZXEpCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKHRtcC5nZXQoKSwg
c3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbih0bXAu
Z2V0KCksIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9ub3QsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgdG1wLmdldCgpKSwgdG1wLmdldCgpKTsKICAgICB9Ci0gICAgUmVnaXN0ZXJJRCog
cmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGVJRCwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMiwgT3BlcmFuZFR5
cGVzKGxlZnQtPnJlc3VsdERlc2NyaXB0b3IoKSwgcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkp
OworICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2Rl
SUQsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0
KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhsZWZ0LT5yZXN1bHREZXNjcmlwdG9yKCksIHJp
Z2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdXJzaGlm
dCAmJiBkc3QgIT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcF91bnNpZ25lZCwgcmVzdWx0LCByZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xMzU2LDggKzEzNTYsOCBAQCBSZWdpc3RlcklEKiBFcXVhbE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlCiAgICAgICAgIHN0ZDo6c3dhcChsZWZ0LCByaWdodCk7CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5k
U2lkZShsZWZ0LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0
b3IpKTsKLSAgICBSZWdpc3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKHJpZ2h0KTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX2VxLCBnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShyaWdodCk7CisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcChvcF9lcSwgZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSk7CiB9CiAK
IFJlZ2lzdGVySUQqIFN0cmljdEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEzNjgsMTYgKzEzNjgsMTYgQEAg
UmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZAogICAgICAgICBzdGQ6OnN3
YXAobGVmdCwgcmlnaHQpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0
b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobGVmdCwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBt
X2V4cHIyLT5pc1B1cmUoZ2VuZXJhdG9yKSk7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVy
YXRvci5lbWl0Tm9kZShyaWdodCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlP
cChvcF9zdHJpY3RlcSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgp
KSwgc3JjMS5nZXQoKSwgc3JjMik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUocmlnaHQpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5
T3Aob3Bfc3RyaWN0ZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogfQogCiBSZWdpc3RlcklEKiBUaHJvd2FibGVC
aW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0
b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9leHByMSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRz
LCBtX2V4cHIyLT5pc1B1cmUoZ2VuZXJhdG9yKSk7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMiwgT3BlcmFuZFR5cGVzKG1fZXhw
cjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgbV9leHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwg
T3BlcmFuZFR5cGVzKG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgbV9leHByMi0+cmVzdWx0
RGVzY3JpcHRvcigpKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAt
MTYwMCw5ICsxNjAwLDkgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9y
TGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1
cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9y
LmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7Ci0gICAgUmVnaXN0ZXJJRCogcmVzdWx0
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3Jp
Z2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogZm9yd2FyZFJlc3VsdCA9IChkc3Qg
PT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQgOiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKHJlc3VsdCksIHJl
c3VsdCk7CisgICAgUmVnaXN0ZXJJRCogZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJl
c3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRl
bnQsIGZvcndhcmRSZXN1bHQpOwogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVy
KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LCBQ
cm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CkBAIC0xNjQ0
LDEwICsxNjQ0LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWMK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRI
YW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMgfHwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJlKGdlbmVyYXRvcikgJiYgbV9yaWdodC0+aXNQ
dXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdCwgbV9yaWdodEhhc0Fzc2ln
bm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7Ci0g
ICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBt
X3JpZ2h0KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklE
KiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJl
c3VsdCA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24ocmVzdWx0KSwgcmVzdWx0KTsKKyAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVz
dWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKIAogICAgIGlmIChtX3N1YnNjcmlw
dC0+aXNTdHJpbmcoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCks
IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCksIGZvcndhcmRS
ZXN1bHQpOwo=
</data>
<flag name="review"
          id="269463"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>