<?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>41399</bug_id>
          
          <creation_ts>2010-06-30 03:11:20 -0700</creation_ts>
          <short_desc>Split HTMLElementStack out into its own file</short_desc>
          <delta_ts>2010-06-30 12:50:55 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41123</blocked>
    
    <blocked>41402</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244712</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 03:11:20 -0700</bug_when>
    <thetext>Split HTMLElementStack out into its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244713</commentid>
    <comment_count>1</comment_count>
      <attachid>60105</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 03:12:19 -0700</bug_when>
    <thetext>Created attachment 60105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244714</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 03:13:00 -0700</bug_when>
    <thetext>We may wish to inline some of these methods at a later time.  The easiest way to do that will probably be to just include HTMLElementStack.cpp in HTMLTreeBuilder.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244886</commentid>
    <comment_count>3</comment_count>
      <attachid>60105</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 12:34:23 -0700</bug_when>
    <thetext>Comment on attachment 60105
Patch

You can probably use namespace HTMLNames in the new cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244895</commentid>
    <comment_count>4</comment_count>
      <attachid>60105</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-30 12:50:51 -0700</bug_when>
    <thetext>Comment on attachment 60105
Patch

Clearing flags on attachment: 60105

Committed r62195: &lt;http://trac.webkit.org/changeset/62195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244896</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-30 12:50:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60105</attachid>
            <date>2010-06-30 03:12:19 -0700</date>
            <delta_ts>2010-06-30 12:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41399-20100630031217.patch</filename>
            <type>text/plain</type>
            <size>25674</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBlZjdiN2I1YmM1NGZkNWQ5NDk5MDI4ODA5ZGYwYjNjMGJmMDQxOWFlLi43NzVkNTEyZjg3YWNj
ZmFiY2UwZTY4NmViOGFiNTZhNDkwOGNiYTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjQsNiArMjY0LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmNwcCBcCiAJaHRtbC9IVE1MRG9jdW1lbnQuY3BwIFwKIAlodG1sL0hUTUxFbGVtZW50c0FsbElu
T25lLmNwcCBcCisJaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcCBcCiAJaHRtbC9IVE1MRm9ybUNv
bGxlY3Rpb24uY3BwIFwKIAlodG1sL0hUTUxJbWFnZUxvYWRlci5jcHAgXAogCWh0bWwvSFRNTE5h
bWVDb2xsZWN0aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2OGQzNjZiMmQzNGZhMTEyYTEzZTNlZjdhOWIz
NjczY2Y1Mjk2ZTIxLi5hZDFmZjNmMjdmYWM4ZjRiNTE1NjE3MWVhMzAyNWE4YTcxNTY0ZWRmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTk0MSw2ICs5NDEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9I
VE1MRGl2RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxEb2N1bWVudC5jcHAKICAgICBodG1sL0hU
TUxFbGVtZW50LmNwcAorICAgIGh0bWwvSFRNTEVsZW1lbnRTdGFjay5jcHAKICAgICBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAogICAg
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZWE4NmU3OTcyMDdlNTY4ZGE2NmJiNWI4MGEwMDM3
MzhiNmM3NWU2Li5hOGZlM2E0M2YzMDUyNzUyYjkxZTIyOWU3ZDc3NThmYTA0ZDk5MDdkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDQ5IEBACiAyMDEwLTA2LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBIVE1M
RWxlbWVudFN0YWNrIG91dCBpbnRvIGl0cyBvd24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzOTkKKworICAgICAgICBObyBmdW5jdGlvbmFs
IGNoYW5nZSwgdGh1cyBubyB0ZXN0cy4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50U3RhY2suY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQ6OkVsZW1l
bnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJl
Y29yZDo6ZWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpFbGVt
ZW50UmVjb3JkOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OkVs
ZW1lbnRSZWNvcmQ6OnJlbGVhc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
U3RhY2s6OkVsZW1lbnRSZWNvcmQ6OnNldE5leHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnRTdGFjazo6SFRNTEVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudFN0YWNrOjp+SFRNTEVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudFN0YWNrOjpwb3BIVE1MSGVhZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnRTdGFjazo6cG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnB1
c2hIVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6
cHVzaEhUTUxIZWFkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNr
OjpwdXNoSFRNTEJvZHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3Rh
Y2s6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6dG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnJlbW92ZUhUTUxIZWFkRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnRTdGFjazo6aW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dFN0YWNrOjpodG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNr
OjpoZWFkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpib2R5
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnBvcENvbW1vbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpyZW1vdmVOb25GaXJzdENvbW1vbik6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudFN0YWNrLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
SFRNTFRyZWVCdWlsZGVyLmg6CisKKzIwMTAtMDYtMzAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCiAKICAgICAgICAgSFRN
TFRva2VuaXplciBuZWVkcyBFbmRPZkZpbGUgc3VwcG9ydApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZTA0YzFlMDhlMDcw
N2IwM2U3MTE3ZmM5NmRlNmU0NzI1NDFkMTQ4Yi4uYThlMWRhZTRjMGU1MjJlMDZkYjk0MGU1NmFh
ZDNkMjc2MjU0OTc4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMTU3LDYgKzExNTcsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggXAorCVdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcCBcCisJV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3Rh
Y2suaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA3ZDE4NTMyM2Y1YjlkNTU5N2E0Njk1MDA3ZDRmMDRmYTk0ZWNlNzQwLi5l
OTVjNTI4NmUxZWY1ZTVlZTkzNGM4Zjg2NjMzNjYxZjljNGE2NDkxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTU0Myw2ICsx
NTQzLDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxEb2N1bWVudC5oJywKICAgICAgICAgICAg
ICdodG1sL0hUTUxFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRWxlbWVudC5o
JywKKyAgICAgICAgICAgICdodG1sL0hUTUxFbGVtZW50U3RhY2suY3BwJywKKyAgICAgICAgICAg
ICdodG1sL0hUTUxFbGVtZW50U3RhY2suaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAnLApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjZiYzcwOGFhNjgw
Mjk3MDYyN2NkMTg2NDhjMDQ5M2M0YTIwODYxZC4uYTZiMjE5MTliNTU2OTgxYTc2MDI4YjVkY2Q5
YWFiYmZlMGI4NmQxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC02NTQsNiArNjU0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRt
bC9IVE1MRExpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRG9jdW1lbnQuY3BwIFwKICAg
ICBodG1sL0hUTUxFbGVtZW50LmNwcCBcCisgICAgaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcCBc
CiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDg3YTY2NjA0M2JlZDVkMjc1ZTE5MWJkYzdjODQ0
NTgwZTgwNWViZjcuLjZiNzBkYzY5M2M2NDgxY2IyZWQ4YzI3ODk1NjM1ZTEwYzUzZmFkOWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzcwMjUsNiArMzcwMjUsMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxIVE1MRWxlbWVudFN0YWNrLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEVsZW1lbnRTdGFjay5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1M
RWxlbWVudHNBbGxJbk9uZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmE0M2NlYTA1Njg0YmIwNWIyMzM1
YjI4ZTM2MmQzNjQwYjUxZjNmLi5mZDk5MDA5MDg5Yjg2MDNmNmVhN2UzNzhlNjI2ZGVlZGUyMzEx
NDM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzA3
MSw2ICszMDcxLDggQEAKIAkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0
MzI3MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CiAJCUE4OUNDQzUy
MEY0NEU5ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MDBGNDRFOTgx
MDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovOyB9OwogCQlBODlD
Q0M1MzBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OUNDQzUxMEY0NEU5
ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oICovOyB9OworCQlBOEE1
NjNCNDExREIzRDEwMDAzQUMyRjAgLyogSFRNTEVsZW1lbnRTdGFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNTYzQjIxMURCM0QxMDAwM0FDMkYw
IC8qIEhUTUxFbGVtZW50U3RhY2suaCAqLzsgfTsKKwkJQThBNTYzQjUxMURCM0QxMDAwM0FDMkYw
IC8qIEhUTUxFbGVtZW50U3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNTYzQjMxMURCM0QxMDAwM0FDMkYwIC8qIEhUTUxFbGVtZW50U3Rh
Y2suY3BwICovOyB9OwogCQlBOEE5MDlBQzBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBOTA5QUEwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaCAqLzsgfTsKIAkJQThBOTA5QUQwQ0JDRDZCNTAwMjlCODA3IC8qIFJl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwICovOyB9OwogCQlBOEMyMjgwRTExRDRBNTk3
MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50
UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTg1ODEsNiArODU4Myw4IEBACiAJCUE4OTk0MzI3MEI0MjMz
ODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCaXRtYXBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4OUNDQzUwMEY0NEU5ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXBsYWNlTm9kZVdpdGhT
cGFuQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OUNDQzUxMEY0
NEU5ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEE1NjNCMjExREIzRDEwMDAzQUMyRjAgLyogSFRN
TEVsZW1lbnRTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxl
bWVudFN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QTU2M0IzMTFEQjNE
MTAwMDNBQzJGMCAvKiBIVE1MRWxlbWVudFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50U3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE5MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4QTkwOUFCMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM4NDIsNiArMTM4NDYsOCBAQAogCQkJCTE1Qzc3MDg5MTAw
RDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCAqLywKIAkJCQlFNDQ2MTNCNDBDRDYz
NDRFMDBGQURBNzUgLyogVm9pZENhbGxiYWNrLmggKi8sCiAJCQkJRTQ0NjEzQTAwQ0Q2MzMxMDAw
RkFEQTc1IC8qIFZvaWRDYWxsYmFjay5pZGwgKi8sCisJCQkJQThBNTYzQjIxMURCM0QxMDAwM0FD
MkYwIC8qIEhUTUxFbGVtZW50U3RhY2suaCAqLywKKwkJCQlBOEE1NjNCMzExREIzRDEwMDAzQUMy
RjAgLyogSFRNTEVsZW1lbnRTdGFjay5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGh0bWw7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTk2MjgsNiArMTk2MzQsNyBAQAogCQkJCUUx
QkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE4QTU2M0I0MTFEQjNEMTAwMDNBQzJGMCAvKiBIVE1MRWxlbWVudFN0YWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxOTU4LDYgKzIxOTY1LDcgQEAKIAkJCQk5M0YxOUIwNTA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEE1NjNCNTExREIzRDEwMDAzQUMyRjAgLyogSFRNTEVs
ZW1lbnRTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudFN0YWNrLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYjRiMWEzNDNkNWVjYTA2MmQ5MGFlMWFmZDFjODY3NzhiNmY2MjFkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0wLDAg
KzEsMjEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnRTdGFjay5oIgor
CisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29y
ZCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgRWxlbWVudFJlY29yZChQYXNz
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIFBhc3NPd25QdHI8RWxlbWVudFJlY29yZD4gbmV4dCkK
KyAgICAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgLCBtX25leHQobmV4dCkKKyAg
ICB7CisgICAgfQorCisgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudC5nZXQoKTsgfQorICAgIEVsZW1lbnRSZWNvcmQqIG5leHQoKSBjb25zdCB7IHJldHVybiBt
X25leHQuZ2V0KCk7IH0KKyAgICBQYXNzT3duUHRyPEVsZW1lbnRSZWNvcmQ+IHJlbGVhc2VOZXh0
KCkgeyByZXR1cm4gbV9uZXh0LnJlbGVhc2UoKTsgfQorICAgIHZvaWQgc2V0TmV4dChQYXNzT3du
UHRyPEVsZW1lbnRSZWNvcmQ+IG5leHQpIHsgbV9uZXh0ID0gbmV4dDsgfQorCitwcml2YXRlOgor
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgT3duUHRyPEVsZW1lbnRSZWNvcmQ+
IG1fbmV4dDsKK307CisKK0hUTUxFbGVtZW50U3RhY2s6OkhUTUxFbGVtZW50U3RhY2soKQorICAg
IDogbV9odG1sRWxlbWVudCgwKQorICAgICwgbV9oZWFkRWxlbWVudCgwKQorICAgICwgbV9ib2R5
RWxlbWVudCgwKQoreworfQorCitIVE1MRWxlbWVudFN0YWNrOjp+SFRNTEVsZW1lbnRTdGFjaygp
Cit7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wSFRNTEhlYWRFbGVtZW50KCkKK3sK
KyAgICBBU1NFUlQodG9wKCkgPT0gbV9oZWFkRWxlbWVudCk7CisgICAgbV9oZWFkRWxlbWVudCA9
IDA7CisgICAgcG9wQ29tbW9uKCk7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wKCkK
K3sKKyAgICBBU1NFUlQoIXRvcCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpOwor
ICAgIHBvcENvbW1vbigpOworfQorCit2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hIVE1MSHRt
bEVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgIEFTU0VSVCghbV9odG1s
RWxlbWVudCk7CisgICAgbV9odG1sRWxlbWVudCA9IGVsZW1lbnQuZ2V0KCk7CisgICAgcHVzaENv
bW1vbihlbGVtZW50KTsKK30KKwordm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwdXNoSFRNTEhlYWRF
bGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVu
dC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRUYWcpKTsKKyAgICBBU1NFUlQoIW1faGVhZEVs
ZW1lbnQpOworICAgIG1faGVhZEVsZW1lbnQgPSBlbGVtZW50LmdldCgpOworICAgIHB1c2hDb21t
b24oZWxlbWVudCk7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaEhUTUxCb2R5RWxl
bWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKSk7CisgICAgQVNTRVJUKCFtX2JvZHlFbGVt
ZW50KTsKKyAgICBtX2JvZHlFbGVtZW50ID0gZWxlbWVudC5nZXQoKTsKKyAgICBwdXNoQ29tbW9u
KGVsZW1lbnQpOworfQorCit2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2goUGFzc1JlZlB0cjxF
bGVtZW50PiBlbGVtZW50KQoreworICAgIEFTU0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6Omh0bWxUYWcpKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpoZWFkVGFnKSk7CisgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6Ym9keVRhZykpOworICAgIEFTU0VSVChtX2h0bWxFbGVtZW50KTsKKyAgICBwdXNoQ29tbW9u
KGVsZW1lbnQpOworfQorCitFbGVtZW50KiBIVE1MRWxlbWVudFN0YWNrOjp0b3AoKSBjb25zdAor
eworICAgIHJldHVybiBtX3RvcC0+ZWxlbWVudCgpOworfQorCit2b2lkIEhUTUxFbGVtZW50U3Rh
Y2s6OnJlbW92ZUhUTUxIZWFkRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VS
VChtX2hlYWRFbGVtZW50ID09IGVsZW1lbnQpOworICAgIGlmIChtX3RvcC0+ZWxlbWVudCgpID09
IGVsZW1lbnQpIHsKKyAgICAgICAgcG9wSFRNTEhlYWRFbGVtZW50KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9oZWFkRWxlbWVudCA9IDA7CisgICAgcmVtb3ZlTm9uRmlyc3RDb21t
b24oZWxlbWVudCk7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cmVtb3ZlKEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aGVhZFRhZykpOworICAgIGlmIChtX3RvcC0+ZWxlbWVudCgpID09IGVsZW1lbnQpIHsKKyAgICAg
ICAgcG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVtb3ZlTm9uRmlyc3RDb21t
b24oZWxlbWVudCk7Cit9CisKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6Y29udGFpbnMoRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBmb3IgKEVsZW1lbnRSZWNvcmQqIHBvcyA9IG1fdG9w
LmdldCgpOyBwb3M7IHBvcyA9IHBvcy0+bmV4dCgpKSB7CisgICAgICAgIGlmIChwb3MtPmVsZW1l
bnQoKSA9PSBlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBIVE1MRWxlbWVudFN0YWNrOjppblNjb3BlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBhbGdvcml0aG0g
aXMgd3JvbmcuCisgICAgZm9yIChFbGVtZW50UmVjb3JkKiBwb3MgPSBtX3RvcC5nZXQoKTsgcG9z
OyBwb3MgPSBwb3MtPm5leHQoKSkgeworICAgICAgICBpZiAocG9zLT5lbGVtZW50KCktPnRhZ1FO
YW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5TY29wZShFbGVtZW50KiBl
bGVtZW50KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIGFsZ29yaXRobSBpcyB3cm9uZy4K
KyAgICByZXR1cm4gY29udGFpbnMoZWxlbWVudCk7Cit9CisKK0VsZW1lbnQqIEhUTUxFbGVtZW50
U3RhY2s6Omh0bWxFbGVtZW50KCkKK3sKKyAgICBBU1NFUlQobV9odG1sRWxlbWVudCk7CisgICAg
cmV0dXJuIG1faHRtbEVsZW1lbnQ7Cit9CisKK0VsZW1lbnQqIEhUTUxFbGVtZW50U3RhY2s6Omhl
YWRFbGVtZW50KCkKK3sKKyAgICBBU1NFUlQobV9oZWFkRWxlbWVudCk7CisgICAgcmV0dXJuIG1f
aGVhZEVsZW1lbnQ7Cit9CisKK0VsZW1lbnQqIEhUTUxFbGVtZW50U3RhY2s6OmJvZHlFbGVtZW50
KCkKK3sKKyAgICBBU1NFUlQobV9ib2R5RWxlbWVudCk7CisgICAgcmV0dXJuIG1fYm9keUVsZW1l
bnQ7Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbihQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgbV90b3Auc2V0KG5ldyBFbGVtZW50UmVjb3JkKGVsZW1l
bnQsIG1fdG9wLnJlbGVhc2UoKSkpOworICAgIHRvcCgpLT5iZWdpblBhcnNpbmdDaGlsZHJlbigp
OworfQorCit2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcENvbW1vbigpCit7CisgICAgQVNTRVJU
KCF0b3AoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omh0bWxUYWcpKTsKKyAgICBBU1NFUlQoIXRv
cCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOworICAgIHRvcCgpLT5maW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKKyAgICBtX3RvcCA9IG1fdG9wLT5yZWxlYXNlTmV4dCgpOworfQor
Cit2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnJlbW92ZU5vbkZpcnN0Q29tbW9uKEVsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHRt
bFRhZykpOworICAgIEFTU0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlU
YWcpKTsKKyAgICBFbGVtZW50UmVjb3JkKiBwb3MgPSBtX3RvcC5nZXQoKTsKKyAgICBBU1NFUlQo
cG9zLT5lbGVtZW50KCkgIT0gZWxlbWVudCk7CisgICAgd2hpbGUgKHBvcy0+bmV4dCgpKSB7Cisg
ICAgICAgIGlmIChwb3MtPm5leHQoKS0+ZWxlbWVudCgpID09IGVsZW1lbnQpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0byBjYWxsIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCisg
ICAgICAgICAgICAvLyB3aGVuIHRoZSBjaGlsZHJlbiBhcmVuJ3QgYWN0dWFsbHkgZmluaXNoZWQ/
CisgICAgICAgICAgICBlbGVtZW50LT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICAgICAg
ICAgIHBvcy0+c2V0TmV4dChwb3MtPm5leHQoKS0+cmVsZWFzZU5leHQoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmggYi9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnRTdGFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMWFiNmEyY2QzOTk1OWQ4
MDJiNTIyZWQxMDA0Nzg5YTQ3YTAzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnRTdGFjay5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVsZW1lbnRTdGFja19o
CisjZGVmaW5lIEhUTUxFbGVtZW50U3RhY2tfaAorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRWxlbWVudDsKKworY2xhc3MgSFRNTEVsZW1lbnRTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgSFRNTEVsZW1lbnRTdGFjaygpOworICAgIH5IVE1MRWxlbWVudFN0
YWNrKCk7CisKKyAgICBFbGVtZW50KiB0b3AoKSBjb25zdDsKKworICAgIHZvaWQgcHVzaChQYXNz
UmVmUHRyPEVsZW1lbnQ+KTsKKyAgICB2b2lkIHB1c2hIVE1MSHRtbEVsZW1lbnQoUGFzc1JlZlB0
cjxFbGVtZW50Pik7CisgICAgdm9pZCBwdXNoSFRNTEhlYWRFbGVtZW50KFBhc3NSZWZQdHI8RWxl
bWVudD4pOworICAgIHZvaWQgcHVzaEhUTUxCb2R5RWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+
KTsKKworICAgIHZvaWQgcG9wKCk7CisgICAgdm9pZCBwb3BIVE1MSGVhZEVsZW1lbnQoKTsKKwor
ICAgIHZvaWQgcmVtb3ZlKEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZUhUTUxIZWFkRWxlbWVu
dChFbGVtZW50Kik7CisKKyAgICBib29sIGNvbnRhaW5zKEVsZW1lbnQqKSBjb25zdDsKKworICAg
IGJvb2wgaW5TY29wZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIGJvb2wg
aW5TY29wZShFbGVtZW50KikgY29uc3Q7CisKKyAgICBFbGVtZW50KiBodG1sRWxlbWVudCgpOwor
ICAgIEVsZW1lbnQqIGhlYWRFbGVtZW50KCk7CisgICAgRWxlbWVudCogYm9keUVsZW1lbnQoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHB1c2hDb21tb24oUGFzc1JlZlB0cjxFbGVtZW50Pik7Cisg
ICAgdm9pZCBwb3BDb21tb24oKTsKKyAgICB2b2lkIHJlbW92ZU5vbkZpcnN0Q29tbW9uKEVsZW1l
bnQqKTsKKworICAgIGNsYXNzIEVsZW1lbnRSZWNvcmQ7CisgICAgT3duUHRyPEVsZW1lbnRSZWNv
cmQ+IG1fdG9wOworCisgICAgLy8gV2UgcmVtZW1iZXIgPGh0bWw+LCA8aGVhZD4gYW5kIDxib2R5
PiBhcyB0aGV5IGFyZSBwdXNoZWQuICBUaGVpcgorICAgIC8vIEVsZW1lbnRSZWNvcmRzIGtlZXAg
dGhlbSBhbGl2ZS4gIDxodG1sPiBhbmQgPGJvZHk+IGFyZSBuZXZlciBwb3BwZWQuCisgICAgLy8g
RklYTUU6IFdlIGRvbid0IGN1cnJlbnRseSByZXF1aXJlIHR5cGUtc3BlY2lmaWMgaW5mb3JtYXRp
b24gYWJvdXQKKyAgICAvLyB0aGVzZSBlbGVtZW50cyBzbyB3ZSBoYXZlbid0IHlldCBib3RoZXJl
ZCB0byBwbHVtYiB0aGUgdHlwZXMgYWxsIHRoZQorICAgIC8vIHdheSBkb3duIHRocm91Z2ggY3Jl
YXRlRWxlbWVudCwgZXRjLgorICAgIEVsZW1lbnQqIG1faHRtbEVsZW1lbnQ7CisgICAgRWxlbWVu
dCogbV9oZWFkRWxlbWVudDsKKyAgICBFbGVtZW50KiBtX2JvZHlFbGVtZW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSFRNTEVsZW1lbnRTdGFja19oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRN
TFRyZWVCdWlsZGVyLmgKaW5kZXggOWY0OGVmNGJhOGNlMTY5ZmZhYTQ4OTg2N2NiZWJlYjYzZTVj
YmM1Mi4uN2U0MGRmMzQ1ZDdiMzJkOTdkMWVmMmZkYzcwOGE3ZTZlZThiODIzYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
VHJlZUJ1aWxkZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgotI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50U3RhY2suaCIKICNpbmNsdWRlICJIVE1MVG9r
ZW5pemVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgpAQCAtMTAxLDE5MyArMTAxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJBZnRl
ckZyYW1lc2V0TW9kZSwKICAgICB9OwogCi0gICAgY2xhc3MgRWxlbWVudFJlY29yZCA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBFbGVtZW50UmVjb3JkKFBhc3NS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgUGFzc093blB0cjxFbGVtZW50UmVjb3JkPiBuZXh0KQot
ICAgICAgICAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAgICAgICAgICwgbV9uZXh0KG5l
eHQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KLSAgICAgICAgRWxlbWVudFJlY29yZCog
bmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQotICAgICAgICBQYXNzT3duUHRy
PEVsZW1lbnRSZWNvcmQ+IHJlbGVhc2VOZXh0KCkgeyByZXR1cm4gbV9uZXh0LnJlbGVhc2UoKTsg
fQotICAgICAgICB2b2lkIHNldE5leHQoUGFzc093blB0cjxFbGVtZW50UmVjb3JkPiBuZXh0KSB7
IG1fbmV4dCA9IG5leHQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50
PiBtX2VsZW1lbnQ7Ci0gICAgICAgIE93blB0cjxFbGVtZW50UmVjb3JkPiBtX25leHQ7Ci0gICAg
fTsKLQotICAgIGNsYXNzIEVsZW1lbnRTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBFbGVtZW50U3RhY2soKQotICAgICAgICAgICAgOiBtX2h0bWxFbGVt
ZW50KDApCi0gICAgICAgICAgICAsIG1faGVhZEVsZW1lbnQoMCkKLSAgICAgICAgICAgICwgbV9i
b2R5RWxlbWVudCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBvcEhU
TUxIZWFkRWxlbWVudCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCh0b3AoKSA9PSBt
X2hlYWRFbGVtZW50KTsKLSAgICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSAwOwotICAgICAgICAg
ICAgcG9wQ29tbW9uKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBvcCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCghdG9wKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFk
VGFnKSk7Ci0gICAgICAgICAgICBwb3BDb21tb24oKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgcHVzaEhUTUxIdG1sRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aHRtbFRhZykpOwotICAgICAgICAgICAgQVNTRVJUKCFtX2h0bWxFbGVtZW50KTsKLSAgICAgICAg
ICAgIG1faHRtbEVsZW1lbnQgPSBlbGVtZW50LmdldCgpOwotICAgICAgICAgICAgcHVzaENvbW1v
bihlbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVzaEhUTUxIZWFkRWxlbWVu
dChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpOwotICAgICAgICAg
ICAgQVNTRVJUKCFtX2hlYWRFbGVtZW50KTsKLSAgICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSBl
bGVtZW50LmdldCgpOwotICAgICAgICAgICAgcHVzaENvbW1vbihlbGVtZW50KTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZvaWQgcHVzaEhUTUxCb2R5RWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOwotICAgICAgICAgICAgQVNTRVJUKCFtX2JvZHlFbGVt
ZW50KTsKLSAgICAgICAgICAgIG1fYm9keUVsZW1lbnQgPSBlbGVtZW50LmdldCgpOwotICAgICAg
ICAgICAgcHVzaENvbW1vbihlbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVz
aChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omh0bWxUYWcpKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRUYWcpKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcp
KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2h0bWxFbGVtZW50KTsKLSAgICAgICAgICAgIHB1c2hD
b21tb24oZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBFbGVtZW50KiB0b3AoKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV90b3AtPmVsZW1lbnQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgcmVtb3ZlSFRNTEhlYWRFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2hlYWRFbGVtZW50ID09IGVsZW1l
bnQpOwotICAgICAgICAgICAgaWYgKG1fdG9wLT5lbGVtZW50KCkgPT0gZWxlbWVudCkgewotICAg
ICAgICAgICAgICAgIHBvcEhUTUxIZWFkRWxlbWVudCgpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSAwOwotICAgICAg
ICAgICAgcmVtb3ZlTm9uRmlyc3RDb21tb24oZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHJlbW92ZShFbGVtZW50KiBlbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7Ci0gICAgICAg
ICAgICBpZiAobV90b3AtPmVsZW1lbnQoKSA9PSBlbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAg
cG9wKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmVtb3ZlTm9uRmlyc3RDb21tb24oZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGNvbnRhaW5zKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAoRWxlbWVudFJlY29yZCogcG9zID0gbV90b3AuZ2V0KCk7IHBvczsgcG9zID0gcG9z
LT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocG9zLT5lbGVtZW50KCkgPT0gZWxlbWVu
dCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGluU2NvcGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBhbGdvcml0aG0gaXMgd3JvbmcuCi0gICAgICAgICAgICBmb3IgKEVsZW1l
bnRSZWNvcmQqIHBvcyA9IG1fdG9wLmdldCgpOyBwb3M7IHBvcyA9IHBvcy0+bmV4dCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHBvcy0+ZWxlbWVudCgpLT50YWdRTmFtZSgpID09IG5hbWUpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpblNjb3BlKEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGFsZ29yaXRobSBpcyB3cm9uZy4KLSAgICAgICAgICAgIHJldHVybiBjb250YWlucyhlbGVtZW50
KTsKLSAgICAgICAgfQotCi0gICAgICAgIEVsZW1lbnQqIGh0bWxFbGVtZW50KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKG1faHRtbEVsZW1lbnQpOwotICAgICAgICAgICAgcmV0dXJu
IG1faHRtbEVsZW1lbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBFbGVtZW50KiBoZWFkRWxlbWVu
dCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2hlYWRFbGVtZW50KTsKLSAgICAg
ICAgICAgIHJldHVybiBtX2hlYWRFbGVtZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgRWxlbWVu
dCogYm9keUVsZW1lbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9ib2R5RWxl
bWVudCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9ib2R5RWxlbWVudDsKLSAgICAgICAgfQotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBwdXNoQ29tbW9uKFBhc3NSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgbV90b3Auc2V0KG5ldyBFbGVtZW50UmVj
b3JkKGVsZW1lbnQsIG1fdG9wLnJlbGVhc2UoKSkpOwotICAgICAgICAgICAgdG9wKCktPmJlZ2lu
UGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBvcENvbW1vbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghdG9wKCktPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpodG1sVGFnKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIXRvcCgpLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6Ym9keVRhZykpOwotICAgICAgICAgICAgdG9wKCktPmZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpOwotICAgICAgICAgICAgbV90b3AgPSBtX3RvcC0+cmVsZWFzZU5leHQoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgcmVtb3ZlTm9uRmlyc3RDb21tb24oRWxlbWVudCogZWxlbWVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6aHRtbFRhZykpOwotICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOwotICAgICAgICAgICAgRWxlbWVudFJlY29yZCogcG9z
ID0gbV90b3AuZ2V0KCk7Ci0gICAgICAgICAgICBBU1NFUlQocG9zLT5lbGVtZW50KCkgIT0gZWxl
bWVudCk7Ci0gICAgICAgICAgICB3aGlsZSAocG9zLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAocG9zLT5uZXh0KCktPmVsZW1lbnQoKSA9PSBlbGVtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0byBjYWxsIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
Ci0gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIGNoaWxkcmVuIGFyZW4ndCBhY3R1YWxs
eSBmaW5pc2hlZD8KLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIHBvcy0+c2V0TmV4dChwb3MtPm5leHQoKS0+
cmVsZWFzZU5leHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIE93blB0cjxFbGVtZW50UmVjb3JkPiBtX3RvcDsKLQotICAg
ICAgICAvLyBXZSByZW1lbWJlciA8aHRtbD4sIDxoZWFkPiBhbmQgPGJvZHk+IGFzIHRoZXkgYXJl
IHB1c2hlZC4gIFRoZWlyCi0gICAgICAgIC8vIEVsZW1lbnRSZWNvcmRzIGtlZXAgdGhlbSBhbGl2
ZS4gIDxodG1sPiBhbmQgPGJvZHk+IGFyZSBuZXZlciBwb3BwZWQuCi0gICAgICAgIC8vIEZJWE1F
OiBXZSBkb24ndCBjdXJyZW50bHkgcmVxdWlyZSB0eXBlLXNwZWNpZmljIGluZm9ybWF0aW9uIGFi
b3V0Ci0gICAgICAgIC8vIHRoZXNlIGVsZW1lbnRzIHNvIHdlIGhhdmVuJ3QgeWV0IGJvdGhlcmVk
IHRvIHBsdW1iIHRoZSB0eXBlcyBhbGwgdGhlCi0gICAgICAgIC8vIHdheSBkb3duIHRocm91Z2gg
Y3JlYXRlRWxlbWVudCwgZXRjLgotICAgICAgICBFbGVtZW50KiBtX2h0bWxFbGVtZW50OwotICAg
ICAgICBFbGVtZW50KiBtX2hlYWRFbGVtZW50OwotICAgICAgICBFbGVtZW50KiBtX2JvZHlFbGVt
ZW50OwotICAgIH07Ci0KICAgICB2b2lkIHBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUxUb2tl
biYpOwogCiAgICAgLy8gU3BlY2lhbGl6ZWQgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIHRoZSBk
aWZmZXJlbnQgdHlwZXMgb2YgdG9rZW5zLgpAQCAtMzU1LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8RWxlbWVudD4gbV9oZWFkRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4g
bV9mb3JtRWxlbWVudDsKLSAgICBFbGVtZW50U3RhY2sgbV9vcGVuRWxlbWVudHM7CisgICAgSFRN
TEVsZW1lbnRTdGFjayBtX29wZW5FbGVtZW50czsKIAogICAgIGNsYXNzIEZvcm1hdHRpbmdFbGVt
ZW50RW50cnkgewogICAgIHB1YmxpYzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>