<?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>26762</bug_id>
          
          <creation_ts>2009-06-26 14:53:05 -0700</creation_ts>
          <short_desc>clean up indentRegion</short_desc>
          <delta_ts>2009-07-20 16:22:28 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128573</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-26 14:53:05 -0700</bug_when>
    <thetext>In order to fix 21712, we need to clean up IndentOutdentCommand::indentRegion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128574</commentid>
    <comment_count>1</comment_count>
      <attachid>31952</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-26 14:55:52 -0700</bug_when>
    <thetext>Created attachment 31952
cleans up indentRegion and isolates code dealing with list into a separate function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128593</commentid>
    <comment_count>2</comment_count>
      <attachid>31952</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 16:22:32 -0700</bug_when>
    <thetext>Comment on attachment 31952
cleans up indentRegion and isolates code dealing with list into a separate function

Ryosuke and I sat and reviewed this in person.  r-. I look forward to your followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128611</commentid>
    <comment_count>3</comment_count>
      <attachid>31963</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-26 18:25:20 -0700</bug_when>
    <thetext>Created attachment 31963
cleans up indentRegion and adds some utility functions to htmlediting.h/cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128633</commentid>
    <comment_count>4</comment_count>
      <attachid>31963</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 19:15:19 -0700</bug_when>
    <thetext>Comment on attachment 31963
cleans up indentRegion and adds some utility functions to htmlediting.h/cpp

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128634</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 19:15:38 -0700</bug_when>
    <thetext>Ryosuke and I went over this in person already too. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128635</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 19:15:52 -0700</bug_when>
    <thetext>I&apos;ll land this later when I&apos;m not walking away from the computer...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128694</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-27 19:45:56 -0700</bug_when>
    <thetext>Assigning for Landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128700</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-27 20:14:28 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/45316.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131433</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-13 16:10:20 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Landed in http://trac.webkit.org/changeset/45316.

Thank you for landing my patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31952</attachid>
            <date>2009-06-26 14:55:52 -0700</date>
            <delta_ts>2009-06-26 18:25:20 -0700</delta_ts>
            <desc>cleans up indentRegion and isolates code dealing with list into a separate function</desc>
            <filename>fix26762</filename>
            <type>text/plain</type>
            <size>10611</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xl
YW4gdXAgZm9yIEluZGVudE91dGRlbnRDb21tYW5kOjppbmRlbnRSZWdpb24uCisgICAgICAgIElz
b2xhdGVkIGFsbCBjb2RlIGRlYWxpbmcgd2l0aCBsaXN0cyBpbnRvIHRyeUluZGVudGluZ0FzTGlz
dEl0ZW0uCisKKyAgICAgICAgKiBlZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluZGVudE91dGRlbnRDb21tYW5kOjp0cnlJbmRlbnRpbmdBc0xpc3RJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGVudE91dGRlbnRDb21tYW5kOjppbmRlbnRSZWdp
b24pOgorICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaDoKKyAgICAgICAg
KiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xp
c3RDaGlsZCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCiAyMDA5LTA2LTI2
ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBSb3dlLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQu
Y3BwCShyZXZpc2lvbiA0NTE5MSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNDQgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBJbmRlbnRPdXRkZW50Q29tbWFuZAogICAgIHJldHVybiBwbGFjZWhvbGRlci5yZWxl
YXNlKCk7CiB9CiAKK2Jvb2wgSW5kZW50T3V0ZGVudENvbW1hbmQ6OnRyeUluZGVudGluZ0FzTGlz
dEl0ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZOZXh0UGFyYWdyYXBoKSB7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IGxpc3ROb2RlID0gZW5jbG9zaW5nTGlzdChlbmRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBwbGFjZWhvbGRlciA9IGNy
ZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gbGlzdEl0
ZW0gPSBjcmVhdGVMaXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7CisKKyAgICBpZiAoIWxpc3RO
b2RlKSByZXR1cm4gZmFsc2U7CisKKyAgICBFbGVtZW50KiBjdXJyZW50TGlzdEl0ZW0gPSBlbmNs
b3NpbmdMaXN0Q2hpbGQoZW5kT2ZDdXJyZW50UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9k
ZSgpKTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnID0gbGlzdE5vZGUtPnRhZ1FO
YW1lKCk7CisgICAgRWxlbWVudCogcHJldmlvdXNMaXN0ID0gY3VycmVudExpc3RJdGVtLT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCk7CisgICAgaWYgKHByZXZpb3VzTGlzdAorICAgICAgICAmJiAo
IWlzQ29udGVudEVkaXRhYmxlKHByZXZpb3VzTGlzdCkgfHwgIXByZXZpb3VzTGlzdC0+aGFzVGFn
TmFtZShsaXN0VGFnKQorICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8VmlzaWJsZVBvc2l0aW9u
Pihwb3NpdGlvbkFmdGVyTm9kZShwcmV2aW91c0xpc3QpKSAhPSBzdGF0aWNfY2FzdDxWaXNpYmxl
UG9zaXRpb24+KHBvc2l0aW9uQmVmb3JlTm9kZShjdXJyZW50TGlzdEl0ZW0pLnVwc3RyZWFtKCkp
KSkKKyAgICAgICAgcHJldmlvdXNMaXN0ID0gMDsKKworICAgIGlmIChwcmV2aW91c0xpc3QpIHsK
KyAgICAgICAgLy8gVGhlIHByZXZpb3VzIHBhcmFncmFwaCB3YXMgaW5zaWRlIHRoZSBzYW1lIGxp
c3QsIHNvIGFkZCB0aGlzIGxpc3QgaXRlbSB0byB0aGUgbGlzdCB3ZSBhbHJlYWR5IGNyZWF0ZWQK
KyAgICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbSwgcHJldmlvdXNMaXN0KTsKKyAgICAgICAgYXBw
ZW5kTm9kZShwbGFjZWhvbGRlciwgbGlzdEl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IENsb25lIHRoZSBsaXN0IGVsZW1lbnQsIGluc2VydCBpdCBiZWZvcmUgdGhlIGN1cnJlbnQgcGFy
YWdyYXBoLCBhbmQgbW92ZSB0aGUgcGFyYWdyYXBoIGludG8gaXQuCisgICAgICAgIFJlZlB0cjxF
bGVtZW50PiBjbG9uZWRMaXN0ID0gbGlzdE5vZGUtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJl
bigpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGNsb25lZExpc3QsIGVuY2xvc2luZ0xpc3RD
aGlsZChlbmRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpKTsKKyAg
ICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbSwgY2xvbmVkTGlzdCk7CisgICAgICAgIGFwcGVuZE5v
ZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtKTsKKyAgICB9CisKKyAgICBtb3ZlUGFyYWdyYXBoKHN0
YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdy
YXBoLCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24ocGxhY2Vob2xkZXIsIDApKSwgdHJ1ZSk7Cisg
ICAgLy8gbW92ZVBhcmFncmFwaCBzaG91bGQgbm90IGRlc3Ryb3kgY29udGVudCB0aGF0IGNvbnRh
aW5zIGVuZE9mTmV4dFBhcmFncmFwaCwgYnV0IGlmIGl0IGRvZXMsIHJldHVybiBoZXJlCisgICAg
Ly8gdG8gYXZvaWQgYSBjcmFzaC4KKyAgICBpZiAoZW5kT2ZOZXh0UGFyYWdyYXBoLmlzTm90TnVs
bCgpICYmICFlbmRPZk5leHRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmluRG9j
dW1lbnQoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgSW5kZW50T3V0ZGVu
dENvbW1hbmQ6OmluZGVudFJlZ2lvbigpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBzZWxlY3Rpb25Gb3JQYXJhZ3JhcGhJdGVyYXRpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwpA
QCAtMTI5LDYxICsxNjcsNDEgQEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVn
aW9uKAogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlv
bihwbGFjZWhvbGRlci5nZXQoKSwgMCksIERPV05TVFJFQU0pKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKLSAgICBSZWZQdHI8RWxlbWVudD4gcHJldmlvdXNMaXN0Tm9kZTsKLSAgICBS
ZWZQdHI8RWxlbWVudD4gbmV3TGlzdE5vZGU7CisKICAgICBSZWZQdHI8RWxlbWVudD4gbmV3Qmxv
Y2txdW90ZTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gZW5k
T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlvbik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZEFm
dGVyU2VsZWN0aW9uID0gZW5kT2ZQYXJhZ3JhcGgoZW5kT2ZQYXJhZ3JhcGgoZW5kT2ZTZWxlY3Rp
b24pLm5leHQoKSk7CiAgICAgd2hpbGUgKGVuZE9mQ3VycmVudFBhcmFncmFwaCAhPSBlbmRBZnRl
clNlbGVjdGlvbikgewogICAgICAgICAvLyBJdGVyYXRlIGFjcm9zcyB0aGUgc2VsZWN0ZWQgcGFy
YWdyYXBocy4uLgogICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZOZXh0UGFyYWdyYXBoID0g
ZW5kT2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoLm5leHQoKSk7Ci0gICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBsaXN0Tm9kZSA9IGVuY2xvc2luZ0xpc3QoZW5kT2ZDdXJyZW50UGFyYWdy
YXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGlu
c2VydGlvblBvaW50OwotICAgICAgICBpZiAobGlzdE5vZGUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxFbGVtZW50PiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsK
LSAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gcGxhY2Vob2xkZXI7CisgICAgICAgIGlmICh0
cnlJbmRlbnRpbmdBc0xpc3RJdGVtKGVuZE9mQ3VycmVudFBhcmFncmFwaCwgZW5kT2ZOZXh0UGFy
YWdyYXBoKSkKICAgICAgICAgICAgIG5ld0Jsb2NrcXVvdGUgPSAwOwotICAgICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGxpc3RJdGVtID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkp
OwotICAgICAgICAgICAgaWYgKGxpc3ROb2RlID09IHByZXZpb3VzTGlzdE5vZGUpIHsKLSAgICAg
ICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgcGFyYWdyYXBoIHdhcyBpbnNpZGUgdGhlIHNhbWUg
bGlzdCwgc28gYWRkIHRoaXMgbGlzdCBpdGVtIHRvIHRoZSBsaXN0IHdlIGFscmVhZHkgY3JlYXRl
ZAotICAgICAgICAgICAgICAgIGFwcGVuZE5vZGUobGlzdEl0ZW0sIG5ld0xpc3ROb2RlKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIENsb25lIHRoZSBsaXN0IGVsZW1lbnQs
IGluc2VydCBpdCBiZWZvcmUgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCBhbmQgbW92ZSB0aGUgcGFy
YWdyYXBoIGludG8gaXQuCi0gICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZExp
c3QgPSBsaXN0Tm9kZS0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7Ci0gICAgICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShjbG9uZWRMaXN0LCBlbmNsb3NpbmdMaXN0Q2hpbGQoZW5k
T2ZDdXJyZW50UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbSwgY2xvbmVkTGlzdCk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kTm9kZShwbGFjZWhvbGRlciwgbGlzdEl0ZW0pOwotICAgICAgICAgICAgICAgIG5ld0xp
c3ROb2RlID0gY2xvbmVkTGlzdDsKLSAgICAgICAgICAgICAgICBwcmV2aW91c0xpc3ROb2RlID0g
bGlzdE5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3QmxvY2txdW90
ZSkKLSAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91cyBwYXJhZ3JhcGggd2FzIHB1dCBpbnRvIGEg
bmV3IGJsb2NrcXVvdGUsIHNvIG1vdmUgdGhpcyBwYXJhZ3JhcGggdGhlcmUgYXMgd2VsbAotICAg
ICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0
aW9uKGVuZE9mQ3VycmVudFBhcmFncmFwaCwgbmV3QmxvY2txdW90ZSk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJsb2NrcXVvdGUgYW5kIGluc2VydCBpdCBh
cyBhIGNoaWxkIG9mIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQuIFdlIGFjY29tcGxpc2gKLSAg
ICAgICAgICAgIC8vIHRoaXMgYnkgc3BsaXR0aW5nIGFsbCBwYXJlbnRzIG9mIHRoZSBjdXJyZW50
IHBhcmFncmFwaCB1cCB0byB0aGF0IHBvaW50LgotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IGJsb2NrcXVvdGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsK
LSAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJl
bnRQYXJhZ3JhcGgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IE5vZGUqIGVuY2xvc2luZ0NlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHN0YXJ0LCAmaXNUYWJs
ZUNlbGwpOwotICAgICAgICAgICAgTm9kZSogbm9kZVRvU3BsaXRUbyA9IGVuY2xvc2luZ0NlbGwg
PyBlbmNsb3NpbmdDZWxsIDogZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwotICAgICAg
ICAgICAgUmVmUHRyPE5vZGU+IHN0YXJ0T2ZOZXdCbG9jayA9IHNwbGl0VHJlZVRvTm9kZShzdGFy
dC5ub2RlKCksIG5vZGVUb1NwbGl0VG8pOwotICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShi
bG9ja3F1b3RlLCBzdGFydE9mTmV3QmxvY2spOwotICAgICAgICAgICAgbmV3QmxvY2txdW90ZSA9
IGJsb2NrcXVvdGU7Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1
b3RlTGV2ZWxGb3JJbnNlcnRpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBuZXdCbG9ja3F1b3Rl
KTsKKyAgICAgICAgICAgIE5vZGUqIGVuY2xvc2luZ0NlbGwgPSAwOworCisgICAgICAgICAgICBp
ZiAoIW5ld0Jsb2NrcXVvdGUpIHsKKyAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYmxv
Y2txdW90ZSBhbmQgaW5zZXJ0IGl0IGFzIGEgY2hpbGQgb2YgdGhlIHJvb3QgZWRpdGFibGUgZWxl
bWVudC4gV2UgYWNjb21wbGlzaAorICAgICAgICAgICAgICAgIC8vIHRoaXMgYnkgc3BsaXR0aW5n
IGFsbCBwYXJlbnRzIG9mIHRoZSBjdXJyZW50IHBhcmFncmFwaCB1cCB0byB0aGF0IHBvaW50Lgor
ICAgICAgICAgICAgICAgIG5ld0Jsb2NrcXVvdGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxl
bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICBQb3NpdGlvbiBzdGFydCA9IHN0YXJ0
T2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICAgICAgICAgIGVuY2xvc2luZ0NlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHN0YXJ0LCAm
aXNUYWJsZUNlbGwpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGVUb1NwbGl0VG8gPSBlbmNs
b3NpbmdDZWxsID8gZW5jbG9zaW5nQ2VsbCA6IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gc3RhcnRPZk5ld0Jsb2NrID0gc3BsaXRU
cmVlVG9Ob2RlKHN0YXJ0Lm5vZGUoKSwgbm9kZVRvU3BsaXRUbyk7CisgICAgICAgICAgICAgICAg
aW5zZXJ0Tm9kZUJlZm9yZShuZXdCbG9ja3F1b3RlLCBzdGFydE9mTmV3QmxvY2spOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gaW5zZXJ0aW9uUG9pbnQgPSBw
cmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uKGVuZE9mQ3VycmVudFBhcmFncmFwaCwg
bmV3QmxvY2txdW90ZSk7CiAgICAgICAgICAgICAvLyBEb24ndCBwdXQgdGhlIG5leHQgcGFyYWdy
YXBoIGluIHRoZSBibG9ja3F1b3RlIHdlIGp1c3QgY3JlYXRlZCBmb3IgdGhpcyBwYXJhZ3JhcGgg
dW5sZXNzIAogICAgICAgICAgICAgLy8gdGhlIG5leHQgcGFyYWdyYXBoIGlzIGluIHRoZSBzYW1l
IGNlbGwuCiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nQ2VsbCAmJiBlbmNsb3NpbmdDZWxsICE9
IGVuY2xvc2luZ05vZGVPZlR5cGUoZW5kT2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCks
ICZpc1RhYmxlQ2VsbCkpCiAgICAgICAgICAgICAgICAgbmV3QmxvY2txdW90ZSA9IDA7Ci0gICAg
ICAgIH0KLSAgICAgICAgbW92ZVBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVu
dFBhcmFncmFwaCksIGVuZE9mQ3VycmVudFBhcmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0
aW9uKGluc2VydGlvblBvaW50LCAwKSksIHRydWUpOwotICAgICAgICAvLyBtb3ZlUGFyYWdyYXBo
IHNob3VsZCBub3QgZGVzdHJveSBjb250ZW50IHRoYXQgY29udGFpbnMgZW5kT2ZOZXh0UGFyYWdy
YXBoLCBidXQgaWYgaXQgZG9lcywgcmV0dXJuIGhlcmUKLSAgICAgICAgLy8gdG8gYXZvaWQgYSBj
cmFzaC4KLSAgICAgICAgaWYgKGVuZE9mTmV4dFBhcmFncmFwaC5pc05vdE51bGwoKSAmJiAhZW5k
T2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbW92ZVBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBh
cmFncmFwaCksIGVuZE9mQ3VycmVudFBhcmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9u
KGluc2VydGlvblBvaW50LCAwKSksIHRydWUpOworICAgICAgICAgICAgLy8gbW92ZVBhcmFncmFw
aCBzaG91bGQgbm90IGRlc3Ryb3kgY29udGVudCB0aGF0IGNvbnRhaW5zIGVuZE9mTmV4dFBhcmFn
cmFwaCwgYnV0IGlmIGl0IGRvZXMsIHJldHVybiBoZXJlCisgICAgICAgICAgICAvLyB0byBhdm9p
ZCBhIGNyYXNoLgorICAgICAgICAgICAgaWYgKGVuZE9mTmV4dFBhcmFncmFwaC5pc05vdE51bGwo
KSAmJiAhZW5kT2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5pbkRvY3Vt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZW5kT2ZD
dXJyZW50UGFyYWdyYXBoID0gZW5kT2ZOZXh0UGFyYWdyYXBoOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCShyZXZpc2lvbiA0NTE5MSkKKysrIFdlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBvdXRkZW50UmVnaW9uKCk7CiAgICAgdm9pZCBv
dXRkZW50UGFyYWdyYXBoKCk7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBwcmVwYXJlQmxvY2tx
dW90ZUxldmVsRm9ySW5zZXJ0aW9uKFZpc2libGVQb3NpdGlvbiYsIFJlZlB0cjxFbGVtZW50PiYp
OworICAgIGJvb2wgdHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAogICAgIEVJbmRlbnRUeXBlIG1fdHlwZU9mQWN0
aW9uOwogICAgIGludCBtX21hcmdpbkluUGl4ZWxzOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCShyZXZpc2lvbiA0NTE5MSkKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2NSw3ICs2NjUsNyBAQCBIVE1MRWxlbWVudCogZW5jbG9zaW5n
TGlzdChOb2RlKiBub2RlKQogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBlbmNsb3NpbmdMaXN0
Q2hpbGQoTm9kZSAqbm9kZSkKK0hUTUxFbGVtZW50KiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSAq
bm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc2LDcgKzY3
Niw3IEBAIE5vZGUqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlICpub2RlKQogICAgIC8vIEZJWE1F
OiBUaGlzIGZ1bmN0aW9uIGlzIGluYXBwcm9wcmlhdGVseSBuYW1lZCBpZiBpdCBzdGFydHMgd2l0
aCBub2RlIGluc3RlYWQgb2Ygbm9kZS0+cGFyZW50Tm9kZSgpCiAgICAgZm9yIChOb2RlKiBuID0g
bm9kZTsgbiAmJiBuLT5wYXJlbnROb2RlKCk7IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKICAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUobGlUYWcpIHx8IGlzTGlzdEVsZW1lbnQobi0+cGFyZW50Tm9k
ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4obik7CiAgICAgICAgIGlmIChuID09IHJvb3QgfHwgaXNUYWJsZUNl
bGwobikpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuaAkocmV2aXNpb24gNDUxOTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIE5vZGUqIGVuY2xvc2luZ0FuY2hvckVs
ZW1lbnQoY29uc3QgUG9zaXQKIGJvb2wgaXNMaXN0RWxlbWVudChOb2RlKik7CiBIVE1MRWxlbWVu
dCogZW5jbG9zaW5nTGlzdChOb2RlKik7CiBIVE1MRWxlbWVudCogb3V0ZXJtb3N0RW5jbG9zaW5n
TGlzdChOb2RlKik7Ci1Ob2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOworSFRNTEVsZW1l
bnQqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlKik7CiBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoTm9k
ZSopOwogYm9vbCBpc1RhYmxlRWxlbWVudChOb2RlKik7CiBib29sIGlzVGFibGVDZWxsKGNvbnN0
IE5vZGUqKTsK
</data>
<flag name="review"
          id="16499"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31963</attachid>
            <date>2009-06-26 18:25:20 -0700</date>
            <delta_ts>2009-06-26 19:15:19 -0700</delta_ts>
            <desc>cleans up indentRegion and adds some utility functions to htmlediting.h/cpp</desc>
            <filename>fix26762b</filename>
            <type>text/plain</type>
            <size>46861</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzYyCisKKyAgICAgICAgQ2xl
YW4gdXAgZm9yIEluZGVudE91dGRlbnRDb21tYW5kOjppbmRlbnRSZWdpb24sIGFuZCBzb2x2ZWQg
bW9zdCBvZiBwcm9ibGVtcyByZWxhdGVkIHRvIHRoZSBidWcgMjE3MTIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxMgorCisgICAgICAgIEFkZGVk
IGZldyB1dGlsaXR5IGZ1bmN0aW9ucyB0byBodG1sZWRpdGluZy5oL2NwcAorCisgICAgICAgIGlz
VmlzaWJpbHlBZGphY2VudCBjaGVja3Mgd2hldGhlciB0aGUgZmlyc3QgcG9zaXRpb24gaXMgdmlz
aWJseSBuZXh0IHRvIHRoZSBzZWNvbmQgcG9zaXRpb24uCisgICAgICAgIGkuZS4gdGhlcmUgaXMg
bm8gdmlzaWJsZSBub2RlIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgcG9zaXRpb25zCisK
KyAgICAgICAgY2FuTWVyZ2VMaXN0cyBjaGVja3Mgd2hldGhlciB0d28gbGlzdHMgY2FuIGJlIG1l
cmdlZC4KKyAgICAgICAgSXQgY2hlY2tzIHRoZSB0eXBlIG9mIGxpc3QsIHRoZSBlZGl0aW5nIGJv
dW5kYXJ5LCBhbmQgYWRqYWNlbmN5IG9mIHRoZSBsaXN0cy4KKworICAgICAgICBUZXN0czogZWRp
dGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTEuaHRtbAorICAgICAgICAgICAg
ICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAorICAgICAg
ICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQu
aHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTYuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtbmVzdGVkLWxpc3RzLTcuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9leGVjQ29tbWFu
ZC9vdXRkZW50LW5lc3RlZC1saXN0cy0xLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMi5odG1sCisgICAgICAgICAgICAgICBlZGl0
aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbAorICAgICAgICAgICAg
ICAgZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy00Lmh0bWwKKworICAg
ICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OnByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OnRyeUluZGVudGlu
Z0FzTGlzdEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6Omlu
ZGVudEludG9CbG9ja3F1b3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGVudE91dGRlbnRDb21t
YW5kOjppbmRlbnRSZWdpb24pOgorICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVuY2xvc2luZ0xpc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5NZXJnZUxpc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJpbHlBZGphY2VudCk6CisgICAgICAgICogZWRp
dGluZy9odG1sZWRpdGluZy5oOgorCiAyMDA5LTA2LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhdmUgTGV2aW4K
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkocmV2aXNpb24g
NDUxOTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnRP
dXRkZW50Q29tbWEKIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIG1vdmVQ
YXJhZ3JhcGgncyB0ZW5kZW5jeSB0byBzdHJpcCBibG9ja3F1b3Rlcy4gSXQgdXBkYXRlcyBsYXN0
QmxvY2txdW90ZSB0byBwb2ludCB0byB0aGUKIC8vIGNvcnJlY3QgbGV2ZWwgZm9yIHRoZSBjdXJy
ZW50IHBhcmFncmFwaCwgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgcGxhY2Vob2xkZXIgYnIg
d2hlcmUgdGhlIGluc2VydGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkLgotUGFzc1JlZlB0cjxFbGVt
ZW50PiBJbmRlbnRPdXRkZW50Q29tbWFuZDo6cHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2Vy
dGlvbihWaXNpYmxlUG9zaXRpb24mIGN1cnJlbnRQYXJhZ3JhcGgsIFJlZlB0cjxFbGVtZW50PiYg
bGFzdEJsb2NrcXVvdGUpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEluZGVudE91dGRlbnRDb21tYW5k
OjpwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgY3VycmVudFBhcmFncmFwaCwgUmVmUHRyPEVsZW1lbnQ+JiBsYXN0QmxvY2txdW90ZSkKIHsK
ICAgICBpbnQgY3VycmVudEJsb2NrcXVvdGVMZXZlbCA9IDA7CiAgICAgaW50IGxhc3RCbG9ja3F1
b3RlTGV2ZWwgPSAwOwpAQCAtMTA3LDYgKzEwNyw2MiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IElu
ZGVudE91dGRlbnRDb21tYW5kCiAgICAgcmV0dXJuIHBsYWNlaG9sZGVyLnJlbGVhc2UoKTsKIH0K
IAorYm9vbCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mQ3VycmVudFBhcmFncmFwaCkKK3sKKyAgICAvLyBJZiBv
dXIgc2VsZWN0aW9uIGlzIG5vdCBpbnNpZGUgYSBsaXN0LCBiYWlsIG91dC4KKyAgICBOb2RlKiBs
YXN0Tm9kZUluU2VsZWN0ZWRQYXJhZ3JhcGggPSBlbmRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGxpc3ROb2RlID0gZW5jbG9z
aW5nTGlzdChsYXN0Tm9kZUluU2VsZWN0ZWRQYXJhZ3JhcGgpOworICAgIGlmICghbGlzdE5vZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxFbGVtZW50KiBzZWxlY3RlZExpc3RJ
dGVtID0gZW5jbG9zaW5nTGlzdENoaWxkKGxhc3ROb2RlSW5TZWxlY3RlZFBhcmFncmFwaCk7CisK
KyAgICAvLyBGSVhNRTogcHJldmlvdXNFbGVtZW50U2libGluZyBkb2VzIG5vdCBpZ25vcmUgbm9u
LXJlbmRlcmVkIGNvbnRlbnQgbGlrZSA8c3Bhbj48L3NwYW4+LiAgU2hvdWxkIHdlPworICAgIEVs
ZW1lbnQqIHByZXZpb3VzTGlzdCA9IHNlbGVjdGVkTGlzdEl0ZW0tPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKTsKKyAgICBFbGVtZW50KiBuZXh0TGlzdCA9IHNlbGVjdGVkTGlzdEl0ZW0tPm5leHRF
bGVtZW50U2libGluZygpOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xpc3QgPSBkb2N1bWVu
dCgpLT5jcmVhdGVFbGVtZW50KGxpc3ROb2RlLT50YWdRTmFtZSgpLCBmYWxzZSk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IG5ld0xpc3RJdGVtID0gc2VsZWN0ZWRMaXN0SXRlbS0+Y2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3Jl
YXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOworICAgIGluc2VydE5vZGVCZWZvcmUobmV3TGlz
dCwgc2VsZWN0ZWRMaXN0SXRlbSk7CisgICAgYXBwZW5kTm9kZShuZXdMaXN0SXRlbSwgbmV3TGlz
dCk7CisgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwgbmV3TGlzdEl0ZW0pOworCisgICAgbW92
ZVBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaCksIGVuZE9m
Q3VycmVudFBhcmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVyLCAw
KSksIHRydWUpOworCisgICAgaWYgKGNhbk1lcmdlTGlzdHMocHJldmlvdXNMaXN0LCBuZXdMaXN0
LmdldCgpKSkKKyAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xpc3QsIG5l
d0xpc3QpOworICAgIGlmIChjYW5NZXJnZUxpc3RzKG5ld0xpc3QuZ2V0KCksIG5leHRMaXN0KSkK
KyAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhuZXdMaXN0LCBuZXh0TGlzdCk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK3ZvaWQgSW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVu
dEludG9CbG9ja3F1b3RlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZDdXJyZW50UGFyYWdy
YXBoLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mTmV4dFBhcmFncmFwaCwgUmVmUHRyPEVs
ZW1lbnQ+JiB0YXJnZXRCbG9ja3F1b3RlKQoreworICAgIE5vZGUqIGVuY2xvc2luZ0NlbGwgPSAw
OworCisgICAgaWYgKCF0YXJnZXRCbG9ja3F1b3RlKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIG5l
dyBibG9ja3F1b3RlIGFuZCBpbnNlcnQgaXQgYXMgYSBjaGlsZCBvZiB0aGUgcm9vdCBlZGl0YWJs
ZSBlbGVtZW50LiBXZSBhY2NvbXBsaXNoCisgICAgICAgIC8vIHRoaXMgYnkgc3BsaXR0aW5nIGFs
bCBwYXJlbnRzIG9mIHRoZSBjdXJyZW50IHBhcmFncmFwaCB1cCB0byB0aGF0IHBvaW50LgorICAg
ICAgICB0YXJnZXRCbG9ja3F1b3RlID0gY3JlYXRlSW5kZW50QmxvY2txdW90ZUVsZW1lbnQoZG9j
dW1lbnQoKSk7CisgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChlbmRP
ZkN1cnJlbnRQYXJhZ3JhcGgpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGVuY2xvc2luZ0Nl
bGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHN0YXJ0LCAmaXNUYWJsZUNlbGwpOworICAgICAgICBO
b2RlKiBub2RlVG9TcGxpdFRvID0gZW5jbG9zaW5nQ2VsbCA/IGVuY2xvc2luZ0NlbGwgOiBlZGl0
YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydCk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBzdGFydE9m
TmV3QmxvY2sgPSBzcGxpdFRyZWVUb05vZGUoc3RhcnQubm9kZSgpLCBub2RlVG9TcGxpdFRvKTsK
KyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZSh0YXJnZXRCbG9ja3F1b3RlLCBzdGFydE9mTmV3Qmxv
Y2spOworICAgIH0KKworICAgIFJlZlB0cjxFbGVtZW50PiBpbnNlcnRpb25Qb2ludCA9IHByZXBh
cmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCB0YXJn
ZXRCbG9ja3F1b3RlKTsKKworICAgIC8vIERvbid0IHB1dCB0aGUgbmV4dCBwYXJhZ3JhcGggaW4g
dGhlIGJsb2NrcXVvdGUgd2UganVzdCBjcmVhdGVkIGZvciB0aGlzIHBhcmFncmFwaCB1bmxlc3Mg
CisgICAgLy8gdGhlIG5leHQgcGFyYWdyYXBoIGlzIGluIHRoZSBzYW1lIGNlbGwuCisgICAgaWYg
KGVuY2xvc2luZ0NlbGwgJiYgZW5jbG9zaW5nQ2VsbCAhPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKGVu
ZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLCAmaXNUYWJsZUNlbGwpKQorICAgICAg
ICB0YXJnZXRCbG9ja3F1b3RlID0gMDsKKworICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnRPZlBhcmFn
cmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIFZpc2li
bGVQb3NpdGlvbihQb3NpdGlvbihpbnNlcnRpb25Qb2ludCwgMCkpLCB0cnVlKTsKK30KKwogdm9p
ZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKCkKIHsKICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbiA9IHNlbGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlvbihlbmRpbmdT
ZWxlY3Rpb24oKSk7CkBAIC0xMTcsNyArMTczLDcgQEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFu
ZDo6aW5kZW50UmVnaW9uKAogCiAgICAgQVNTRVJUKCFzdGFydE9mU2VsZWN0aW9uLmlzTnVsbCgp
KTsKICAgICBBU1NFUlQoIWVuZE9mU2VsZWN0aW9uLmlzTnVsbCgpKTsKLSAgICAKKwogICAgIC8v
IFNwZWNpYWwgY2FzZSBlbXB0eSByb290IGVkaXRhYmxlIGVsZW1lbnRzIGJlY2F1c2UgdGhlcmUn
cyBub3RoaW5nIHRvIHNwbGl0CiAgICAgLy8gYW5kIHRoZXJlJ3Mgbm90aGluZyB0byBtb3ZlLgog
ICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRv
d25zdHJlYW0oKTsKQEAgLTEyOSw1OCArMTg1LDIxIEBAIHZvaWQgSW5kZW50T3V0ZGVudENvbW1h
bmQ6OmluZGVudFJlZ2lvbigKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oUG9zaXRpb24ocGxhY2Vob2xkZXIuZ2V0KCksIDApLCBET1dOU1RSRUFNKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHByZXZpb3VzTGlz
dE5vZGU7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xpc3ROb2RlOwotICAgIFJlZlB0cjxFbGVt
ZW50PiBuZXdCbG9ja3F1b3RlOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGVGb3JO
ZXh0SW5kZW50OwogICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1cnJlbnRQYXJhZ3JhcGggPSBl
bmRPZlBhcmFncmFwaChzdGFydE9mU2VsZWN0aW9uKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
QWZ0ZXJTZWxlY3Rpb24gPSBlbmRPZlBhcmFncmFwaChlbmRPZlBhcmFncmFwaChlbmRPZlNlbGVj
dGlvbikubmV4dCgpKTsKICAgICB3aGlsZSAoZW5kT2ZDdXJyZW50UGFyYWdyYXBoICE9IGVuZEFm
dGVyU2VsZWN0aW9uKSB7CiAgICAgICAgIC8vIEl0ZXJhdGUgYWNyb3NzIHRoZSBzZWxlY3RlZCBw
YXJhZ3JhcGhzLi4uCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZk5leHRQYXJhZ3JhcGgg
PSBlbmRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgubmV4dCgpKTsKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGxpc3ROb2RlID0gZW5jbG9zaW5nTGlzdChlbmRPZkN1cnJlbnRQYXJh
Z3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwotICAgICAgICBSZWZQdHI8RWxlbWVudD4g
aW5zZXJ0aW9uUG9pbnQ7Ci0gICAgICAgIGlmIChsaXN0Tm9kZSkgewotICAgICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
OwotICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBwbGFjZWhvbGRlcjsKLSAgICAgICAgICAg
IG5ld0Jsb2NrcXVvdGUgPSAwOwotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpc3RJdGVt
ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwotICAgICAgICAgICAgaWYgKGxp
c3ROb2RlID09IHByZXZpb3VzTGlzdE5vZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgcHJl
dmlvdXMgcGFyYWdyYXBoIHdhcyBpbnNpZGUgdGhlIHNhbWUgbGlzdCwgc28gYWRkIHRoaXMgbGlz
dCBpdGVtIHRvIHRoZSBsaXN0IHdlIGFscmVhZHkgY3JlYXRlZAotICAgICAgICAgICAgICAgIGFw
cGVuZE5vZGUobGlzdEl0ZW0sIG5ld0xpc3ROb2RlKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRO
b2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIENsb25lIHRoZSBsaXN0IGVsZW1lbnQsIGluc2VydCBpdCBiZWZvcmUgdGhl
IGN1cnJlbnQgcGFyYWdyYXBoLCBhbmQgbW92ZSB0aGUgcGFyYWdyYXBoIGludG8gaXQuCi0gICAg
ICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZExpc3QgPSBsaXN0Tm9kZS0+Y2xvbmVF
bGVtZW50V2l0aG91dENoaWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9y
ZShjbG9uZWRMaXN0LCBlbmNsb3NpbmdMaXN0Q2hpbGQoZW5kT2ZDdXJyZW50UGFyYWdyYXBoLmRl
ZXBFcXVpdmFsZW50KCkubm9kZSgpKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kTm9kZShsaXN0
SXRlbSwgY2xvbmVkTGlzdCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRl
ciwgbGlzdEl0ZW0pOwotICAgICAgICAgICAgICAgIG5ld0xpc3ROb2RlID0gY2xvbmVkTGlzdDsK
LSAgICAgICAgICAgICAgICBwcmV2aW91c0xpc3ROb2RlID0gbGlzdE5vZGU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3QmxvY2txdW90ZSkKLSAgICAgICAgICAgIC8vIFRo
ZSBwcmV2aW91cyBwYXJhZ3JhcGggd2FzIHB1dCBpbnRvIGEgbmV3IGJsb2NrcXVvdGUsIHNvIG1v
dmUgdGhpcyBwYXJhZ3JhcGggdGhlcmUgYXMgd2VsbAotICAgICAgICAgICAgaW5zZXJ0aW9uUG9p
bnQgPSBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uKGVuZE9mQ3VycmVudFBhcmFn
cmFwaCwgbmV3QmxvY2txdW90ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGJsb2NrcXVvdGUgYW5kIGluc2VydCBpdCBhcyBhIGNoaWxkIG9mIHRoZSByb290
IGVkaXRhYmxlIGVsZW1lbnQuIFdlIGFjY29tcGxpc2gKLSAgICAgICAgICAgIC8vIHRoaXMgYnkg
c3BsaXR0aW5nIGFsbCBwYXJlbnRzIG9mIHRoZSBjdXJyZW50IHBhcmFncmFwaCB1cCB0byB0aGF0
IHBvaW50LgotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGUgPSBjcmVhdGVJ
bmRlbnRCbG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICAgICAgICAgIFBvc2l0aW9u
IHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLmRlZXBFcXVp
dmFsZW50KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIGVuY2xvc2luZ0NlbGwg
PSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHN0YXJ0LCAmaXNUYWJsZUNlbGwpOwotICAgICAgICAgICAg
Tm9kZSogbm9kZVRvU3BsaXRUbyA9IGVuY2xvc2luZ0NlbGwgPyBlbmNsb3NpbmdDZWxsIDogZWRp
dGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwotICAgICAgICAgICAgUmVmUHRyPE5vZGU+IHN0
YXJ0T2ZOZXdCbG9jayA9IHNwbGl0VHJlZVRvTm9kZShzdGFydC5ub2RlKCksIG5vZGVUb1NwbGl0
VG8pOwotICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShibG9ja3F1b3RlLCBzdGFydE9mTmV3
QmxvY2spOwotICAgICAgICAgICAgbmV3QmxvY2txdW90ZSA9IGJsb2NrcXVvdGU7Ci0gICAgICAg
ICAgICBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRpb24o
ZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBuZXdCbG9ja3F1b3RlKTsKLSAgICAgICAgICAgIC8vIERv
bid0IHB1dCB0aGUgbmV4dCBwYXJhZ3JhcGggaW4gdGhlIGJsb2NrcXVvdGUgd2UganVzdCBjcmVh
dGVkIGZvciB0aGlzIHBhcmFncmFwaCB1bmxlc3MgCi0gICAgICAgICAgICAvLyB0aGUgbmV4dCBw
YXJhZ3JhcGggaXMgaW4gdGhlIHNhbWUgY2VsbC4KLSAgICAgICAgICAgIGlmIChlbmNsb3NpbmdD
ZWxsICYmIGVuY2xvc2luZ0NlbGwgIT0gZW5jbG9zaW5nTm9kZU9mVHlwZShlbmRPZk5leHRQYXJh
Z3JhcGguZGVlcEVxdWl2YWxlbnQoKSwgJmlzVGFibGVDZWxsKSkKLSAgICAgICAgICAgICAgICBu
ZXdCbG9ja3F1b3RlID0gMDsKLSAgICAgICAgfQotICAgICAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0
T2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBo
LCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oaW5zZXJ0aW9uUG9pbnQsIDApKSwgdHJ1ZSk7Ci0g
ICAgICAgIC8vIG1vdmVQYXJhZ3JhcGggc2hvdWxkIG5vdCBkZXN0cm95IGNvbnRlbnQgdGhhdCBj
b250YWlucyBlbmRPZk5leHRQYXJhZ3JhcGgsIGJ1dCBpZiBpdCBkb2VzLCByZXR1cm4gaGVyZQot
ICAgICAgICAvLyB0byBhdm9pZCBhIGNyYXNoLgorICAgICAgICBpZiAodHJ5SW5kZW50aW5nQXNM
aXN0SXRlbShlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpKQorICAgICAgICAgICAgYmxvY2txdW90ZUZv
ck5leHRJbmRlbnQgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmRlbnRJbnRvQmxv
Y2txdW90ZShlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIGVuZE9mTmV4dFBhcmFncmFwaCwgYmxvY2tx
dW90ZUZvck5leHRJbmRlbnQpOworICAgICAgICAgICAgLy8gYmxvY2txdW90ZUZvck5leHRJbmRl
bnQgbWF5YmUgdXBkYXRlZAorICAgICAgICAgICAgLy8gdGhpcyBpcyBkdWUgdG8gdGhlIHdheSBw
cmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uIHdhcyBkZXNpZ25lZC4KKyAgICAgICAg
Ly8gU2FuaXR5IGNoZWNrOiBNYWtlIHN1cmUgb3VyIG1vdmVQYXJhZ3JhcGggY2FsbHMgZGlkbid0
IHJlbW92ZSBlbmRPZk5leHRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkKKyAgICAg
ICAgLy8gSWYgc29tZWhvdyB3ZSBkaWQsIHJldHVybiB0byBwcmV2ZW50IGNyYXNoZXMuCiAgICAg
ICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9mTmV4dFBhcmFn
cmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCShyZXZpc2lvbiA0NTE5MSkKKysrIFdlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3
ICs0OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmRlbnRSZWdpb24oKTsKICAgICB2b2lkIG91
dGRlbnRSZWdpb24oKTsKICAgICB2b2lkIG91dGRlbnRQYXJhZ3JhcGgoKTsKLSAgICBQYXNzUmVm
UHRyPEVsZW1lbnQ+IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRpb24oVmlzaWJsZVBv
c2l0aW9uJiwgUmVmUHRyPEVsZW1lbnQ+Jik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBwcmVw
YXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFJl
ZlB0cjxFbGVtZW50PiYpOworICAgIGJvb2wgdHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25zdCBW
aXNpYmxlUG9zaXRpb24mKTsKKyAgICB2b2lkIGluZGVudEludG9CbG9ja3F1b3RlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFJlZlB0cjxFbGVtZW50PiYp
OwogCiAgICAgRUluZGVudFR5cGUgbV90eXBlT2ZBY3Rpb247CiAgICAgaW50IG1fbWFyZ2luSW5Q
aXhlbHM7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDQ1MTkxKQorKysg
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY1LDcg
KzY2NSw3IEBAIEhUTUxFbGVtZW50KiBlbmNsb3NpbmdMaXN0KE5vZGUqIG5vZGUpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLU5vZGUqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlICpub2RlKQorSFRNTEVs
ZW1lbnQqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlICpub2RlKQogewogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC02NzYsNyArNjc2LDcgQEAgTm9kZSogZW5jbG9zaW5nTGlz
dENoaWxkKE5vZGUgKm5vZGUpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgaW5hcHBy
b3ByaWF0ZWx5IG5hbWVkIGlmIGl0IHN0YXJ0cyB3aXRoIG5vZGUgaW5zdGVhZCBvZiBub2RlLT5w
YXJlbnROb2RlKCkKICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuICYmIG4tPnBhcmVudE5vZGUo
KTsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShsaVRh
ZykgfHwgaXNMaXN0RWxlbWVudChuLT5wYXJlbnROb2RlKCkpKQotICAgICAgICAgICAgcmV0dXJu
IG47CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihuKTsKICAg
ICAgICAgaWYgKG4gPT0gcm9vdCB8fCBpc1RhYmxlQ2VsbChuKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgIH0KQEAgLTczOCw2ICs3MzgsMTggQEAgSFRNTEVsZW1lbnQqIG91dGVybW9zdEVu
Y2xvc2luZ0xpc3QoTm9kZQogICAgIHJldHVybiBsaXN0OwogfQogCitib29sIGNhbk1lcmdlTGlz
dHMoRWxlbWVudCogZmlyc3RMaXN0LCBFbGVtZW50KiBzZWNvbmRMaXN0KQoreworICAgIGlmICgh
Zmlyc3RMaXN0IHx8ICFzZWNvbmRMaXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gZmlyc3RMaXN0LT5oYXNUYWdOYW1lKHNlY29uZExpc3QtPnRhZ1FOYW1lKCkpLy8gbWFr
ZSBzdXJlIHRoZSBsaXN0IHR5cGVzIG1hdGNoIChvbCB2cy4gdWwpCisgICAgJiYgaXNDb250ZW50
RWRpdGFibGUoZmlyc3RMaXN0KSAmJiBpc0NvbnRlbnRFZGl0YWJsZShzZWNvbmRMaXN0KS8vIGJv
dGggbGlzdHMgYXJlIGVkaXRhYmxlCisgICAgJiYgZmlyc3RMaXN0LT5yb290RWRpdGFibGVFbGVt
ZW50KCkgPT0gc2Vjb25kTGlzdC0+cm9vdEVkaXRhYmxlRWxlbWVudCgpLy8gZG9uJ3QgY3Jvc3Mg
ZWRpdGluZyBib3VuZGFyaWVzCisgICAgJiYgaXNWaXNpYmlseUFkamFjZW50KHBvc2l0aW9uQWZ0
ZXJOb2RlKGZpcnN0TGlzdCksIHBvc2l0aW9uQmVmb3JlTm9kZShzZWNvbmRMaXN0KSk7CisgICAg
Ly8gTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHZpc2libGUgY29udGVudCBiZXR3ZWVuIHRoaXMgbGkg
YW5kIHRoZSBwcmV2aW91cyBsaXN0Cit9CisKIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcihOb2RlKiBu
b2RlKQogewogICAgIEFTU0VSVChub2RlKTsKQEAgLTk3MSw2ICs5ODMsMTEgQEAgaW50IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKFZpc2libGVQb3NpdAogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsKIH0KIAorYm9vbCBpc1Zpc2liaWx5QWRq
YWNlbnQoY29uc3QgUG9zaXRpb24mIGZpcnN0LCBjb25zdCBQb3NpdGlvbiYgc2Vjb25kKQorewor
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3QpID09IFZpc2libGVQb3NpdGlvbihzZWNv
bmQudXBzdHJlYW0oKSk7Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9u
V2l0aE5vZGUoY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBub2RlKQogewogICAgIGlmICghcmFu
Z2UpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkocmV2aXNpb24gNDUxOTEpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw4IEBA
IE5vZGUqIGVuY2xvc2luZ0FuY2hvckVsZW1lbnQoY29uc3QgUG9zaXQKIGJvb2wgaXNMaXN0RWxl
bWVudChOb2RlKik7CiBIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdChOb2RlKik7CiBIVE1MRWxl
bWVudCogb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKik7Ci1Ob2RlKiBlbmNsb3NpbmdMaXN0
Q2hpbGQoTm9kZSopOworSFRNTEVsZW1lbnQqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlKik7Citi
b29sIGNhbk1lcmdlTGlzdHMoRWxlbWVudCogZmlyc3RMaXN0LCBFbGVtZW50KiBzZWNvbmRMaXN0
KTsKIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcihOb2RlKik7CiBib29sIGlzVGFibGVFbGVtZW50KE5v
ZGUqKTsKIGJvb2wgaXNUYWJsZUNlbGwoY29uc3QgTm9kZSopOwpAQCAtMTM0LDcgKzEzNSw3IEBA
IGJvb2wgbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY28KIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uRm9yUGFyYWdyYXBoSXRlcmF0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKIAogaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFZpc2libGVQb3NpdGlvbiYpOwotCiti
b29sIGlzVmlzaWJpbHlBZGphY2VudChjb25zdCBQb3NpdGlvbiYgZmlyc3QsIGNvbnN0IFBvc2l0
aW9uJiBzZWNvbmQpOwogfQogCiAjZW5kaWYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MzAwKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIw
MDktMDYtMjYgIFJ5b3N1a2UgTml3YSAgPHNldCBFTUFJTF9BRERSRVNTIGVudmlyb25tZW50IHZh
cmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjc2MgorCisgICAgICAg
IENsZWFuIHVwIGZvciBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uLCBhbmQgc29s
dmVkIG1vc3Qgb2YgcHJvYmxlbXMgcmVsYXRlZCB0byB0aGUgYnVnIDIxNzEyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MTIKKyAgICAgICAgCisg
ICAgICAgIFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlcyBhcmUgaW50ZW5kZWQgZm9yIDIxNzEyLCBi
dXQgaW5jbHVkZWQgaGVyZQorICAgICAgICBzaW5jZSB0aGlzIHBhdGNoIGFscmVhZHkgc29sdmVk
IGEgbG90IG9mIHByb2JsZW1zLgorCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtbmVzdGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0
cy0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5l
c3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQt
bGlzdHMtNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LW5lc3RlZC1saXN0cy01Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTYuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3Rz
LTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0y
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9vdXRk
ZW50LW5lc3RlZC1saXN0cy0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0Nv
bW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtbmVzdGVkLWxpc3RzLTQuaHRtbDogQWRkZWQuCisKIDIwMDktMDYtMjYgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0
cy0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldl
YlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4
dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2Yg
I3RleHQgPiBMSSA+IE9MID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0
aHJlZSIuIFlvdSBzaG91bGQgc2VlIG51bWJlcnMgMSBhbmQgMiBiZWZvcmUgInRocmVlIiBhbmQg
ImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8bGk+
b25lPC9saT4gPGxpPnR3bzwvbGk+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPiA8b2w+PGxpPmZv
dXI8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9uZTwvbGk+IDxsaT50d288L2xpPiA8b2w+PGxpIGlk
PSJ0ZXN0Ij50aHJlZTwvbGk+PGxpPmZvdXI8L2xpPjwvb2w+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0x
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8
aHRtbD4KKzxib2R5PgorPGRpdj4KK1RoaXMgdGVzdHMgaW5kZW50aW5nICJ0aHJlZSIuICBZb3Ug
c2hvdWxkIHNlZSBudW1iZXJzIDEgYW5kIDIgYmVmb3JlICJ0aHJlZSIgYW5kICJmb3VyIiByZXNw
ZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+b25lPC9s
aT4KKzxsaT50d288L2xpPgorPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+Cis8b2w+PGxpPmZvdXI8
L2xpPjwvb2w+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMx
Ij48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91
bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdD
YWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisK
K3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5l
ckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRN
TCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LW5lc3RlZC1saXN0cy0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVu
dC1uZXN0ZWQtbGlzdHMtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQg
QEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiBPTCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gNCBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byA0IG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRl
bnRpbmcgInRocmVlIi4gWW91IHNob3VsZCBzZWUgbnVtYmVycyAxIGFuZCAyIGJlZm9yZSAidHdv
IiBhbmQgInRocmVlIiByZXNwZWN0aXZlbHkuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK0JlZm9y
ZTogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT48L29sPiA8bGkgaWQ9InRlc3QiPnRocmVl
PC9saT4gPGxpPmZvdXI8L2xpPgorQWZ0ZXI6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+
PGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+PC9vbD4gPGxpPmZvdXI8L2xpPgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQt
bGlzdHMtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
OCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUi
LiAgWW91IHNob3VsZCBzZWUgbnVtYmVycyAxIGFuZCAyIGJlZm9yZSAidHdvIiBhbmQgInRocmVl
IiByZXNwZWN0aXZlbHkuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8bGk+
b25lPC9saT4KKzxvbD48bGk+dHdvPC9saT48L29sPgorPGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+
Cis8bGk+Zm91cjwvbGk+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4g
aWQ9ImMxIj48L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xp
PgorPC91bD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Cit9CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZS5pbm5lckhUTUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2Rv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlu
bmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1uZXN0ZWQtbGlzdHMtMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTQgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA0IG9mICN0ZXh0ID4gTEkgPiBVTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIg
b2YgI3RleHQgPiBTUEFOID4gTEkgPiBVTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRo
cmVlIi4gWW91IHNob3VsZCBzZWUgMSwgMiwgYW5kIDMgYmVmb3JlICJ0d28iLCAidGhyZWUiLCBh
bmQgImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8
bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjwvb2w+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xp
PiA8b2w+PGxpPmZvdXI8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9uZTwvbGk+IDxvbD48bGk+dHdv
PC9saT48bGkgaWQ9InRlc3QiPnRocmVlPC9saT48bGk+Zm91cjwvbGk+PC9vbD4KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy0zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CitU
aGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiLiBZb3Ugc2hvdWxkIHNlZSAxLCAyLCBhbmQgMyBi
ZWZvcmUgInR3byIsICJ0aHJlZSIsIGFuZCAiZm91ciIgcmVzcGVjdGl2ZWx5LgorPG9sIGlkPSJk
aXYiPgorPGxpPm9uZTwvbGk+Cis8b2w+PGxpPnR3bzwvbGk+PC9vbD4KKzxsaSBpZD0idGVzdCI+
dGhyZWU8L2xpPgorPG9sPjxsaT5mb3VyPC9saT48L29sPgorPC9vbD4KKzwvZGl2PgorCis8dWw+
Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4g
aWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RpdicpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaXYuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZWxl
Y3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykpOworcy5yZW1vdmVBbGxSYW5n
ZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5kZW50IiwgZmFs
c2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MyJykuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoZGl2LmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy00LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9MID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3
RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBM
SSA+IFVMID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IFNQQU4gPiBM
SSA+IFVMID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiIGFuZCAiZm91ciIuIFlv
dSBzaG91bGQgc2VlIDEgdGhyb3VnaCA0IGluIG9yZGVyIGJlZm9yZSBudW1iZXJzICJ0d28iIHRo
cm91Z2ggImZpdmUiLgorb25lCit0d28KK3RocmVlCitmb3VyCitmaXZlCitCZWZvcmU6IDxsaT5v
bmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+PC9vbD4gPGxpIGlkPSJ0ZXN0MSI+dGhyZWU8L2xpPiA8
bGkgaWQ9InRlc3QyIj5mb3VyPC9saT4gPG9sPjxsaT5maXZlPC9saT48L29sPgorQWZ0ZXI6IDxs
aT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+PGxpIGlkPSJ0ZXN0MSI+dGhyZWU8L2xpPjxsaSBp
ZD0idGVzdDIiPmZvdXI8L2xpPjxsaT5maXZlPC9saT48L29sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMt
NC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9p
bmRlbnQtbmVzdGVkLWxpc3RzLTQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAor
PGh0bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIGluZGVudGluZyAidGhyZWUiIGFuZCAi
Zm91ciIuICBZb3Ugc2hvdWxkIHNlZSAxIHRocm91Z2ggNCBpbiBvcmRlciBiZWZvcmUgbnVtYmVy
cyAidHdvIiB0aHJvdWdoICJmaXZlIi4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxlPSJ0cnVl
Ij4KKzxsaT5vbmU8L2xpPgorPG9sPjxsaT50d288L2xpPjwvb2w+Cis8bGkgaWQ9InRlc3QxIj50
aHJlZTwvbGk+Cis8bGkgaWQ9InRlc3QyIj5mb3VyPC9saT4KKzxvbD48bGk+Zml2ZTwvbGk+PC9v
bD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bh
bj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNr
cygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkp
OworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKK3Iuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJyks
MCk7CityLnNldEVuZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDInKSwxKTsKK3MucmVt
b3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
ZGVudCIsIGZhbHNlLCAiIik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxp
c3RzLTUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorRURJVElORyBERUxF
R0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mIE9MID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6
V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0
ZXh0ID4gTEkgPiBVTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBv
ZiAjdGV4dCA+IExJID4gVUwgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcg
InRocmVlIi4gWW91IHNob3VsZCBzZWUgMSwgMiwgYW5kIHRoZW4gYSBidWxsZXQgYmVmb3JlIG51
bWJlcnMgInR3byIsICJ0aHJlZSIsIGFuZCAiZm91ciIgcmVzcGVjdGl2ZWx5Lgorb25lCit0d28K
K3RocmVlCitmb3VyCitCZWZvcmU6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+PC9vbD4g
PGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+IDx1bD48bGk+Zm91cjwvbGk+PC91bD4KK0FmdGVyOiA8
bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPjxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPjwvb2w+
IDx1bD48bGk+Zm91cjwvbGk+PC91bD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy01Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1s
aXN0cy01Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJvZHk+
Cis8ZGl2PgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gIFlvdSBzaG91bGQgc2VlIDEs
IDIsIGFuZCB0aGVuIGEgYnVsbGV0IGJlZm9yZSBudW1iZXJzICJ0d28iLCAidGhyZWUiLCBhbmQg
ImZvdXIiIHJlc3BlY3RpdmVseS4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4K
KzxsaT5vbmU8L2xpPgorPG9sPjxsaT50d288L2xpPjwvb2w+Cis8bGkgaWQ9InRlc3QiPnRocmVl
PC9saT4KKzx1bD48bGk+Zm91cjwvbGk+PC91bD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxp
PkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJj
MiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScp
OworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2VsZWN0Tm9kZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFk
ZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIsIGZhbHNlLCAiIik7CisK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTYtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3Rl
ZC1saXN0cy02LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1saXN0cy02LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0
aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byA5IG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGlu
Z05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IE9MID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IExJID4gT0wgPiBP
TCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBpbmRlbnRpbmcgInRocmVlIi4gWW91IHNob3VsZCBz
ZWUgYSBidWxsZXQgdGhlbiAxIGFuZCAyIGJlZm9yZSBudW1iZXJzICJ0d28iLCAidGhyZWUiLCBh
bmQgImZvdXIiIHJlc3BlY3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8
bGk+b25lPC9saT4gPHVsPjxsaT50d288L2xpPjwvdWw+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xp
PiA8b2w+PGxpPmZvdXI8L2xpPjwvb2w+CitBZnRlcjogPGxpPm9uZTwvbGk+IDx1bD48bGk+dHdv
PC9saT48L3VsPiA8b2w+PGxpIGlkPSJ0ZXN0Ij50aHJlZTwvbGk+PGxpPmZvdXI8L2xpPjwvb2w+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlz
dHMtNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LW5lc3RlZC1saXN0cy02Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj4KK1RoaXMgdGVzdHMgaW5k
ZW50aW5nICJ0aHJlZSIuICBZb3Ugc2hvdWxkIHNlZSBhIGJ1bGxldCB0aGVuIDEgYW5kIDIgYmVm
b3JlIG51bWJlcnMgInR3byIsICJ0aHJlZSIsIGFuZCAiZm91ciIgcmVzcGVjdGl2ZWx5LgorPG9s
IGlkPSJlIiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorPGxpPm9uZTwvbGk+Cis8dWw+PGxpPnR3
bzwvbGk+PC91bD4KKzxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPgorPG9sPjxsaT5mb3VyPC9saT48
L29sPgorPC9vbD4KKzwvZGl2PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9z
cGFuPjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJh
Y2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIg
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1M
KSk7CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworci5zZWxlY3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
JykpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5kZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2MyJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsK
KworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVu
dC1uZXN0ZWQtbGlzdHMtNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVz
dGVkLWxpc3RzLTctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mIE9MID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNCBvZiAjdGV4dCA+IExJID4gT0wgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0
cyBpbmRlbnRpbmcgInRocmVlIiBhbmQgImZvdXIiLiBZb3Ugc2hvdWxkIHNlZSAxIGJlZm9yZSAi
dHdvIiwgInRocmVlIiwgYW5kICJmaXZlIiBidXQgMiBiZWZvcmUgImZvdXIiLiBOZWl0aGVyICJ0
d28iIG5vciAiZml2ZSIgc2hvdWxkIGJlIHRoZSBwYXJ0IG9mIG5ldyBuZXN0ZWQgbGlzdCBzaW5j
ZSB0aGVyZSBpcyB0ZXh0IGJldHdlZW4gInR3byIgYW5kICJ0aHJlZSIsIGFuZCAiZml2ZSIgaXMg
dW5vcmRlcmVkLgorb25lCit0d28KK2FhYQordGhyZWUKK2ZvdXIKK2ZpdmUKK0JlZm9yZTogPGxp
Pm9uZTwvbGk+IDxvbD48bGk+dHdvPC9saT48L29sPiBhYWEgPGxpIGlkPSJ0ZXN0MyI+dGhyZWU8
L2xpPiA8bGkgaWQ9InRlc3Q0Ij5mb3VyPC9saT4gPHVsPjxsaT5maXZlPC9saT48L3VsPgorQWZ0
ZXI6IDxsaT5vbmU8L2xpPiA8b2w+PGxpPnR3bzwvbGk+PC9vbD4gYWFhIDxvbD48bGkgaWQ9InRl
c3QzIj50aHJlZTwvbGk+PGxpIGlkPSJ0ZXN0NCI+Zm91cjwvbGk+PC9vbD4gPHVsPjxsaT5maXZl
PC9saT48L3VsPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQt
bmVzdGVkLWxpc3RzLTcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtbGlzdHMtNy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWxpc3RzLTcuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlz
IHRlc3RzIGluZGVudGluZyAidGhyZWUiIGFuZCAiZm91ciIuICBZb3Ugc2hvdWxkIHNlZSAxIGJl
Zm9yZSAidHdvIiwgInRocmVlIiwgYW5kICJmaXZlIiBidXQgMiBiZWZvcmUgImZvdXIiLgorTmVp
dGhlciAidHdvIiBub3IgImZpdmUiIHNob3VsZCBiZSB0aGUgcGFydCBvZiBuZXcgbmVzdGVkIGxp
c3Qgc2luY2UgdGhlcmUgaXMgdGV4dCBiZXR3ZWVuICJ0d28iIGFuZCAidGhyZWUiLCBhbmQgImZp
dmUiIGlzIHVub3JkZXJlZC4KKzxvbCBpZD0iZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKzxs
aT5vbmU8L2xpPgorPG9sPjxsaT50d288L2xpPjwvb2w+CithYWEKKzxsaSBpZD0idGVzdDMiPnRo
cmVlPC9saT4KKzxsaSBpZD0idGVzdDQiPmZvdXI8L2xpPgorPHVsPjxsaT5maXZlPC9saT48L3Vs
PgorPC9vbD4KKzwvZGl2PgorCis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFu
PjwvbGk+Cis8bGk+QWZ0ZXI6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tz
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjMScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7
CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworci5zZXRTdGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDMnKSww
KTsKK3Iuc2V0RW5kKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcpLDEpOworcy5yZW1v
dmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5k
ZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MyJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKworPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxp
c3RzLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3Rz
LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBPTCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgT0wgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2Yg
I3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAj
dGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1RoaXMgdGVzdHMgb3V0ZGVudGluZyAidGhyZWUi
LiBZb3Ugc2hvdWxkIHNlZSAyIGFuZCAzIGJlZm9yZSAidGhyZWUiIGFuZCAiZm91ciIgcmVzcGVj
dGl2ZWx5Lgorb25lCit0d28KK3RocmVlCitmb3VyCitCZWZvcmU6IDxsaT5vbmU8L2xpPiA8b2w+
PGxpPnR3bzwvbGk+IDxsaSBpZD0idGVzdCI+dGhyZWU8L2xpPjwvb2w+IDxsaT5mb3VyPC9saT4K
K0FmdGVyOiA8bGk+b25lPC9saT4gPG9sPjxsaT50d288L2xpPiA8L29sPjxsaT50aHJlZTwvbGk+
IDxsaT5mb3VyPC9saT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0
ZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtMS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0x
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2
PgorVGhpcyB0ZXN0cyBvdXRkZW50aW5nICJ0aHJlZSIuICBZb3Ugc2hvdWxkIHNlZSAyIGFuZCAz
IGJlZm9yZSAidGhyZWUiIGFuZCAiZm91ciIgcmVzcGVjdGl2ZWx5LgorPG9sIGlkPSJlIiBjb250
ZW50ZWRpdGFibGU9InRydWUiPgorPGxpPm9uZTwvbGk+Cis8b2w+PGxpPnR3bzwvbGk+Cis8bGkg
aWQ9InRlc3QiPnRocmVlPC9saT48L29sPgorPGxpPmZvdXI8L2xpPgorPC9vbD4KKzwvZGl2Pgor
Cis8dWw+Cis8bGk+QmVmb3JlOjxzcGFuIGlkPSJjMSI+PC9zcGFuPjwvbGk+Cis8bGk+QWZ0ZXI6
PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdlJyk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKK3ZhciBzID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZWxl
Y3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykpOworcy5yZW1vdmVBbGxSYW5n
ZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiT3V0ZGVudCIsIGZh
bHNlLCAiIik7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjMicpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0yLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L291dGRlbnQtbmVzdGVkLWxpc3RzLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorRURJVElORyBERUxFR0FURTog
c2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgT0wgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mIE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmll
d0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4g
TEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBM
SSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlk
Q2hhbmdlTm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIG91dGRlbnRpbmcgIm9uZSIuIFlvdSBzZWUg
MSBiZWZvcmUgIm9uZSIgYnV0IDEgYW5kIDIgYmVmb3JlICJ0d28iIGFuZCAidGhyZWUiIHJlc3Bl
Y3RpdmVseS4KK29uZQordHdvCit0aHJlZQorZm91cgorQmVmb3JlOiA8b2w+PGxpIGlkPSJ0ZXN0
Ij5vbmU8L2xpPiA8bGk+dHdvPC9saT4gPGxpPnRocmVlPC9saT48L29sPiA8bGk+Zm91cjwvbGk+
CitBZnRlcjogPGxpPm9uZTwvbGk+PG9sPiA8bGk+dHdvPC9saT4gPGxpPnRocmVlPC9saT48L29s
PiA8bGk+Zm91cjwvbGk+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL291dGRlbnQtbmVzdGVkLWxpc3RzLTIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMt
Mi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxib2R5PgorPGRp
dj4KK1RoaXMgdGVzdHMgb3V0ZGVudGluZyAib25lIi4gIFlvdSBzZWUgMSBiZWZvcmUgIm9uZSIg
YnV0IDEgYW5kIDIgYmVmb3JlICJ0d28iIGFuZCAidGhyZWUiIHJlc3BlY3RpdmVseS4KKzxvbCBp
ZD0iZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKzxvbD48bGkgaWQ9InRlc3QiPm9uZTwvbGk+
Cis8bGk+dHdvPC9saT4KKzxsaT50aHJlZTwvbGk+PC9vbD4KKzxsaT5mb3VyPC9saT4KKzwvb2w+
Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEiPjwvc3Bhbj48L2xpPgor
PGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+Cis8L3VsPgorCis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwordmFyIGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzEnKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCit2YXIg
cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKK3Iuc2VsZWN0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKK3MucmVt
b3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91
dGRlbnQiLCBmYWxzZSwgIiIpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYzInKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQt
bGlzdHMtMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlz
dHMtMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIE9M
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiBPTCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0
aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9m
ICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBvdXRkZW50aW5nICJ0d28i
LiBZb3Ugc2hvdWxkIHNlZSAxIGJlZm9yZSAib25lIiwgInR3byIsIGFuZCAidGhyZWUiIGJ1dCAy
IGJlZm9yZSAiZm91ciIuCitvbmUKK3R3bwordGhyZWUKK2ZvdXIKK0JlZm9yZTogPG9sPjxsaT5v
bmU8L2xpPiA8bGkgaWQ9InRlc3QiPnR3bzwvbGk+IDxsaT50aHJlZTwvbGk+PC9vbD4gPGxpPmZv
dXI8L2xpPgorQWZ0ZXI6IDxvbD48bGk+b25lPC9saT4gPC9vbD48bGk+dHdvPC9saT48b2w+IDxs
aT50aHJlZTwvbGk+PC9vbD4gPGxpPmZvdXI8L2xpPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50LW5lc3RlZC1saXN0cy0zLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtbmVzdGVkLWxpc3RzLTMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0
bWw+Cis8Ym9keT4KKzxkaXY+CitUaGlzIHRlc3RzIG91dGRlbnRpbmcgInR3byIuICBZb3Ugc2hv
dWxkIHNlZSAxIGJlZm9yZSAib25lIiwgInR3byIsIGFuZCAidGhyZWUiIGJ1dCAyIGJlZm9yZSAi
Zm91ciIuCis8b2wgaWQ9ImUiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8b2w+PGxpPm9uZTwv
bGk+Cis8bGkgaWQ9InRlc3QiPnR3bzwvbGk+Cis8bGk+dGhyZWU8L2xpPjwvb2w+Cis8bGk+Zm91
cjwvbGk+Cis8L29sPgorPC9kaXY+CisKKzx1bD4KKzxsaT5CZWZvcmU6PHNwYW4gaWQ9ImMxIj48
L3NwYW4+PC9saT4KKzxsaT5BZnRlcjo8c3BhbiBpZD0iYzIiPjwvc3Bhbj48L2xpPgorPC91bD4K
KworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxs
YmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3Zh
ciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhU
TUwpKTsKKwordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgciA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QnKSk7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJPdXRkZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2MyJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwp
KTsKKworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291
dGRlbnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL291dGRl
bnQtbmVzdGVkLWxpc3RzLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiAjdGV4dCA+IExJID4gT0wgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0
IG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0cyBvdXRkZW50aW5nIG9y
ZGVyZWQgbGlzdHMgdGhhdCBjb250YWlucyBhbiB1bm9yZGVyZWQtbGlzdC4gWW91IHNob3VsZCBz
ZWUgMSB0aHJvdWdoIDMgYmVmb3JlIG51bWJlcnMgInR3byIgdGhyb3VnaCAiZm91ciIuCitvbmUK
K3R3bwordGhyZWUKK2ZvdXIKK0JlZm9yZTogPG9sPjxsaT5vbmU8L2xpPiA8bGkgaWQ9InN0YXJ0
Ij50d288L2xpPjwvb2w+IDx1bD48bGk+dGhyZWU8L2xpPjwvdWw+IDxvbD48bGkgaWQ9ImVuZCI+
Zm91cjwvbGk+PC9vbD4KK0FmdGVyOiA8b2w+PGxpPm9uZTwvbGk+IDwvb2w+PGxpPnR3bzwvbGk+
IDxsaT50aHJlZTwvbGk+IDxsaT5mb3VyPC9saT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvb3V0ZGVudC1uZXN0ZWQtbGlzdHMtNC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9vdXRkZW50
LW5lc3RlZC1saXN0cy00Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1s
PgorPGJvZHk+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CitUaGlzIHRlc3RzIG91dGRl
bnRpbmcgb3JkZXJlZCBsaXN0cyB0aGF0IGNvbnRhaW5zIGFuIHVub3JkZXJlZC1saXN0LiAgWW91
IHNob3VsZCBzZWUgMSB0aHJvdWdoIDMgYmVmb3JlIG51bWJlcnMgInR3byIgdGhyb3VnaCAiZm91
ciIuCis8b2wgaWQ9ImUiPgorPG9sPjxsaT5vbmU8L2xpPgorPGxpIGlkPSJzdGFydCI+dHdvPC9s
aT48L29sPgorPHVsPjxsaT50aHJlZTwvbGk+PC91bD4KKzxvbD48bGkgaWQ9ImVuZCI+Zm91cjwv
bGk+PC9vbD4KKzwvb2w+Cis8L2Rpdj4KKworPHVsPgorPGxpPkJlZm9yZTo8c3BhbiBpZD0iYzEi
Pjwvc3Bhbj48L2xpPgorPGxpPkFmdGVyOjxzcGFuIGlkPSJjMiI+PC9zcGFuPjwvbGk+Cis8L3Vs
PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGluZ0Nh
bGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwor
dmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZScpOworCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYzEnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVy
SFRNTCkpOworCit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciByID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0
YXJ0JyksMCk7CityLnNldEVuZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW5kJyksMSk7Citz
LnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJPdXRkZW50IiwgZmFsc2UsICIiKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MyJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwpKTsKKworPC9z
Y3JpcHQ+Cg==
</data>
<flag name="review"
          id="16508"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>