<?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>34606</bug_id>
          
          <creation_ts>2010-02-04 11:56:06 -0800</creation_ts>
          <short_desc>[V8] Clean up code for getting a v8::FunctionTemplate</short_desc>
          <delta_ts>2010-02-05 08:31:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187884</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-04 11:56:06 -0800</bug_when>
    <thetext>Each generated V8 class has a private GetTemplate() function.  V8ClassIndex is a friend of those classes, and it has a big, long, macro&apos;ed switch statement that it uses to return the correct FunctionTemplate based on the passed in V8ClassIndex::WrapperType.  It also creates a cache of these templates, in spite of the fact that each generated class already caches its own FunctionTemplate.  To clean this up:

1. Make GetTemplate() public, un-friend V8ClassIndex
2. Remove the duplicate caching of FunctionTemplates
3. When the type of FunctionTemplate desired is known, call V8&lt;classname&gt;::GetTemplate() directly instead of using V8ClassIndex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187886</commentid>
    <comment_count>1</comment_count>
      <attachid>48158</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-04 12:02:29 -0800</bug_when>
    <thetext>Created attachment 48158
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187962</commentid>
    <comment_count>2</comment_count>
      <attachid>48158</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-04 15:26:26 -0800</bug_when>
    <thetext>Comment on attachment 48158
patch

sounds good. Are we going to rename GetTemplate() to template(), to match WebKit spirit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187975</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-04 15:42:34 -0800</bug_when>
    <thetext>If you&apos;d like.  This patch or a later one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188027</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-04 17:23:06 -0800</bug_when>
    <thetext>l8r.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188190</commentid>
    <comment_count>5</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-05 08:31:41 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/54425</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48158</attachid>
            <date>2010-02-04 12:02:29 -0800</date>
            <delta_ts>2010-02-04 15:26:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17613</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCShy
ZXZpc2lvbiA1NDM2MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5o
IgorI2luY2x1ZGUgIlY4SW5zcGVjdG9yQmFja2VuZC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
ICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKQEAg
LTg3LDYgKzg4LDcgQEAKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKIHVzaW5nIFdlYkNvcmU6OlY4
Q2xhc3NJbmRleDsKIHVzaW5nIFdlYkNvcmU6OlY4RE9NV3JhcHBlcjsKK3VzaW5nIFdlYkNvcmU6
OlY4SW5zcGVjdG9yQmFja2VuZDsKIHVzaW5nIFdlYkNvcmU6OlY4UHJveHk7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMzUxLDcgKzM1Myw3IEBACiB2ODo6TG9jYWw8djg6Ok9iamVjdD4gV2Vi
RGV2VG9vbHNBZ2VudEltcGw6OmNyZWF0ZUluc3BlY3RvckJhY2tlbmRWOFdyYXBwZXIoKQogewog
ICAgIFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSBkZXNjcmlwdG9yVHlwZSA9IFY4Q2xhc3NJ
bmRleDo6SU5TUEVDVE9SQkFDS0VORDsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVu
Y3Rpb24gPSBWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKGRlc2NyaXB0b3JUeXBlKS0+R2V0RnVu
Y3Rpb24oKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluc3Bl
Y3RvckJhY2tlbmQ6OkdldFRlbXBsYXRlKCktPkdldEZ1bmN0aW9uKCk7CiAgICAgaWYgKGZ1bmN0
aW9uLklzRW1wdHkoKSkgewogICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQu
CiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTQzNjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTAtMDItMDQgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY29kZSBmb3IgZ2V0dGluZyBhIHY4OjpGdW5jdGlvblRlbXBsYXRlLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDYwNgor
CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmNyZWF0ZUluc3BlY3RvckJhY2tlbmRWOFdyYXBwZXIp
OgorCisyMDEwLTAyLTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgogCiAgICAgICAgIFJlbW92ZSByZWZl
cmVuY2VzIHRvIFY4Q3VzdG9tLgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0wMi0wNCAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtWOF0gQ2xlYW4gdXAgY29kZSBmb3IgZ2V0dGluZyBhIHY4OjpG
dW5jdGlvblRlbXBsYXRlLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0NjA2CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbTogTWFraW5nIEdldFRlbXBsYXRlKCkgcHVibGljCisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbmZpZ3VyZVRl
bXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOiBSZW1vdmUg
Z2V0VGVtcGxhdGUoKSwgdXNlIFY4Q2xhc3NJbmRleDo6Z2V0VGVtcGxhdGUoKSBpbnN0ZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNw
cDogUmVtb3ZlIGR1cGxpY2F0ZSBjYWNoaW5nIG9mIEZ1bmN0aW9uVGVtcGxhdGVzLgorICAgICAg
ICAoV2ViQ29yZTo6VjhDbGFzc0luZGV4OjpnZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhJbmRleC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0Vs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxBdWRpb0VsZW1l
bnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEF1ZGlvRWxl
bWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbkVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSW5qZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKwogMjAxMC0wMi0wNCAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDEwICsz
MzcsNyBAQAogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCi0gcHJpdmF0ZToK
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0
ZSgpOwotCi0gIGZyaWVuZCBjbGFzcyBWOENsYXNzSW5kZXg7CiB9OwogCiAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qJHtmb3JjZU5ld09iamVjdFBhcmFtZXRlcn0p
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24gNTQzNjAp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCwyMCArMTY0LDYgQEAKICAgICBnZXRET01Ob2RlTWFwKCkuc2V0KG5vZGUsIHdyYXBw
ZXIpOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhET01XcmFw
cGVyOjpnZXRUZW1wbGF0ZShWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgdHlwZSkKLXsKLSAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4qIGNhY2hlQ2VsbCA9IFY4Q2xh
c3NJbmRleDo6R2V0Q2FjaGUodHlwZSk7Ci0gICAgaWYgKCFjYWNoZUNlbGwtPklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuICpjYWNoZUNlbGw7Ci0KLSAgICAvLyBOb3QgaW4gdGhlIGNhY2hlLgot
ICAgIEZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IGZhY3RvcnkgPSBWOENsYXNzSW5kZXg6OkdldEZh
Y3RvcnkodHlwZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2NyaXB0b3IgPSBmYWN0b3J5KCk7Ci0KLSAgICAqY2FjaGVDZWxsID0gZGVzY3JpcHRvcjsKLSAg
ICByZXR1cm4gZGVzY3JpcHRvcjsKLX0KLQogdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhET01X
cmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgdHlwZSwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iamVjdFByb3RvdHlwZSkKIHsKICAgICAvLyBBIERPTSBj
b25zdHJ1Y3RvciBpcyBhIGZ1bmN0aW9uIGluc3RhbmNlIGNyZWF0ZWQgZnJvbSBhIERPTSBjb25z
dHJ1Y3RvcgpAQCAtMTg5LDcgKzE3NSw3IEBACiAgICAgLy8gVGhlIHJlYXNvbiBmb3IgMikgaXMg
dGhhdCwgaW4gU2FmYXJpLCBhIERPTSBjb25zdHJ1Y3RvciBpcyBhIG5vcm1hbCBKUwogICAgIC8v
IG9iamVjdCwgYnV0IG5vdCBhIGZ1bmN0aW9uLiBIb3RtYWlsIHJlbGllcyBvbiB0aGUgZmFjdCB0
aGF0LCBpbiBTYWZhcmksCiAgICAgLy8gSFRNTEVsZW1lbnQuX19wcm90b19fID09IE9iamVjdC5w
cm90b3R5cGUuCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25U
ZW1wbGF0ZSA9IGdldFRlbXBsYXRlKHR5cGUpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBWOENsYXNzSW5kZXg6OmdldFRlbXBsYXRlKHR5
cGUpOwogICAgIC8vIEdldHRpbmcgdGhlIGZ1bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVu
bmluZyBvdXQgb2YKICAgICAvLyBzdGFjayBvciBtZW1vcnkuCiAgICAgdjg6OlRyeUNhdGNoIHRy
eUNhdGNoOwpAQCAtMjk1LDcgKzI4MSw3IEBACiAgICAgICAgIC8vIEZJWE1FOiBGaXggdGhpcyB0
byB3b3JrIHByb3Blcmx5IHdpdGggaXNvbGF0ZWQgd29ybGRzIChzZWUgYWJvdmUpLgogICAgICAg
ICBpbnN0YW5jZSA9IHByb3h5LT53aW5kb3dTaGVsbCgpLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hl
KHR5cGUpOwogICAgIGVsc2UgewotICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5j
dGlvbiA9IGdldFRlbXBsYXRlKHR5cGUpLT5HZXRGdW5jdGlvbigpOworICAgICAgICB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IFY4Q2xhc3NJbmRleDo6Z2V0VGVtcGxhdGUodHlw
ZSktPkdldEZ1bmN0aW9uKCk7CiAgICAgICAgIGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5l
d0luc3RhbmNlKGZ1bmN0aW9uKTsKICAgICB9CiAgICAgaWYgKCFpbnN0YW5jZS5Jc0VtcHR5KCkp
IHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkocmV2aXNpb24gNTQzNjApCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksNyArMTE5LDcgQEAKIAogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBs
b29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSB0eXBlLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG9i
amVjdC5Jc0VtcHR5KCkgPyBvYmplY3QgOiBvYmplY3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oZ2V0VGVtcGxhdGUodHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5Jc0Vt
cHR5KCkgPyBvYmplY3QgOiBvYmplY3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhD
bGFzc0luZGV4OjpnZXRUZW1wbGF0ZSh0eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIGRvbVdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4pOwpAQCAtMTY5LDcgKzE2OSw2IEBACiAgICAgICAgIC8vIFdyYXAgSlMgbm9k
ZSBmaWx0ZXIgaW4gQysrLgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB3
cmFwTmF0aXZlTm9kZUZpbHRlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCi0gICAgICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUoVjhD
bGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlKTsKICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+IGdldENvbnN0cnVjdG9yRm9yQ29udGV4dChWOENsYXNzSW5kZXg6OlY4V3JhcHBl
clR5cGUsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICAgICAgICAgc3RhdGljIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+IGdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlw
ZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iamVjdFByb3RvdHlwZSk7CiAgICAgICAgIHN0YXRp
YyB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBnZXRDb25zdHJ1Y3RvcihWOENsYXNzSW5kZXg6OlY4
V3JhcHBlclR5cGUsIERPTVdpbmRvdyopOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOElu
ZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHJldmlz
aW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDggKzM5LDYgQEAKIHN0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyT2JqZWN0
SW5kZXggPSAxOwogc3RhdGljIGNvbnN0IGludCB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVs
ZENvdW50ID0gMjsKIAotdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKLQogI2lmIEVOQUJMRShEQVRBR1JJRCkK
ICNkZWZpbmUgREFUQUdSSURfSFRNTEVMRU1FTlRfVFlQRVMoVikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxEQVRBR1JJRENFTExFTEVNRU5ULCBIVE1MRGF0
YUdyaWRDZWxsRWxlbWVudCkgICAgICAgICAgICAgICAgIFwKQEAgLTY2NCwxMiArNjYyLDcgQEAK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWOFdyYXBwZXJUeXBlPih2KTsKICAgICAg
ICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIGdldEZhY3RvcnkgYWZ0ZXIgYWxs
IHRoZSBiaW5kaW5ncyBhcmUgaW4gb25lIHBsYWNlLgotICAgICAgICBzdGF0aWMgRnVuY3Rpb25U
ZW1wbGF0ZUZhY3RvcnkgR2V0RmFjdG9yeShWOFdyYXBwZXJUeXBlIHR5cGUpOwotCi0gICAgICAg
IC8vIFJldHVybnMgYSBmaWVsZCB0byBiZSB1c2VkIGFzIGNhY2hlIGZvciB0aGUgdGVtcGxhdGUg
Zm9yIHRoZSBnaXZlbiB0eXBlCi0gICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIGdldENhY2hl
IGFmdGVyIGFsbCB0aGUgYmluZGluZ3MgYXJlIGluIG9uZSBwbGFjZS4KLSAgICAgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiogR2V0Q2FjaGUoVjhXcmFwcGVy
VHlwZSB0eXBlKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBnZXRUZW1wbGF0ZShWOFdyYXBwZXJUeXBlIHR5cGUpOwogICAgIH07CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHAJKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcg
QEAKICAgICBpZiAocHJveHkpCiAgICAgICAgIGZ1bmN0aW9uID0gVjhET01XcmFwcGVyOjpnZXRD
b25zdHJ1Y3RvcihkZXNjcmlwdG9yVHlwZSwgcHJveHktPndvcmtlckNvbnRleHQoKSk7CiAgICAg
ZWxzZQotICAgICAgICBmdW5jdGlvbiA9IFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoZGVzY3Jp
cHRvclR5cGUpLT5HZXRGdW5jdGlvbigpOworICAgICAgICBmdW5jdGlvbiA9IFY4Q2xhc3NJbmRl
eDo6Z2V0VGVtcGxhdGUoZGVzY3JpcHRvclR5cGUpLT5HZXRGdW5jdGlvbigpOwogCiAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNl
KGZ1bmN0aW9uKTsKICAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmNwcAkocmV2aXNpb24gNTQzNjApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMzQgKzQ2NCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5IFY4Q2xhc3NJbmRleDo6R2V0
RmFjdG9yeShWOFdyYXBwZXJUeXBlIHR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhDbGFzc0luZGV4OjpnZXRUZW1wbGF0ZShWOFdyYXBwZXJUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAjZGVmaW5lIE1BS0VfQ0FTRSh0eXBlLCBuYW1lKVwKLSAg
ICBjYXNlIFY4Q2xhc3NJbmRleDo6dHlwZTogcmV0dXJuIFY4IyNuYW1lOjpHZXRUZW1wbGF0ZTsK
KyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6dHlwZTogcmV0dXJuIFY4IyNuYW1lOjpHZXRUZW1wbGF0
ZSgpOwogICAgIFdSQVBQRVJfVFlQRVMoTUFLRV9DQVNFKQogI3VuZGVmIE1BS0VfQ0FTRQotICAg
IGRlZmF1bHQ6IHJldHVybiBOVUxMOwotICAgIH0KLX0KLQotCi0jZGVmaW5lIE1BS0VfQ0FDSEUo
dHlwZSwgbmFtZSlcCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBuYW1lIyNfY2FjaGVfOwotICAgIEFMTF9XUkFQUEVSX1RZUEVTKE1BS0VfQ0FDSEUpCi0j
dW5kZWYgTUFLRV9DQUNIRQotCi0KLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiogVjhDbGFzc0luZGV4OjpHZXRDYWNoZShWOFdyYXBwZXJUeXBlIHR5cGUpCi17Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0jZGVmaW5lIE1BS0VfQ0FTRSh0eXBlLCBuYW1lKVwKLSAgICBjYXNlIFY4
Q2xhc3NJbmRleDo6dHlwZTogcmV0dXJuICZuYW1lIyNfY2FjaGVfOwotICAgIEFMTF9XUkFQUEVS
X1RZUEVTKE1BS0VfQ0FTRSkKLSN1bmRlZiBNQUtFX0NBU0UKICAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlQoZmFsc2UpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwogICB9CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsNyArNDUw
LDcgQEAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2Mt
Pkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KGZpZWxkQ291bnQpOwogICAgIGlmIChwYXJlbnRDbGFzc0luZGV4KQotICAgICAgICBkZXNjLT5J
bmhlcml0KFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUocGFyZW50Q2xhc3NJbmRleCkpOworICAg
ICAgICBkZXNjLT5Jbmhlcml0KFY4Q2xhc3NJbmRleDo6Z2V0VGVtcGxhdGUocGFyZW50Q2xhc3NJ
bmRleCkpOwogICAgIGlmIChhdHRyaWJ1dGVDb3VudCkKICAgICAgICAgYmF0Y2hDb25maWd1cmVB
dHRyaWJ1dGVzKGluc3RhbmNlLCBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgYXR0cmlidXRlQ291bnQpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDEzICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBWOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IgewotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUoKTsKK2NsYXNzIFY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0
ZSgpOworfTsKIAotICAgICAgICBmcmllbmQgY2xhc3MgVjhDbGFzc0luZGV4OwotICAgIH07Ci0K
IH0KIAogI2VuZGlmIC8vIFY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcl9oCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTMgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yIHsKLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKCk7Citj
bGFzcyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOworfTsK
IAotICAgICAgICBmcmllbmQgY2xhc3MgVjhDbGFzc0luZGV4OwotICAgIH07Ci0KIH0KIAogI2Vu
ZGlmIC8vIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yX2gKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gNTQzNjApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWOEhUTUxBdWRpb0VsZW1lbnRD
b25zdHJ1Y3RvciB7Ci1wcml2YXRlOgorcHVibGljOgogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUoKTsKLQotICAgIGZyaWVuZCBjbGFz
cyBWOENsYXNzSW5kZXg7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDU0MzYwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBA
QAogICAgICAgICB9CiAgICAgfQogCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFy
Z3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpOT0RFKSwgb3B0
aW9uLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgVjhDbGFzc0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6Ok9QVElPTiksIG9wdGlvbi5nZXQo
KSk7CiAgICAgb3B0aW9uLT5yZWYoKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckRPTU5vZGUob3B0aW9uLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKQEAgLTEwNCw3ICsxMDQs
NyBAQAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0
LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3Vu
dChWOEhUTUxPcHRpb25FbGVtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+
U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTE9wdGlvbkVsZW1lbnQiKSk7Ci0gICAg
cmVzdWx0LT5Jbmhlcml0KFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4OjpI
VE1MT1BUSU9ORUxFTUVOVCkpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxPcHRpb25FbGVt
ZW50OjpHZXRUZW1wbGF0ZSgpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVk
VGVtcGxhdGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1NDM2MCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgICAgICAgICAgaW1h
Z2UtPnNldEhlaWdodCh0b0ludDMyKGFyZ3NbMV0pKTsKICAgICB9CiAKLSAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgVjhDbGFzc0luZGV4OjpUb0ludChWOENs
YXNzSW5kZXg6Ok5PREUpLCBpbWFnZS5nZXQoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01X
cmFwcGVyKGFyZ3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpJ
TUFHRSksIGltYWdlLmdldCgpKTsKICAgICBpbWFnZS0+cmVmKCk7CiAgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltYWdlLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsK
QEAgLTg4LDcgKzg4LDcgQEAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRl
cm5hbEZpZWxkQ291bnQoVjhIVE1MSW1hZ2VFbGVtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwog
ICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTEltYWdlRWxlbWVu
dCIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENs
YXNzSW5kZXg6OkhUTUxJTUFHRUVMRU1FTlQpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1M
SW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZSgpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKICAgICByZXR1
cm4gY2FjaGVkVGVtcGxhdGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCShyZXZpc2lvbiA1NDM2
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogc3RhdGljIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBwZXIoSW5qZWN0ZWRT
Y3JpcHRIb3N0KiBob3N0KQogewogICAgIFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSBkZXNj
cmlwdG9yVHlwZSA9IFY4Q2xhc3NJbmRleDo6SU5KRUNURURTQ1JJUFRIT1NUOwotICAgIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShk
ZXNjcmlwdG9yVHlwZSktPkdldEZ1bmN0aW9uKCk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj4gZnVuY3Rpb24gPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6R2V0VGVtcGxhdGUoKS0+R2V0RnVu
Y3Rpb24oKTsKICAgICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFJldHVy
biBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PigpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVt
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTQzNjApCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAgICAgYXVkaW8tPnNj
aGVkdWxlTG9hZCgpOwogICAgIH0KIAotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihh
cmdzLkhvbGRlcigpLCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6Tk9ERSksIGF1
ZGlvLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgVjhDbGFzc0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6OkFVRElPKSwgYXVkaW8uZ2V0KCkp
OwogICAgIGF1ZGlvLT5yZWYoKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU5vZGUoYXVkaW8uZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5I
b2xkZXIoKSkpOwogICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwpAQCAtODgsNyArODgsNyBAQAog
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0
YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhU
TUxBdWRpb0VsZW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFz
c05hbWUodjg6OlN0cmluZzo6TmV3KCJIVE1MQXVkaW9FbGVtZW50IikpOwotICAgIHJlc3VsdC0+
SW5oZXJpdChWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKFY4Q2xhc3NJbmRleDo6SFRNTEFVRElP
RUxFTUVOVCkpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxBdWRpb0VsZW1lbnQ6OkdldFRl
bXBsYXRlKCkpOwogCiAgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsK
</data>
<flag name="review"
          id="30793"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>