<?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>21364</bug_id>
          
          <creation_ts>2008-10-04 00:36:13 -0700</creation_ts>
          <short_desc>Remove the branch in op_ret for OptionalCalleeActivation and OptionalCalleeArguments</short_desc>
          <delta_ts>2008-10-05 23:03:35 -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>JavaScriptCore</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>
          
          <blocked>20812</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94060</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-04 00:36:13 -0700</bug_when>
    <thetext>Currently op_ret contains a branch for OptionalCalleeActivation and OptionalCalleeArguments, so it can tear either of the two off. Removing this branch is not that difficult, especially given recent changes to CodeFeatures in the parser, but it will require making f.arguments only live and shared in the case where &apos;arguments&apos; appears lexically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94180</commentid>
    <comment_count>1</comment_count>
      <attachid>24104</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-05 15:34:05 -0700</bug_when>
    <thetext>Created attachment 24104
Proposed patch to refactor some code in preparation for the speedup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94181</commentid>
    <comment_count>2</comment_count>
      <attachid>24104</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-10-05 15:37:52 -0700</bug_when>
    <thetext>Comment on attachment 24104
Proposed patch to refactor some code in preparation for the speedup

r=me

You may want to consider giving scopeChain a needsActivation method which checks for any of the needed conditions rather than having such a complex field initializer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94193</commentid>
    <comment_count>3</comment_count>
      <attachid>24104</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-05 18:38:00 -0700</bug_when>
    <thetext>Comment on attachment 24104
Proposed patch to refactor some code in preparation for the speedup

Landed in r327320, so I am removing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94195</commentid>
    <comment_count>4</comment_count>
      <attachid>24107</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-05 18:39:02 -0700</bug_when>
    <thetext>Created attachment 24107
Patch in progress

This patch passes all tests, but it doesn&apos;t seem to be a speedup on my machine. I also need to add some tests for the changes in functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94206</commentid>
    <comment_count>5</comment_count>
      <attachid>24110</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-05 22:31:23 -0700</bug_when>
    <thetext>Created attachment 24110
Proposed patch

This gives some odd test results on my machine, mostly due to a presumedly slowdown in Richards, but it is an overall progression on Maciej&apos;s machine, so he told me to put it up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94211</commentid>
    <comment_count>6</comment_count>
      <attachid>24110</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-10-05 22:49:33 -0700</bug_when>
    <thetext>Comment on attachment 24110
Proposed patch

r=me assuming you&apos;ve testing in cti and the interpreter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94212</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-05 23:03:35 -0700</bug_when>
    <thetext>Landed in r37324.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24104</attachid>
            <date>2008-10-05 15:34:05 -0700</date>
            <delta_ts>2008-10-05 18:38:00 -0700</delta_ts>
            <desc>Proposed patch to refactor some code in preparation for the speedup</desc>
            <filename>refactor.diff</filename>
            <type>text/plain</type>
            <size>5184</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MzE5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMTAt
MDUgIENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMTM2NDogUmVtb3ZlIHRoZSBi
cmFuY2ggaW4gb3BfcmV0IGZvciBPcHRpb25hbENhbGxlZUFjdGl2YXRpb24gYW5kIE9wdGlvbmFs
Q2FsbGVlQXJndW1lbnRzCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEzNjQ+CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCB5ZXQgcmVtb3Zl
IHRoZSBicmFuY2gsIGJ1dCBpdCBkb2VzIGEgYml0IG9mIHJlZmFjdG9yaW5nCisgICAgICAgIHNv
IHRoYXQgYSBDb2RlR2VuZXJhdG9yIG5vdyBrbm93cyB3aGV0aGVyIHRoZSBhc3NvY2lhdGVkIENv
ZGVCbG9jayB3aWxsIG5lZWQKKyAgICAgICAgYSBmdWxsIHNjb3BlIGJlZm9yZSBkb2luZyBhbnkg
Y29kZSBnZW5lcmF0aW9uLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVtaXQKKyAgICAgICAg
ZXhwbGljaXQgdGVhci1vZmYgaW5zdHJ1Y3Rpb25zIGJlZm9yZSBldmVyeSBvcF9yZXQuCisKKyAg
ICAgICAgKiBWTS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVHZW5lcmF0b3I6OkNvZGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpDb2RlR2VuZXJhdG9yOjplbWl0UHVzaFNjb3BlKToK
KyAgICAgICAgKEpTQzo6Q29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hOZXdTY29wZSk6CisgICAgICAg
ICoga2pzL25vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6dXNlc1dpdGgpOgorICAg
ICAgICAoSlNDOjpTY29wZU5vZGU6OnVzZXNDYXRjaCk6CisKIDIwMDgtMTAtMDUgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IENhbWVyb24gWndhcmljaC4KSW5kZXg6IFZNL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZN
L0NvZGVCbG9jay5oCShyZXZpc2lvbiAzNzMxNykKKysrIFZNL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAs
IG51bUNvbnN0YW50cygwKQogICAgICAgICAgICAgLCBudW1WYXJzKDApCiAgICAgICAgICAgICAs
IG51bVBhcmFtZXRlcnMoMCkKLSAgICAgICAgICAgICwgbmVlZHNGdWxsU2NvcGVDaGFpbihvd25l
ck5vZGVfLT51c2VzRXZhbCgpIHx8IG93bmVyTm9kZV8tPmNvbnRhaW5zQ2xvc3VyZXMoKSkKKyAg
ICAgICAgICAgICwgbmVlZHNGdWxsU2NvcGVDaGFpbihvd25lck5vZGVfLT51c2VzRXZhbCgpIHx8
IG93bmVyTm9kZV8tPmNvbnRhaW5zQ2xvc3VyZXMoKSB8fCBvd25lck5vZGVfLT51c2VzV2l0aCgp
IHx8IG93bmVyTm9kZV8tPnVzZXNDYXRjaCgpKQogICAgICAgICAgICAgLCB1c2VzRXZhbChvd25l
ck5vZGVfLT51c2VzRXZhbCgpKQogICAgICAgICAgICAgLCBjb2RlVHlwZShjb2RlVHlwZV8pCiAg
ICAgICAgICAgICAsIHNvdXJjZShzb3VyY2VfKQpJbmRleDogVk0vQ29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDM3MzE3KQorKysg
Vk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxNiArMTMxLDggQEAg
dm9pZCBDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiB7CiAgICAgbV9jb2RlQmxvY2stPnRoaXNS
ZWdpc3RlciA9IG1fdGhpc1JlZ2lzdGVyLmluZGV4KCk7CiAKLSAgICBpZiAobV9zaG91bGRFbWl0
RGVidWdIb29rcykKLSAgICAgICAgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4gPSB0
cnVlOwotCiAgICAgbV9zY29wZU5vZGUtPmVtaXRDb2RlKCp0aGlzKTsKIAotICAgIGlmIChtX2Nv
ZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFp
bikgewotICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YSgpLT5tYWNoaW5lLT5nZXRPcGNvZGVJRCht
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSA9PSBvcF9lbnRlcik7Ci0gICAg
ICAgIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNbMF0gPSBnbG9iYWxEYXRhKCktPm1hY2hpbmUt
PmdldE9wY29kZShvcF9lbnRlcl93aXRoX2FjdGl2YXRpb24pOwotICAgIH0KLQogI2lmbmRlZiBO
REVCVUcKICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCk7CkBAIC0y
MTYsNiArMjA4LDkgQEAgQ29kZUdlbmVyYXRvcjo6Q29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZQog
ICAgICwgbV9nbG9iYWxEYXRhKCZzY29wZUNoYWluLmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCktPmdsb2JhbERhdGEoKSkKICAgICAsIG1fbGFzdE9wY29kZUlEKG9wX2VuZCkKIHsKKyAgICBp
ZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKKyAgICAgICAgbV9jb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4gPSB0cnVlOworCiAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CiAgICAgY29k
ZUJsb2NrLT5nbG9iYWxEYXRhID0gbV9nbG9iYWxEYXRhOwogCkBAIC0yODksNyArMjg0LDE0IEBA
IENvZGVHZW5lcmF0b3I6OkNvZGVHZW5lcmF0b3IoRnVuY3Rpb25Cb2QKICAgICAsIG1fZ2xvYmFs
RGF0YSgmc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRh
KCkpCiAgICAgLCBtX2xhc3RPcGNvZGVJRChvcF9lbmQpCiB7Ci0gICAgZW1pdE9wY29kZShvcF9l
bnRlcik7CisgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCisgICAgICAgIG1fY29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluID0gdHJ1ZTsKKworICAgIGlmIChtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbikKKyAgICAgICAgZW1pdE9wY29kZShvcF9lbnRlcl93aXRoX2Fj
dGl2YXRpb24pOworICAgIGVsc2UKKyAgICAgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CisKICAg
ICBjb2RlQmxvY2stPmdsb2JhbERhdGEgPSBtX2dsb2JhbERhdGE7CiAKICAgICBib29sIHVzZXNB
cmd1bWVudHMgPSBmdW5jdGlvbkJvZHktPnVzZXNBcmd1bWVudHMoKTsKQEAgLTM0Nyw2ICszNDks
OSBAQCBDb2RlR2VuZXJhdG9yOjpDb2RlR2VuZXJhdG9yKEV2YWxOb2RlKiBlCiAgICAgLCBtX2ds
b2JhbERhdGEoJnNjb3BlQ2hhaW4uZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFs
RGF0YSgpKQogICAgICwgbV9sYXN0T3Bjb2RlSUQob3BfZW5kKQogeworICAgIGlmIChtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzKQorICAgICAgICBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFp
biA9IHRydWU7CisKICAgICBlbWl0T3Bjb2RlKG9wX2VudGVyKTsKICAgICBjb2RlQmxvY2stPmds
b2JhbERhdGEgPSBtX2dsb2JhbERhdGE7CiAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMg
PSAxOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCkBAIC0xMjAwLDcgKzEyMDUsNiBAQCBS
ZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0CiAKIFJlZ2lzdGVySUQqIENv
ZGVHZW5lcmF0b3I6OmVtaXRQdXNoU2NvcGUoUmVnaXN0ZXJJRCogc2NvcGUpCiB7Ci0gICAgbV9j
b2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4gPSB0cnVlOwogICAgIENvbnRyb2xGbG93Q29u
dGV4dCBjb250ZXh0OwogICAgIGNvbnRleHQuaXNGaW5hbGx5QmxvY2sgPSBmYWxzZTsKICAgICBt
X3Njb3BlQ29udGV4dFN0YWNrLmFwcGVuZChjb250ZXh0KTsKQEAgLTE0MTYsNyArMTQyMCw2IEBA
IHZvaWQgQ29kZUdlbmVyYXRvcjo6ZW1pdFN1YnJvdXRpbmVSZXR1cm4KIAogdm9pZCBDb2RlR2Vu
ZXJhdG9yOjplbWl0UHVzaE5ld1Njb3BlKFJlZ2lzdGVySUQqIGRzdCwgSWRlbnRpZmllciYgcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxT
Y29wZUNoYWluID0gdHJ1ZTsKICAgICBDb250cm9sRmxvd0NvbnRleHQgY29udGV4dDsKICAgICBj
b250ZXh0LmlzRmluYWxseUJsb2NrID0gZmFsc2U7CiAgICAgbV9zY29wZUNvbnRleHRTdGFjay5h
cHBlbmQoY29udGV4dCk7CkluZGV4OiBranMvbm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9k
ZXMuaAkocmV2aXNpb24gMzczMTcpCisrKyBranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE5Myw2ICsyMTkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgdXNlc0FyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CiAg
ICAgICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cygpIHsgbV9mZWF0dXJlcyB8PSBBcmd1bWVudHNG
ZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzICYgVGhpc0ZlYXR1cmU7IH0KKyAgICAgICAgYm9vbCB1c2VzV2l0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXMgJiBXaXRoRmVhdHVyZTsgfQorICAgICAgICBib29sIHVzZXNDYXRjaCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBDYXRjaEZlYXR1cmU7IH0KIAogICAgICAgICBW
YXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CiAgICAgICAgIEZ1bmN0
aW9uU3RhY2smIGZ1bmN0aW9uU3RhY2soKSB7IHJldHVybiBtX2Z1bmN0aW9uU3RhY2s7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24107</attachid>
            <date>2008-10-05 18:39:02 -0700</date>
            <delta_ts>2008-10-05 22:31:23 -0700</delta_ts>
            <desc>Patch in progress</desc>
            <filename>branch.diff</filename>
            <type>text/plain</type>
            <size>18735</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IFZNL0NUSS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ1RJLmNwcAkocmV2aXNpb24gMzcz
MTcpCisrKyBWTS9DVEkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcwLDE1ICsxMTcwLDE3IEBA
IHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGkgKz0gNDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZf
YWN0aXZhdGlvbjogeworICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3Rl
YXJfb2ZmX2FjdGl2YXRpb24pOworICAgICAgICAgICAgaSArPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6IHsKKyAg
ICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHMp
OworICAgICAgICAgICAgaSArPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9yZXQ6IHsKLSAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIGFjdGl2
YXRpb24gb3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB3ZSB0ZWFyIGl0Ci0gICAgICAgICAgICAv
LyBvZmYgYnkganVtcGluZyB0byB0aGUgaG9vayBiZWxvdy4KLSAgICAgICAgICAgIG1faml0Lm1v
dmxfbXIoUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb24gKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpLCBYODY6OmVkaSwgWDg2OjplYXgpOwotICAgICAgICAg
ICAgbV9qaXQub3JsX21yKFJlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpLCBYODY6OmVkaSwgWDg2OjplYXgpOwot
ICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKDAsIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIGFjdGl2YXRpb24gPSBtX2ppdC5lbWl0VW5saW5rZWRKbmUoKTsK
LSAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wRHN0IGFjdGl2YXRlZCA9IG1faml0LmxhYmVs
KCk7Ci0KICAgICAgICAgICAgIC8vIENoZWNrIGZvciBhIHByb2ZpbGVyIC0gaWYgdGhlcmUgaXMg
b25lLCBqdW1wIHRvIHRoZSBob29rIGJlbG93LgogICAgICAgICAgICAgZW1pdEdldENUSVBhcmFt
KENUSV9BUkdTX3Byb2ZpbGVyUmVmZXJlbmNlLCBYODY6OmVheCk7CiAgICAgICAgICAgICBtX2pp
dC5jbXBsX2kzMm0oMCwgWDg2OjplYXgpOwpAQCAtMTIwMywxMSArMTIwNSw2IEBAIHZvaWQgQ1RJ
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIG1faml0LnB1c2hsX3IoWDg2
OjplZHgpOwogICAgICAgICAgICAgbV9qaXQucmV0KCk7CiAKLSAgICAgICAgICAgIC8vIEFjdGl2
YXRpb24gYW5kICdhcmd1bWVudHMnIGhvb2sKLSAgICAgICAgICAgIG1faml0LmxpbmsoYWN0aXZh
dGlvbiwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpj
dGlfb3BfcmV0X2FjdGl2YXRpb25fYXJndW1lbnRzKTsKLSAgICAgICAgICAgIG1faml0Lmxpbmso
bV9qaXQuZW1pdFVubGlua2VkSm1wKCksIGFjdGl2YXRlZCk7Ci0KICAgICAgICAgICAgIC8vIFBy
b2ZpbGluZyBob29rCiAgICAgICAgICAgICBtX2ppdC5saW5rKHByb2ZpbGUsIG1faml0LmxhYmVs
KCkpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3JldF9wcm9maWxl
cik7CkluZGV4OiBWTS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDM3MzE3KQorKysgVk0vQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODA5LDYgKzgwOSwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMs
IGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIGNhbGxfZXZhbFx0XHQgJXMsICVzLCAlcywg
JWQsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCkuY19zdHIoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5jX3N0cigpLCByZWdpc3Rlck5hbWUocjIpLmNfc3RyKCksIHRlbXBDb3VudCwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogeworICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludGYoIlslNGRdIHRlYXJf
b2ZmX2FjdGl2YXRpb25cdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCkuY19zdHIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3RlYXJf
b2ZmX2FyZ3VtZW50czogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBwcmludGYoIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50c1x0ICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKHIwKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmV0XHRcdCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCkuY19zdHIoKSk7CkluZGV4OiBWTS9Db2RlR2Vu
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9Db2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MzczMjApCisrKyBWTS9Db2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1OCw2
ICsxMTU4LDE2IEBAIFJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKE9wY28KICAg
ICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJu
KFJlZ2lzdGVySUQqIHNyYykKK3sKKyAgICBpZiAobV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4pCisgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CisgICAg
ZWxzZSBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMpCisgICAgICAgIGVtaXRPcGNvZGUo
b3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKKworICAgIHJldHVybiBlbWl0VW5hcnlOb0RzdE9wKG9w
X3JldCwgc3JjKTsKK30KKwogUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5Tm9E
c3RPcChPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIHNyYykKIHsKICAgICBlbWl0T3Bjb2Rl
KG9wY29kZSk7CkluZGV4OiBWTS9Db2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29k
ZUdlbmVyYXRvci5oCShyZXZpc2lvbiAzNzMxNykKKysrIFZNL0NvZGVHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJl
Z2lzdGVySUQqIGJhc2UsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQq
IGJhc2UsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJldHVy
bihSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3BfcmV0LCBzcmMp
OyB9IAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYyk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbmQoUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0
VW5hcnlOb0RzdE9wKG9wX2VuZCwgc3JjKTsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
b25zdHJ1Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOwpJbmRleDogVk0vTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vTWFjaGluZS5jcHAJ
KHJldmlzaW9uIDM3MzE3KQorKysgVk0vTWFjaGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
MSwxMCArNzgxLDEzIEBAIE5FVkVSX0lOTElORSBib29sIE1hY2hpbmU6OnVud2luZENhbGxGcmEK
ICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9uIG9yIGFuICdh
cmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCiAgICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHJbUmVnaXN0ZXJGaWxlOjpPcHRp
b25hbENhbGxlZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKSkpIHsKICAgICAgICAgQVNTRVJUKGFj
dGl2YXRpb24tPmlzT2JqZWN0KCZKU0FjdGl2YXRpb246OmluZm8pKTsKLSAgICAgICAgYWN0aXZh
dGlvbi0+Y29weVJlZ2lzdGVycyhyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVu
dHNdLmdldEpTVmFsdWUoKSk7CisgICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3RhdGlj
X2Nhc3Q8QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRz
XS5nZXRKU1ZhbHVlKCkpOworICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cyB8fCBhcmd1bWVudHMt
PmlzT2JqZWN0KCZBcmd1bWVudHM6OmluZm8pKTsKKyAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJl
Z2lzdGVycyhhcmd1bWVudHMpOwogICAgIH0gZWxzZSBpZiAoQXJndW1lbnRzKiBhcmd1bWVudHMg
PSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVB
cmd1bWVudHNdLmdldEpTVmFsdWUoKSkpIHsKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+aXNP
YmplY3QoJkFyZ3VtZW50czo6aW5mbykpOwotICAgICAgICBhcmd1bWVudHMtPmNvcHlSZWdpc3Rl
cnMoKTsKKyAgICAgICAgaWYgKCFhcmd1bWVudHMtPmlzVG9ybk9mZigpKQorICAgICAgICAgICAg
YXJndW1lbnRzLT5jb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQqIHJldHVy
blBDID0gcltSZWdpc3RlckZpbGU6OlJldHVyblBDXS52KCk7CkBAIC0zMzI1LDYgKzMzMjgsMjgg
QEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICBleGNl
cHRpb25WYWx1ZSA9IGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIHYsIHZQQywgY29kZUJs
b2NrKHIpKTsKICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICB9CisgICAgQkVHSU5fT1BDT0RF
KG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pIHsKKyAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFs
Q2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9j
ayhyKS0+bmVlZHNGdWxsU2NvcGVDaGFpbik7CisgICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5p
c09iamVjdCgmSlNBY3RpdmF0aW9uOjppbmZvKSk7CisKKyAgICAgICAgQXJndW1lbnRzKiBhcmd1
bWVudHMgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxD
YWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUoKSk7CisgICAgICAgIEFTU0VSVCghYXJndW1lbnRz
IHx8IGFyZ3VtZW50cy0+aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworICAgICAgICBhY3Rp
dmF0aW9uLT5jb3B5UmVnaXN0ZXJzKGFyZ3VtZW50cyk7CisKKyAgICAgICAgKyt2UEM7CisgICAg
ICAgIE5FWFRfT1BDT0RFOworICAgIH0KKyAgICBCRUdJTl9PUENPREUob3BfdGVhcl9vZmZfYXJn
dW1lbnRzKSB7CisgICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8QXJn
dW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRKU1Zh
bHVlKCkpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKHIpLT51c2VzQXJndW1lbnRzICYmICFj
b2RlQmxvY2sociktPm5lZWRzRnVsbFNjb3BlQ2hhaW4pOworICAgICAgICBBU1NFUlQoYXJndW1l
bnRzLT5pc09iamVjdCgmQXJndW1lbnRzOjppbmZvKSk7CisKKyAgICAgICAgYXJndW1lbnRzLT5j
b3B5UmVnaXN0ZXJzKCk7CisKKyAgICAgICAgKyt2UEM7CisgICAgICAgIE5FWFRfT1BDT0RFOwor
ICAgIH0KICAgICBCRUdJTl9PUENPREUob3BfcmV0KSB7CiAgICAgICAgIC8qIHJldCByZXN1bHQo
cikKICAgICAgICAgICAgCkBAIC0zMzQxLDcgKzMzNjYsOSBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRp
b24gPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxD
YWxsZWVBY3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWNv
ZGVCbG9jayhyKS0+bmVlZHNGdWxsU2NvcGVDaGFpbiB8fCBzY29wZUNoYWluKHIpLT5vYmplY3Qg
PT0gYWN0aXZhdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNPYmplY3Qo
JkpTQWN0aXZhdGlvbjo6aW5mbykpOwotICAgICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lz
dGVycyhyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUo
KSk7CisgICAgICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PEFyZ3Vt
ZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1
ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghYXJndW1lbnRzIHx8IGFyZ3VtZW50cy0+aXNPYmpl
Y3QoJkFyZ3VtZW50czo6aW5mbykpOworICAgICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lz
dGVycyhhcmd1bWVudHMpOwogICAgICAgICB9IGVsc2UgaWYgKEFyZ3VtZW50cyogYXJndW1lbnRz
ID0gc3RhdGljX2Nhc3Q8QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVl
QXJndW1lbnRzXS5nZXRKU1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRz
LT5pc09iamVjdCgmQXJndW1lbnRzOjppbmZvKSk7CiAgICAgICAgICAgICBhcmd1bWVudHMtPmNv
cHlSZWdpc3RlcnMoKTsKQEAgLTM0MzksMTMgKzM0NjYsNyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgICAgICAgIGJsb2NrLgogICAgICAgICAqLwogCi0g
ICAgICAgIEpTVmFsdWUqIGFjdGl2YXRpb24gPSByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxs
ZWVBY3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCk7Ci0gICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRz
OwotICAgICAgICBpZiAoYWN0aXZhdGlvbikgewotICAgICAgICAgICAgQVNTRVJUKGFjdGl2YXRp
b24tPmlzT2JqZWN0KCZKU0FjdGl2YXRpb246OmluZm8pKTsKLSAgICAgICAgICAgIGFyZ3VtZW50
cyA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRzKGV4ZWMsIHN0YXRpY19jYXN0PEpTQWN0aXZh
dGlvbio+KGFjdGl2YXRpb24pKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcmd1bWVu
dHMgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCByKTsKKyAgICAgICAgQXJndW1l
bnRzKiBhcmd1bWVudHMgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCByKTsKICAg
ICAgICAgcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFyZ3VtZW50
czsKICAgICAgICAgcltSZWdpc3RlckZpbGU6OkFyZ3VtZW50c1JlZ2lzdGVyXSA9IGFyZ3VtZW50
czsKICAgICAgICAgCkBAIC0zODgxLDI2ICszOTAyLDIyIEBAIEpTVmFsdWUqIE1hY2hpbmU6OnJl
dHJpZXZlQXJndW1lbnRzKEV4ZWMKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKIAotICAgIEpTVmFsdWUqIGFyZ3VtZW50czsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IE1hY2hpbmU6OmNvZGVCbG9jayhyKTsKICAgICBpZiAoY29kZUJsb2NrLT51c2VzQXJndW1lbnRz
KSB7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSk7
CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
Qm9keU5vZGUqPihjb2RlQmxvY2stPm93bmVyTm9kZSktPnN5bWJvbFRhYmxlKCk7CiAgICAgICAg
IGludCBhcmd1bWVudHNJbmRleCA9IHN5bWJvbFRhYmxlLmdldChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYXJndW1lbnRzLnVzdHJpbmcoKS5yZXAoKSkuZ2V0SW5kZXgoKTsKLSAgICAgICAgYXJndW1l
bnRzID0gclthcmd1bWVudHNJbmRleF0uanNWYWx1ZShleGVjKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBhcmd1bWVudHMgPSByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNd
LmdldEpTVmFsdWUoKTsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMpIHsKLSAgICAgICAgICAgIEpT
QWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHJbUmVn
aXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKSk7Ci0gICAg
ICAgICAgICBpZiAoYWN0aXZhdGlvbikKLSAgICAgICAgICAgICAgICBhcmd1bWVudHMgPSBuZXcg
KGV4ZWMpIEFyZ3VtZW50cyhleGVjLCBhY3RpdmF0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhcmd1bWVudHMgPSBuZXcgKGV4ZWMpIEFyZ3VtZW50cyhleGVjLCByKTsK
LSAgICAgICAgICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBh
cmd1bWVudHM7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+aXNPYmplY3Qo
JkFyZ3VtZW50czo6aW5mbykpOworICAgICAgICByZXR1cm4gclthcmd1bWVudHNJbmRleF0uanNW
YWx1ZShleGVjKTsKICAgICB9CiAKKyAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19j
YXN0PEFyZ3VtZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10u
Z2V0SlNWYWx1ZSgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMg
PSBuZXcgKGV4ZWMpIEFyZ3VtZW50cyhleGVjLCByKTsKKyAgICAgICAgYXJndW1lbnRzLT5jb3B5
UmVnaXN0ZXJzKCk7CisgICAgICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3Vt
ZW50c10gPSBhcmd1bWVudHM7CisgICAgfQorICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2JqZWN0
KCZBcmd1bWVudHM6OmluZm8pKTsKKwogICAgIHJldHVybiBhcmd1bWVudHM7CiB9CiAKQEAgLTQ2
MzUsMzAgKzQ2NTIsMzMgQEAgdm9pZCBNYWNoaW5lOjpjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cyhD
VAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IEFSR19leGVjOwogICAgIFJlZ2lzdGVyKiByID0gQVJH
X3I7CiAKLSAgICBKU1ZhbHVlKiBhY3RpdmF0aW9uID0gcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFs
Q2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpOwotICAgIEFyZ3VtZW50cyogYXJndW1lbnRz
OwotICAgIGlmIChhY3RpdmF0aW9uKSB7Ci0gICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc09i
amVjdCgmSlNBY3RpdmF0aW9uOjppbmZvKSk7Ci0gICAgICAgIGFyZ3VtZW50cyA9IG5ldyAoQVJH
X2dsb2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihh
Y3RpdmF0aW9uKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFyZ3VtZW50cyA9IG5ldyAoQVJHX2ds
b2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCByKTsKKyAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9
IG5ldyAoQVJHX2dsb2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCByKTsKICAgICByW1JlZ2lzdGVy
RmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdID0gYXJndW1lbnRzOwogICAgIHJbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudHNSZWdpc3Rlcl0gPSBhcmd1bWVudHM7CiB9CiAKLXZvaWQgTWFjaGlu
ZTo6Y3RpX29wX3JldF9hY3RpdmF0aW9uX2FyZ3VtZW50cyhDVElfQVJHUykKK3ZvaWQgTWFjaGlu
ZTo6Y3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oQ1RJX0FSR1MpCiB7CiAgICAgUmVnaXN0ZXIq
IHIgPSBBUkdfcjsKIAotICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVkIGFuIGFjdGl2
YXRpb24gb3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KLSAgICBpZiAoSlNB
Y3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ocltSZWdp
c3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKSkgewotICAg
ICAgICBBU1NFUlQoIWNvZGVCbG9jayhyKS0+bmVlZHNGdWxsU2NvcGVDaGFpbiB8fCBzY29wZUNo
YWluKHIpLT5vYmplY3QgPT0gYWN0aXZhdGlvbik7Ci0gICAgICAgIEFTU0VSVChhY3RpdmF0aW9u
LT5pc09iamVjdCgmSlNBY3RpdmF0aW9uOjppbmZvKSk7Ci0gICAgICAgIGFjdGl2YXRpb24tPmNv
cHlSZWdpc3RlcnMocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRK
U1ZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoQXJndW1lbnRzKiBhcmd1bWVudHMgPSBzdGF0aWNf
Y2FzdDxBcmd1bWVudHMqPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNd
LmdldEpTVmFsdWUoKSkpIHsKLSAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+aXNPYmplY3QoJkFy
Z3VtZW50czo6aW5mbykpOwotICAgICAgICBhcmd1bWVudHMtPmNvcHlSZWdpc3RlcnMoKTsKLSAg
ICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0
aW9uKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1
ZSgpKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKHIpLT5uZWVkc0Z1bGxTY29wZUNoYWluKTsKKyAg
ICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNPYmplY3QoJkpTQWN0aXZhdGlvbjo6aW5mbykpOworCisg
ICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPihyW1JlZ2lz
dGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUoKSk7CisgICAgQVNT
RVJUKCFhcmd1bWVudHMgfHwgYXJndW1lbnRzLT5pc09iamVjdCgmQXJndW1lbnRzOjppbmZvKSk7
CisgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycyhhcmd1bWVudHMpOworfQorCit2b2lkIE1h
Y2hpbmU6OmN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHMoQ1RJX0FSR1MpCit7CisgICAgUmVnaXN0
ZXIqIHIgPSBBUkdfcjsKKworICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8
QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRK
U1ZhbHVlKCkpOworICAgIEFTU0VSVChjb2RlQmxvY2sociktPnVzZXNBcmd1bWVudHMgJiYgIWNv
ZGVCbG9jayhyKS0+bmVlZHNGdWxsU2NvcGVDaGFpbik7CisgICAgQVNTRVJUKGFyZ3VtZW50cy0+
aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworCisgICAgYXJndW1lbnRzLT5jb3B5UmVnaXN0
ZXJzKCk7CiB9CiAKIHZvaWQgTWFjaGluZTo6Y3RpX29wX3JldF9wcm9maWxlcihDVElfQVJHUykK
SW5kZXg6IFZNL01hY2hpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9NYWNoaW5lLmgJKHJldmlzaW9u
IDM3MzE3KQorKysgVk0vTWFjaGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkKiBTRlhfQ0FMTCBjdGlfb3Bf
Y2FsbF9KU0Z1bmN0aW9uKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9D
QUxMIGN0aV9vcF9jYWxsX05vdEpTRnVuY3Rpb24oQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMg
dm9pZCBTRlhfQ0FMTCBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cyhDVElfQVJHUyk7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9yZXRfYWN0aXZhdGlvbl9hcmd1bWVudHMoQ1RJ
X0FSR1MpOworICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF90
ZWFyX29mZl9hcmd1bWVudHMoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FM
TCBjdGlfb3BfcmV0X3Byb2ZpbGVyKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZY
X0NBTEwgY3RpX29wX3JldF9zY29wZUNoYWluKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIEpT
VmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9uZXdfYXJyYXkoQ1RJX0FSR1MpOwpJbmRleDogVk0vT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVk0vT3Bjb2RlLmgJKHJldmlzaW9uIDM3MzE3KQorKysgVk0v
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbWFjcm8ob3BfbmV3X2Z1bmNfZXhwKSBcCiAgICAgICAgIG1hY3JvKG9wX2Nh
bGwpIFwKICAgICAgICAgbWFjcm8ob3BfY2FsbF9ldmFsKSBcCisgICAgICAgIG1hY3JvKG9wX3Rl
YXJfb2ZmX2FjdGl2YXRpb24pIFwKKyAgICAgICAgbWFjcm8ob3BfdGVhcl9vZmZfYXJndW1lbnRz
KSBcCiAgICAgICAgIG1hY3JvKG9wX3JldCkgXAogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9w
X2NvbnN0cnVjdCkgXApJbmRleDoga2pzL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDM3MzE3KQorKysga2pzL0FyZ3VtZW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDkgKzY0LDYgQEAgdm9pZCBBcmd1bWVudHM6Om1hcmsoKQogCiAg
ICAgaWYgKCFkLT5jYWxsZWUtPm1hcmtlZCgpKQogICAgICAgICBkLT5jYWxsZWUtPm1hcmsoKTsK
LQotICAgIGlmIChkLT5hY3RpdmF0aW9uICYmICFkLT5hY3RpdmF0aW9uLT5tYXJrZWQoKSkKLSAg
ICAgICAgZC0+YWN0aXZhdGlvbi0+bWFyaygpOwogfQogCiB2b2lkIEFyZ3VtZW50czo6ZmlsbEFy
Z0xpc3QoRXhlY1N0YXRlKiBleGVjLCBBcmdMaXN0JiBhcmdzKQpJbmRleDoga2pzL0FyZ3VtZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtqcy9Bcmd1bWVudHMuaAkocmV2aXNpb24gMzczMTcpCisrKyBr
anMvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgc3RydWN0IEFyZ3VtZW50c0RhdGEgOiBOb25jb3B5YWJsZSB7Ci0gICAg
ICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbjsKLQogICAgICAgICB1bnNpZ25lZCBudW1QYXJh
bWV0ZXJzOwogICAgICAgICBwdHJkaWZmX3QgZmlyc3RQYXJhbWV0ZXJJbmRleDsKICAgICAgICAg
dW5zaWduZWQgbnVtQXJndW1lbnRzOwpAQCAtNTQsNyArNTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKICAg
ICAgICAgQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFJlZ2lzdGVyKiBjYWxsRnJhbWUpOwotICAgICAg
ICBBcmd1bWVudHMoRXhlY1N0YXRlKiwgSlNBY3RpdmF0aW9uKik7CiAgICAgICAgIHZpcnR1YWwg
fkFyZ3VtZW50cygpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKQEAg
LTY0LDYgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZmlsbEFyZ0xpc3Qo
RXhlY1N0YXRlKiwgQXJnTGlzdCYpOwogCiAgICAgICAgIHZvaWQgY29weVJlZ2lzdGVycygpOwor
ICAgICAgICBib29sIGlzVG9ybk9mZigpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lzdGVyQXJyYXk7
IH0KICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycykgeyBkLT5y
ZWdpc3RlcnMgPSByZWdpc3RlcnM7IH0KIAogICAgIHByaXZhdGU6CkBAIC04MSw3ICs3OSw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8QXJndW1lbnRzRGF0YT4gZDsKICAgICB9
OwogCi0gICAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjppbml0KEV4ZWNTdGF0ZSogZXhlYywgUmVn
aXN0ZXIqIGNhbGxGcmFtZSkKKyAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoRXhlY1N0
YXRlKiBleGVjLCBSZWdpc3RlciogY2FsbEZyYW1lKQorICAgICAgICA6IEpTT2JqZWN0KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCisgICAgICAgICwg
ZChuZXcgQXJndW1lbnRzRGF0YSkKICAgICB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsK
ICAgICAgICAgcHRyZGlmZl90IGZpcnN0UGFyYW1ldGVySW5kZXg7CkBAIC0xMTUsMjcgKzExNSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IGZhbHNlOwog
ICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudHM6OkFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFJlZ2lzdGVyKiBjYWxsRnJhbWUpCi0gICAgICAgIDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKLSAgICAgICAgLCBkKG5ldyBBcmd1
bWVudHNEYXRhKQotICAgIHsKLSAgICAgICAgZC0+YWN0aXZhdGlvbiA9IDA7Ci0gICAgICAgIGlu
aXQoZXhlYywgY2FsbEZyYW1lKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1
bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24pCi0gICAgICAg
IDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1
cmUoKSkKLSAgICAgICAgLCBkKG5ldyBBcmd1bWVudHNEYXRhKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGFjdGl2YXRpb24pOwotICAgICAgICBkLT5hY3RpdmF0aW9uID0gYWN0aXZhdGlvbjsKLSAg
ICAgICAgaW5pdChleGVjLCAmYWN0aXZhdGlvbi0+cmVnaXN0ZXJBdCgwKSk7Ci0gICAgfQotCiAg
ICAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpjb3B5UmVnaXN0ZXJzKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCghZC0+YWN0aXZhdGlvbik7Ci0gICAgICAgIEFTU0VSVCghZC0+cmVnaXN0ZXJBcnJh
eSk7CisgICAgICAgIEFTU0VSVCghaXNUb3JuT2ZmKCkpOwogCiAgICAgICAgIGlmICghZC0+bnVt
UGFyYW1ldGVycykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MCw3ICsxMzIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB9CiAKICAgICAvLyBUaGlzIEpTQWN0aXZhdGlvbiBmdW5jdGlvbiBp
cyBkZWZpbmVkIGhlcmUgc28gaXQgY2FuIGdldCBhdCBBcmd1bWVudHM6OnNldFJlZ2lzdGVycy4K
LSAgICBpbmxpbmUgdm9pZCBKU0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMoSlNWYWx1ZSogYXJn
dW1lbnRzKQorICAgIGlubGluZSB2b2lkIEpTQWN0aXZhdGlvbjo6Y29weVJlZ2lzdGVycyhBcmd1
bWVudHMqIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIEFTU0VSVCghZCgpLT5yZWdpc3RlckFy
cmF5KTsKIApAQCAtMTY2LDEwICsxNDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBS
ZWdpc3RlciogcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KGQoKS0+cmVnaXN0ZXJz
IC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlTaXplKTsKICAgICAgICAgc2V0UmVnaXN0
ZXJzKHJlZ2lzdGVyQXJyYXkgKyByZWdpc3Rlck9mZnNldCwgcmVnaXN0ZXJBcnJheSk7Ci0gICAg
ICAgIGlmIChhcmd1bWVudHMpIHsKLSAgICAgICAgICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2Jq
ZWN0KCZBcmd1bWVudHM6OmluZm8pKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cyAmJiAhYXJndW1l
bnRzLT5pc1Rvcm5PZmYoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFyZ3VtZW50cyo+KGFy
Z3VtZW50cyktPnNldFJlZ2lzdGVycyhyZWdpc3RlckFycmF5ICsgcmVnaXN0ZXJPZmZzZXQpOwot
ICAgICAgICB9CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IGtqcy9KU0FjdGl2
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9KU0FjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAz
NzMxNykKKysrIGtqcy9KU0FjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMjAg
KzE1NSwyMCBAQCBKU1ZhbHVlKiBKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dldHRlcihFCiB7CiAg
ICAgSlNBY3RpdmF0aW9uKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oc2xv
dC5zbG90QmFzZSgpKTsKIAotICAgIEpTVmFsdWUqIGFyZ3VtZW50czsKICAgICBpZiAodGhpc09i
ai0+ZCgpLT5mdW5jdGlvbkJvZHktPnVzZXNBcmd1bWVudHMoKSkgewogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICAgICAgdGhpc09iai0+c3ltYm9sVGFibGVHZXQoZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmFyZ3VtZW50cywgc2xvdCk7Ci0gICAgICAgIGFyZ3VtZW50cyA9IHNsb3QuZ2V0
VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgYXJndW1lbnRzID0gdGhpc09iai0+ZCgpLT5yZWdpc3RlcnNbUmVnaXN0ZXJG
aWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1ZSgpOwotICAgICAgICBpZiAo
IWFyZ3VtZW50cykgewotICAgICAgICAgICAgYXJndW1lbnRzID0gbmV3IChleGVjKSBBcmd1bWVu
dHMoZXhlYywgdGhpc09iaik7Ci0gICAgICAgICAgICB0aGlzT2JqLT5kKCktPnJlZ2lzdGVyc1tS
ZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFyZ3VtZW50czsKLSAgICAg
ICAgfQotICAgICAgICBBU1NFUlQoYXJndW1lbnRzLT5pc09iamVjdCgmQXJndW1lbnRzOjppbmZv
KSk7CisgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMpOwogICAgIH0KIAorICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3Rh
dGljX2Nhc3Q8QXJndW1lbnRzKj4odGhpc09iai0+ZCgpLT5yZWdpc3RlcnNbUmVnaXN0ZXJGaWxl
OjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1ZSgpKTsKKyAgICBpZiAoIWFyZ3Vt
ZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBuZXcgKGV4ZWMpIEFyZ3VtZW50cyhleGVjLCAm
dGhpc09iai0+cmVnaXN0ZXJBdCgwKSk7CisgICAgICAgIGFyZ3VtZW50cy0+Y29weVJlZ2lzdGVy
cygpOworICAgICAgICB0aGlzT2JqLT5kKCktPnJlZ2lzdGVyc1tSZWdpc3RlckZpbGU6Ok9wdGlv
bmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgQVNTRVJUKGFyZ3Vt
ZW50cy0+aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworCiAgICAgcmV0dXJuIGFyZ3VtZW50
czsKIH0KIApJbmRleDoga2pzL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9KU0Fj
dGl2YXRpb24uaAkocmV2aXNpb24gMzczMTcpCisrKyBranMvSlNBY3RpdmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmly
dHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAg
IHZvaWQgY29weVJlZ2lzdGVycyhKU1ZhbHVlKiBhcmd1bWVudHMpOworICAgICAgICB2b2lkIGNv
cHlSZWdpc3RlcnMoQXJndW1lbnRzKiBhcmd1bWVudHMpOwogICAgICAgICAKICAgICAgICAgdmly
dHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24110</attachid>
            <date>2008-10-05 22:31:23 -0700</date>
            <delta_ts>2008-10-05 22:49:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>branch.diff</filename>
            <type>text/plain</type>
            <size>25862</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MzIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDgtMTAtMDUgIENhbWVyb24g
WndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMTM2NDogUmVtb3ZlIHRoZSBicmFuY2ggaW4gb3Bf
cmV0IGZvciBPcHRpb25hbENhbGxlZUFjdGl2YXRpb24gYW5kIE9wdGlvbmFsQ2FsbGVlQXJndW1l
bnRzCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
NjQ+CisKKyAgICAgICAgVXNlIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhcnNlciB0byBkZXRlY3Qg
d2hldGhlciBhbiBhY3RpdmF0aW9uIGlzCisgICAgICAgIG5lZWRlZCBvciAnYXJndW1lbnRzJyBp
cyB1c2VkLCBhbmQgZW1pdCBleHBsaWNpdCBpbnN0cnVjdGlvbnMgdG8gdGVhcgorICAgICAgICB0
aGVtIG9mZiBiZWZvcmUgb3BfcmV0LiBUaGlzIGFsbG93cyBhIGJyYW5jaCB0byBiZSByZW1vdmVk
IGZyb20gb3BfcmV0CisgICAgICAgIGFuZCBzaW1wbGlmaWVzIHNvbWUgb3RoZXIgY29kZS4gVGhp
cyBkb2VzIGNhdXNlIGEgc21hbGwgY2hhbmdlIGluIHRoZQorICAgICAgICBiZWhhdmlvdXIgb2Yg
J2YuYXJndW1lbnRzJzsgaXQgaXMgbm8gbG9uZ2VyIGxpdmUgd2hlbiAnYXJndW1lbnRzJyBpcyBu
b3QKKyAgICAgICAgbWVudGlvbmVkIGluIHRoZSBsZXhpY2FsIHNjb3BlIG9mIHRoZSBmdW5jdGlv
bi4KKworICAgICAgICBJdCBzaG91bGQgbm93IGJlIGVhc3kgdG8gcmVtb3ZlIHRoZSBPcHRpb25h
Q2FsbGVlQWN0aXZhdGlvbiBzbG90IGluIHRoZQorICAgICAgICBjYWxsIGZyYW1lLCBidXQgdGhp
cyB3aWxsIGJlIGRvbmUgaW4gYSBsYXRlciBwYXRjaC4KKworICAgICAgICAqIFZNL0NUSS5jcHA6
CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICog
Vk0vQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAg
ICAgKiBWTS9Db2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUdlbmVyYXRvcjo6
ZW1pdFJldHVybik6CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIFZN
L01hY2hpbmUuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjp1bndpbmRDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgIChKU0M6Ok1h
Y2hpbmU6OnJldHJpZXZlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29w
X2NyZWF0ZV9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF90ZWFyX29mZl9h
cmd1bWVudHMpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAgICAgICAgKiBWTS9PcGNvZGUu
aDoKKyAgICAgICAgKiBranMvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRz
OjptYXJrKToKKyAgICAgICAgKiBranMvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6aXNUb3JuT2ZmKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpK
U0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMpOgorICAgICAgICAqIGtqcy9KU0FjdGl2YXRpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dldHRlcik6CisgICAg
ICAgICoga2pzL0pTQWN0aXZhdGlvbi5oOgorCiAyMDA4LTEwLTA1ICBNYWNpZWogU3RhY2hvd2lh
ayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9DVEkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL1ZNL0NUSS5jcHAJKHJldmlzaW9uIDM3MzIzKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ1RJ
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3MCwxNSArMTE3MCwxNyBAQCB2b2lkIENUSTo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246IHsK
KyAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF90ZWFyX29mZl9hY3RpdmF0
aW9uKTsKKyAgICAgICAgICAgIGkgKz0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CisgICAgICAgICAgICBlbWl0
Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKKyAgICAgICAgICAg
IGkgKz0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cmV0OiB7Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBhY3RpdmF0aW9uIG9yIGFuICdh
cmd1bWVudHMnIG9iamVjdCwgd2UgdGVhciBpdAotICAgICAgICAgICAgLy8gb2ZmIGJ5IGp1bXBp
bmcgdG8gdGhlIGhvb2sgYmVsb3cuCi0gICAgICAgICAgICBtX2ppdC5tb3ZsX21yKFJlZ2lzdGVy
RmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSwgWDg2OjplZGksIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0Lm9ybF9t
cihSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGksIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIG1f
aml0LmNtcGxfaTMycigwLCBYODY6OmVheCk7Ci0gICAgICAgICAgICBYODZBc3NlbWJsZXI6Okpt
cFNyYyBhY3RpdmF0aW9uID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgICAgICAgICBY
ODZBc3NlbWJsZXI6OkptcERzdCBhY3RpdmF0ZWQgPSBtX2ppdC5sYWJlbCgpOwotCiAgICAgICAg
ICAgICAvLyBDaGVjayBmb3IgYSBwcm9maWxlciAtIGlmIHRoZXJlIGlzIG9uZSwganVtcCB0byB0
aGUgaG9vayBiZWxvdy4KICAgICAgICAgICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19wcm9m
aWxlclJlZmVyZW5jZSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJtKDAs
IFg4Njo6ZWF4KTsKQEAgLTEyMDMsMTEgKzEyMDUsNiBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgICAgICBtX2ppdC5wdXNobF9yKFg4Njo6ZWR4KTsKICAgICAg
ICAgICAgIG1faml0LnJldCgpOwogCi0gICAgICAgICAgICAvLyBBY3RpdmF0aW9uIGFuZCAnYXJn
dW1lbnRzJyBob29rCi0gICAgICAgICAgICBtX2ppdC5saW5rKGFjdGl2YXRpb24sIG1faml0Lmxh
YmVsKCkpOwotICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3JldF9hY3Rp
dmF0aW9uX2FyZ3VtZW50cyk7Ci0gICAgICAgICAgICBtX2ppdC5saW5rKG1faml0LmVtaXRVbmxp
bmtlZEptcCgpLCBhY3RpdmF0ZWQpOwotCiAgICAgICAgICAgICAvLyBQcm9maWxpbmcgaG9vawog
ICAgICAgICAgICAgbV9qaXQubGluayhwcm9maWxlLCBtX2ppdC5sYWJlbCgpKTsKICAgICAgICAg
ICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9yZXRfcHJvZmlsZXIpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9WTS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAzNzMyMykKKysrIEphdmFTY3JpcHRDb3JlL1ZN
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwOSw2ICs4MDksMTYgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBjYWxsX2V2YWxcdFx0ICVzLCAlcywgJXMsICVkLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUocjApLmNfc3RyKCksIHJlZ2lzdGVyTmFtZShyMSkuY19zdHIoKSwgcmVnaXN0
ZXJOYW1lKHIyKS5jX3N0cigpLCB0ZW1wQ291bnQsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3RlYXJfb2Zm
X2FjdGl2YXRpb246IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hY3RpdmF0aW9uXHQgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUocjApLmNfc3RyKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6IHsKKyAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSB0ZWFyX29mZl9hcmd1bWVudHNcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCku
Y19zdHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3JldDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBwcmludGYoIlslNGRdIHJldFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
cjApLmNfc3RyKCkpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDM3MzIzKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNTgsNiArMTE1OCwxNiBAQCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbChPcGNvCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQ29kZUdl
bmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCit7CisgICAgaWYgKG1fY29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3RlYXJfb2Zm
X2FjdGl2YXRpb24pOworICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKQor
ICAgICAgICBlbWl0T3Bjb2RlKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CisKKyAgICByZXR1cm4g
ZW1pdFVuYXJ5Tm9Ec3RPcChvcF9yZXQsIHNyYyk7Cit9CisKIFJlZ2lzdGVySUQqIENvZGVHZW5l
cmF0b3I6OmVtaXRVbmFyeU5vRHN0T3AoT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEKiBzcmMp
CiB7CiAgICAgZW1pdE9wY29kZShvcGNvZGUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ29k
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0
b3IuaAkocmV2aXNpb24gMzczMjMpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlOb0RzdE9wKG9wX3Jl
dCwgc3JjKTsgfSAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJldHVybihSZWdpc3RlcklEKiBz
cmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RW5kKFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdFVuYXJ5Tm9Ec3RPcChvcF9lbmQsIHNyYyk7IH0KIAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNzMyMykKKysr
IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODEsMTAg
Kzc4MSwxMyBAQCBORVZFUl9JTkxJTkUgYm9vbCBNYWNoaW5lOjp1bndpbmRDYWxsRnJhCiAgICAg
Ly8gSWYgdGhpcyBjYWxsIGZyYW1lIGNyZWF0ZWQgYW4gYWN0aXZhdGlvbiBvciBhbiAnYXJndW1l
bnRzJyBvYmplY3QsIHRlYXIgaXQgb2ZmLgogICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRp
b24gPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxD
YWxsZWVBY3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCkpKSB7CiAgICAgICAgIEFTU0VSVChhY3RpdmF0
aW9uLT5pc09iamVjdCgmSlNBY3RpdmF0aW9uOjppbmZvKSk7Ci0gICAgICAgIGFjdGl2YXRpb24t
PmNvcHlSZWdpc3RlcnMocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5n
ZXRKU1ZhbHVlKCkpOworICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0
PEFyZ3VtZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0
SlNWYWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMgfHwgYXJndW1lbnRzLT5pc09i
amVjdCgmQXJndW1lbnRzOjppbmZvKSk7CisgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3Rl
cnMoYXJndW1lbnRzKTsKICAgICB9IGVsc2UgaWYgKEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3Rh
dGljX2Nhc3Q8QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1l
bnRzXS5nZXRKU1ZhbHVlKCkpKSB7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2JqZWN0
KCZBcmd1bWVudHM6OmluZm8pKTsKLSAgICAgICAgYXJndW1lbnRzLT5jb3B5UmVnaXN0ZXJzKCk7
CisgICAgICAgIGlmICghYXJndW1lbnRzLT5pc1Rvcm5PZmYoKSkKKyAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+Y29weVJlZ2lzdGVycygpOwogICAgIH0KICAgICAKICAgICB2b2lkKiByZXR1cm5QQyA9
IHJbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udigpOwpAQCAtMzM1MSw2ICszMzU0LDI4IEBAIEpT
VmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGkKICAgICAgICAgZXhjZXB0aW9u
VmFsdWUgPSBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCB2LCB2UEMsIGNvZGVCbG9jayhy
KSk7CiAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgfQorICAgIEJFR0lOX09QQ09ERShvcF90
ZWFyX29mZl9hY3RpdmF0aW9uKSB7CisgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxl
ZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKSk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2socikt
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4pOworICAgICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNPYmpl
Y3QoJkpTQWN0aXZhdGlvbjo6aW5mbykpOworCisgICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRz
ID0gc3RhdGljX2Nhc3Q8QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVl
QXJndW1lbnRzXS5nZXRKU1ZhbHVlKCkpOworICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cyB8fCBh
cmd1bWVudHMtPmlzT2JqZWN0KCZBcmd1bWVudHM6OmluZm8pKTsKKyAgICAgICAgYWN0aXZhdGlv
bi0+Y29weVJlZ2lzdGVycyhhcmd1bWVudHMpOworCisgICAgICAgICsrdlBDOworICAgICAgICBO
RVhUX09QQ09ERTsKKyAgICB9CisgICAgQkVHSU5fT1BDT0RFKG9wX3RlYXJfb2ZmX2FyZ3VtZW50
cykgeworICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PEFyZ3VtZW50
cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1ZSgp
KTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayhyKS0+dXNlc0FyZ3VtZW50cyAmJiAhY29kZUJs
b2NrKHIpLT5uZWVkc0Z1bGxTY29wZUNoYWluKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+
aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworCisgICAgICAgIGFyZ3VtZW50cy0+Y29weVJl
Z2lzdGVycygpOworCisgICAgICAgICsrdlBDOworICAgICAgICBORVhUX09QQ09ERTsKKyAgICB9
CiAgICAgQkVHSU5fT1BDT0RFKG9wX3JldCkgewogICAgICAgICAvKiByZXQgcmVzdWx0KHIpCiAg
ICAgICAgICAgIApAQCAtMzM2Nyw3ICszMzkyLDkgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICBpZiAoSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
c3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVl
QWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKCFjb2RlQmxv
Y2sociktPm5lZWRzRnVsbFNjb3BlQ2hhaW4gfHwgc2NvcGVDaGFpbihyKS0+b2JqZWN0ID09IGFj
dGl2YXRpb24pOwogICAgICAgICAgICAgQVNTRVJUKGFjdGl2YXRpb24tPmlzT2JqZWN0KCZKU0Fj
dGl2YXRpb246OmluZm8pKTsKLSAgICAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMo
cltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRKU1ZhbHVlKCkpOwor
ICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMq
PihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUoKSk7
CisgICAgICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cyB8fCBhcmd1bWVudHMtPmlzT2JqZWN0KCZB
cmd1bWVudHM6OmluZm8pKTsKKyAgICAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMo
YXJndW1lbnRzKTsKICAgICAgICAgfSBlbHNlIGlmIChBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0
YXRpY19jYXN0PEFyZ3VtZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3Vt
ZW50c10uZ2V0SlNWYWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+aXNP
YmplY3QoJkFyZ3VtZW50czo6aW5mbykpOwogICAgICAgICAgICAgYXJndW1lbnRzLT5jb3B5UmVn
aXN0ZXJzKCk7CkBAIC0zNDY1LDEzICszNDkyLDcgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICAgICBibG9jay4KICAgICAgICAgKi8KIAotICAgICAg
ICBKU1ZhbHVlKiBhY3RpdmF0aW9uID0gcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0
aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpOwotICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50czsKLSAg
ICAgICAgaWYgKGFjdGl2YXRpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5p
c09iamVjdCgmSlNBY3RpdmF0aW9uOjppbmZvKSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMgPSBu
ZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50cyhleGVjLCBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24q
PihhY3RpdmF0aW9uKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXJndW1lbnRzID0g
bmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudHMoZXhlYywgcik7CisgICAgICAgIEFyZ3VtZW50cyog
YXJndW1lbnRzID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudHMoZXhlYywgcik7CiAgICAgICAg
IHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBhcmd1bWVudHM7CiAg
ICAgICAgIHJbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudHNSZWdpc3Rlcl0gPSBhcmd1bWVudHM7CiAg
ICAgICAgIApAQCAtMzkwNywyNiArMzkyOCwyMiBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpyZXRyaWV2
ZUFyZ3VtZW50cyhFeGVjCiAgICAgaWYgKCFyKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAK
LSAgICBKU1ZhbHVlKiBhcmd1bWVudHM7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBNYWNo
aW5lOjpjb2RlQmxvY2socik7CiAgICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50cykgewog
ICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUpOwogICAg
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkJvZHlO
b2RlKj4oY29kZUJsb2NrLT5vd25lck5vZGUpLT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBpbnQg
YXJndW1lbnRzSW5kZXggPSBzeW1ib2xUYWJsZS5nZXQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmFy
Z3VtZW50cy51c3RyaW5nKCkucmVwKCkpLmdldEluZGV4KCk7Ci0gICAgICAgIGFyZ3VtZW50cyA9
IHJbYXJndW1lbnRzSW5kZXhdLmpzVmFsdWUoZXhlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
YXJndW1lbnRzID0gcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRK
U1ZhbHVlKCk7Ci0gICAgICAgIGlmICghYXJndW1lbnRzKSB7Ci0gICAgICAgICAgICBKU0FjdGl2
YXRpb24qIGFjdGl2YXRpb24gPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihyW1JlZ2lzdGVy
RmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCkpOwotICAgICAgICAg
ICAgaWYgKGFjdGl2YXRpb24pCi0gICAgICAgICAgICAgICAgYXJndW1lbnRzID0gbmV3IChleGVj
KSBBcmd1bWVudHMoZXhlYywgYWN0aXZhdGlvbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYXJndW1lbnRzID0gbmV3IChleGVjKSBBcmd1bWVudHMoZXhlYywgcik7Ci0gICAg
ICAgICAgICByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdID0gYXJndW1l
bnRzOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2JqZWN0KCZBcmd1
bWVudHM6OmluZm8pKTsKKyAgICAgICAgcmV0dXJuIHJbYXJndW1lbnRzSW5kZXhdLmpzVmFsdWUo
ZXhlYyk7CiAgICAgfQogCisgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBzdGF0aWNfY2FzdDxB
cmd1bWVudHMqPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdLmdldEpT
VmFsdWUoKSk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gbmV3
IChleGVjKSBBcmd1bWVudHMoZXhlYywgcik7CisgICAgICAgIGFyZ3VtZW50cy0+Y29weVJlZ2lz
dGVycygpOworICAgICAgICByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNd
ID0gYXJndW1lbnRzOworICAgIH0KKyAgICBBU1NFUlQoYXJndW1lbnRzLT5pc09iamVjdCgmQXJn
dW1lbnRzOjppbmZvKSk7CisKICAgICByZXR1cm4gYXJndW1lbnRzOwogfQogCkBAIC00NjUzLDMw
ICs0NjcwLDMzIEBAIHZvaWQgTWFjaGluZTo6Y3RpX29wX2NyZWF0ZV9hcmd1bWVudHMoQ1QKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBBUkdfZXhlYzsKICAgICBSZWdpc3RlciogciA9IEFSR19yOwog
Ci0gICAgSlNWYWx1ZSogYWN0aXZhdGlvbiA9IHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxl
ZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKTsKLSAgICBBcmd1bWVudHMqIGFyZ3VtZW50czsKLSAg
ICBpZiAoYWN0aXZhdGlvbikgewotICAgICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNPYmplY3Qo
JkpTQWN0aXZhdGlvbjo6aW5mbykpOwotICAgICAgICBhcmd1bWVudHMgPSBuZXcgKEFSR19nbG9i
YWxEYXRhKSBBcmd1bWVudHMoZXhlYywgc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZh
dGlvbikpOwotICAgIH0gZWxzZQotICAgICAgICBhcmd1bWVudHMgPSBuZXcgKEFSR19nbG9iYWxE
YXRhKSBBcmd1bWVudHMoZXhlYywgcik7CisgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcg
KEFSR19nbG9iYWxEYXRhKSBBcmd1bWVudHMoZXhlYywgcik7CiAgICAgcltSZWdpc3RlckZpbGU6
Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFyZ3VtZW50czsKICAgICByW1JlZ2lzdGVyRmls
ZTo6QXJndW1lbnRzUmVnaXN0ZXJdID0gYXJndW1lbnRzOwogfQogCi12b2lkIE1hY2hpbmU6OmN0
aV9vcF9yZXRfYWN0aXZhdGlvbl9hcmd1bWVudHMoQ1RJX0FSR1MpCit2b2lkIE1hY2hpbmU6OmN0
aV9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKENUSV9BUkdTKQogewogICAgIFJlZ2lzdGVyKiByID0g
QVJHX3I7CiAKLSAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9u
IG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCi0gICAgaWYgKEpTQWN0aXZh
dGlvbiogYWN0aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHJbUmVnaXN0ZXJG
aWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKSkpIHsKLSAgICAgICAg
QVNTRVJUKCFjb2RlQmxvY2sociktPm5lZWRzRnVsbFNjb3BlQ2hhaW4gfHwgc2NvcGVDaGFpbihy
KS0+b2JqZWN0ID09IGFjdGl2YXRpb24pOwotICAgICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNP
YmplY3QoJkpTQWN0aXZhdGlvbjo6aW5mbykpOwotICAgICAgICBhY3RpdmF0aW9uLT5jb3B5UmVn
aXN0ZXJzKHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1
ZSgpKTsKLSAgICB9IGVsc2UgaWYgKEFyZ3VtZW50cyogYXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8
QXJndW1lbnRzKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRK
U1ZhbHVlKCkpKSB7Ci0gICAgICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2JqZWN0KCZBcmd1bWVu
dHM6OmluZm8pKTsKLSAgICAgICAgYXJndW1lbnRzLT5jb3B5UmVnaXN0ZXJzKCk7Ci0gICAgfQor
ICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+
KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb25dLmdldEpTVmFsdWUoKSk7
CisgICAgQVNTRVJUKGNvZGVCbG9jayhyKS0+bmVlZHNGdWxsU2NvcGVDaGFpbik7CisgICAgQVNT
RVJUKGFjdGl2YXRpb24tPmlzT2JqZWN0KCZKU0FjdGl2YXRpb246OmluZm8pKTsKKworICAgIEFy
Z3VtZW50cyogYXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8QXJndW1lbnRzKj4ocltSZWdpc3RlckZp
bGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5nZXRKU1ZhbHVlKCkpOworICAgIEFTU0VSVCgh
YXJndW1lbnRzIHx8IGFyZ3VtZW50cy0+aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworICAg
IGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoYXJndW1lbnRzKTsKK30KKwordm9pZCBNYWNoaW5l
OjpjdGlfb3BfdGVhcl9vZmZfYXJndW1lbnRzKENUSV9BUkdTKQoreworICAgIFJlZ2lzdGVyKiBy
ID0gQVJHX3I7CisKKyAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PEFyZ3Vt
ZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10uZ2V0SlNWYWx1
ZSgpKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKHIpLT51c2VzQXJndW1lbnRzICYmICFjb2RlQmxv
Y2sociktPm5lZWRzRnVsbFNjb3BlQ2hhaW4pOworICAgIEFTU0VSVChhcmd1bWVudHMtPmlzT2Jq
ZWN0KCZBcmd1bWVudHM6OmluZm8pKTsKKworICAgIGFyZ3VtZW50cy0+Y29weVJlZ2lzdGVycygp
OwogfQogCiB2b2lkIE1hY2hpbmU6OmN0aV9vcF9yZXRfcHJvZmlsZXIoQ1RJX0FSR1MpCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvVk0vTWFjaGluZS5oCShyZXZpc2lvbiAzNzMyMykKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01h
Y2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgdm9pZCogU0ZYX0NBTEwgY3RpX29wX2NhbGxfSlNGdW5jdGlvbihD
VElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfY2FsbF9O
b3RKU0Z1bmN0aW9uKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3Rp
X29wX2NyZWF0ZV9hcmd1bWVudHMoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgdm9pZCBTRlhf
Q0FMTCBjdGlfb3BfcmV0X2FjdGl2YXRpb25fYXJndW1lbnRzKENUSV9BUkdTKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oQ1RJX0FSR1Mp
OworICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3BfdGVhcl9vZmZfYXJndW1lbnRz
KENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3JldF9wcm9m
aWxlcihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9yZXRf
c2NvcGVDaGFpbihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBj
dGlfb3BfbmV3X2FycmF5KENUSV9BUkdTKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL09wY29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCShyZXZpc2lvbiAz
NzMyMykKKysrIEphdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsNiArMTM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX25ld19mdW5j
X2V4cCkgXAogICAgICAgICBtYWNybyhvcF9jYWxsKSBcCiAgICAgICAgIG1hY3JvKG9wX2NhbGxf
ZXZhbCkgXAorICAgICAgICBtYWNybyhvcF90ZWFyX29mZl9hY3RpdmF0aW9uKSBcCisgICAgICAg
IG1hY3JvKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cykgXAogICAgICAgICBtYWNybyhvcF9yZXQpIFwK
ICAgICAgICAgXAogICAgICAgICBtYWNybyhvcF9jb25zdHJ1Y3QpIFwKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAzNzMyMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9B
cmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw5ICs2NCw2IEBAIHZvaWQgQXJndW1l
bnRzOjptYXJrKCkKIAogICAgIGlmICghZC0+Y2FsbGVlLT5tYXJrZWQoKSkKICAgICAgICAgZC0+
Y2FsbGVlLT5tYXJrKCk7Ci0KLSAgICBpZiAoZC0+YWN0aXZhdGlvbiAmJiAhZC0+YWN0aXZhdGlv
bi0+bWFya2VkKCkpCi0gICAgICAgIGQtPmFjdGl2YXRpb24tPm1hcmsoKTsKIH0KIAogdm9pZCBB
cmd1bWVudHM6OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgQXJnTGlzdCYgYXJncykKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvQXJndW1lbnRzLmgJKHJldmlzaW9uIDM3MzIzKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBBcmd1bWVudHNEYXRhIDogTm9uY29weWFibGUgewot
ICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb247Ci0KICAgICAgICAgdW5zaWduZWQgbnVt
UGFyYW1ldGVyczsKICAgICAgICAgcHRyZGlmZl90IGZpcnN0UGFyYW1ldGVySW5kZXg7CiAgICAg
ICAgIHVuc2lnbmVkIG51bUFyZ3VtZW50czsKQEAgLTU0LDcgKzUyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQXJndW1lbnRzIDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBSZWdpc3RlciogY2FsbEZyYW1lKTsKLSAg
ICAgICAgQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEpTQWN0aXZhdGlvbiopOwogICAgICAgICB2aXJ0
dWFsIH5Bcmd1bWVudHMoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87
CkBAIC02NCw2ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZpbGxBcmdM
aXN0KEV4ZWNTdGF0ZSosIEFyZ0xpc3QmKTsKIAogICAgICAgICB2b2lkIGNvcHlSZWdpc3RlcnMo
KTsKKyAgICAgICAgYm9vbCBpc1Rvcm5PZmYoKSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3RlckFy
cmF5OyB9CiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMpIHsg
ZC0+cmVnaXN0ZXJzID0gcmVnaXN0ZXJzOyB9CiAKICAgICBwcml2YXRlOgpAQCAtODEsNyArNzks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEFyZ3VtZW50c0RhdGE+IGQ7CiAg
ICAgfTsKIAotICAgIGlubGluZSB2b2lkIEFyZ3VtZW50czo6aW5pdChFeGVjU3RhdGUqIGV4ZWMs
IFJlZ2lzdGVyKiBjYWxsRnJhbWUpCisgICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKEV4
ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIGNhbGxGcmFtZSkKKyAgICAgICAgOiBKU09iamVjdChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAg
ICAsIGQobmV3IEFyZ3VtZW50c0RhdGEpCiAgICAgewogICAgICAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWU7CiAgICAgICAgIHB0cmRpZmZfdCBmaXJzdFBhcmFtZXRlckluZGV4OwpAQCAtMTE1LDI3ICsx
MTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxz
ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoRXhlY1N0YXRlKiBl
eGVjLCBSZWdpc3RlciogY2FsbEZyYW1lKQotICAgICAgICA6IEpTT2JqZWN0KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCi0gICAgICAgICwgZChuZXcg
QXJndW1lbnRzRGF0YSkKLSAgICB7Ci0gICAgICAgIGQtPmFjdGl2YXRpb24gPSAwOwotICAgICAg
ICBpbml0KGV4ZWMsIGNhbGxGcmFtZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEFyZ3VtZW50czo6
QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uKQotICAg
ICAgICA6IEpTT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3Ry
dWN0dXJlKCkpCi0gICAgICAgICwgZChuZXcgQXJndW1lbnRzRGF0YSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChhY3RpdmF0aW9uKTsKLSAgICAgICAgZC0+YWN0aXZhdGlvbiA9IGFjdGl2YXRpb247
Ci0gICAgICAgIGluaXQoZXhlYywgJmFjdGl2YXRpb24tPnJlZ2lzdGVyQXQoMCkpOwotICAgIH0K
LQogICAgIGlubGluZSB2b2lkIEFyZ3VtZW50czo6Y29weVJlZ2lzdGVycygpCiAgICAgewotICAg
ICAgICBBU1NFUlQoIWQtPmFjdGl2YXRpb24pOwotICAgICAgICBBU1NFUlQoIWQtPnJlZ2lzdGVy
QXJyYXkpOworICAgICAgICBBU1NFUlQoIWlzVG9ybk9mZigpKTsKIAogICAgICAgICBpZiAoIWQt
Pm51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTAsNyArMTMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgLy8gVGhpcyBKU0FjdGl2YXRpb24gZnVuY3Rp
b24gaXMgZGVmaW5lZCBoZXJlIHNvIGl0IGNhbiBnZXQgYXQgQXJndW1lbnRzOjpzZXRSZWdpc3Rl
cnMuCi0gICAgaW5saW5lIHZvaWQgSlNBY3RpdmF0aW9uOjpjb3B5UmVnaXN0ZXJzKEpTVmFsdWUq
IGFyZ3VtZW50cykKKyAgICBpbmxpbmUgdm9pZCBKU0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMo
QXJndW1lbnRzKiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBBU1NFUlQoIWQoKS0+cmVnaXN0
ZXJBcnJheSk7CiAKQEAgLTE2NiwxMCArMTQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShkKCktPnJlZ2lz
dGVycyAtIHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSk7CiAgICAgICAgIHNldFJl
Z2lzdGVycyhyZWdpc3RlckFycmF5ICsgcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXkpOwot
ICAgICAgICBpZiAoYXJndW1lbnRzKSB7Ci0gICAgICAgICAgICBBU1NFUlQoYXJndW1lbnRzLT5p
c09iamVjdCgmQXJndW1lbnRzOjppbmZvKSk7CisgICAgICAgIGlmIChhcmd1bWVudHMgJiYgIWFy
Z3VtZW50cy0+aXNUb3JuT2ZmKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBcmd1bWVudHMq
Pihhcmd1bWVudHMpLT5zZXRSZWdpc3RlcnMocmVnaXN0ZXJBcnJheSArIHJlZ2lzdGVyT2Zmc2V0
KTsKLSAgICAgICAgfQogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMzczMjMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDIwICsxNTUsMjAg
QEAgSlNWYWx1ZSogSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIoRQogewogICAgIEpTQWN0
aXZhdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHNsb3Quc2xvdEJh
c2UoKSk7CiAKLSAgICBKU1ZhbHVlKiBhcmd1bWVudHM7CiAgICAgaWYgKHRoaXNPYmotPmQoKS0+
ZnVuY3Rpb25Cb2R5LT51c2VzQXJndW1lbnRzKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgIHRoaXNPYmotPnN5bWJvbFRhYmxlR2V0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5hcmd1bWVudHMsIHNsb3QpOwotICAgICAgICBhcmd1bWVudHMgPSBzbG90LmdldFZhbHVlKGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGFyZ3VtZW50cyA9IHRoaXNPYmotPmQoKS0+cmVnaXN0ZXJzW1JlZ2lzdGVyRmlsZTo6T3B0
aW9uYWxDYWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUoKTsKLSAgICAgICAgaWYgKCFhcmd1bWVu
dHMpIHsKLSAgICAgICAgICAgIGFyZ3VtZW50cyA9IG5ldyAoZXhlYykgQXJndW1lbnRzKGV4ZWMs
IHRoaXNPYmopOwotICAgICAgICAgICAgdGhpc09iai0+ZCgpLT5yZWdpc3RlcnNbUmVnaXN0ZXJG
aWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBhcmd1bWVudHM7Ci0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+aXNPYmplY3QoJkFyZ3VtZW50czo6aW5mbykpOworICAg
ICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJn
dW1lbnRzKTsKICAgICB9CiAKKyAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0
PEFyZ3VtZW50cyo+KHRoaXNPYmotPmQoKS0+cmVnaXN0ZXJzW1JlZ2lzdGVyRmlsZTo6T3B0aW9u
YWxDYWxsZWVBcmd1bWVudHNdLmdldEpTVmFsdWUoKSk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsK
KyAgICAgICAgYXJndW1lbnRzID0gbmV3IChleGVjKSBBcmd1bWVudHMoZXhlYywgJnRoaXNPYmot
PnJlZ2lzdGVyQXQoMCkpOworICAgICAgICBhcmd1bWVudHMtPmNvcHlSZWdpc3RlcnMoKTsKKyAg
ICAgICAgdGhpc09iai0+ZCgpLT5yZWdpc3RlcnNbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxl
ZUFyZ3VtZW50c10gPSBhcmd1bWVudHM7CisgICAgfQorICAgIEFTU0VSVChhcmd1bWVudHMtPmlz
T2JqZWN0KCZBcmd1bWVudHM6OmluZm8pKTsKKwogICAgIHJldHVybiBhcmd1bWVudHM7CiB9CiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDM3MzIzKQorKysgSmF2
YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2b2lkIGNvcHlSZWdpc3RlcnMo
SlNWYWx1ZSogYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCBjb3B5UmVnaXN0ZXJzKEFyZ3VtZW50
cyogYXJndW1lbnRzKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIGluZm87CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzMyMykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTEwLTA1
ICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgYnVnIDIxMzY0OiBSZW1v
dmUgdGhlIGJyYW5jaCBpbiBvcF9yZXQgZm9yIE9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbiBhbmQg
T3B0aW9uYWxDYWxsZWVBcmd1bWVudHMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM2ND4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGNoYW5nZXMg
dG8gdGhlIGxpdmVuZXNzIG9mICdmLmFyZ3VtZW50cycuCisKKyAgICAgICAgKiBmYXN0L2pzL2Z1
bmN0aW9uLWRvdC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvcmVz
b3VyY2VzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMuanM6CisKIDIwMDgtMTAtMDUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1kb3Qt
YXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzczMjMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xOCw2ICsxOCwxOSBAQCBQQVNTIGFzc2lnbkZvckluSW5pdFRlc3QoKSBpcyB0cnVlCiBQ
QVNTIHBhcmFtSW5pdFRlc3QodHJ1ZSkgaXMgdHJ1ZQogUEFTUyB0ZWFyT2ZmVGVzdCgpWzBdIGlz
IHRydWUKIFBBU1MgdGVhck9mZlRlc3QyKHRydWUpWzBdIGlzIHRydWUKK1BBU1MgbGV4aWNhbEFy
Z3VtZW50c0xpdmVSZWFkMSgwLCAyLCAzKSBpcyAxCitQQVNTIGxleGljYWxBcmd1bWVudHNMaXZl
UmVhZDIoMSwgMCwgMykgaXMgMgorUEFTUyBsZXhpY2FsQXJndW1lbnRzTGl2ZVJlYWQzKDEsIDIs
IDApIGlzIDMKK1BBU1MgbGV4aWNhbEFyZ3VtZW50c0xpdmVXcml0ZTEoMCwgMiwgMykgaXMgMQor
UEFTUyBsZXhpY2FsQXJndW1lbnRzTGl2ZVdyaXRlMigxLCAwLCAzKSBpcyAyCitQQVNTIGxleGlj
YWxBcmd1bWVudHNMaXZlV3JpdGUzKDEsIDIsIDApIGlzIDMKK1BBU1MgYXJndW1lbnRzTm90TGl2
ZVJlYWQxKDAsIDIsIDMpIGlzIDAKK1BBU1MgYXJndW1lbnRzTm90TGl2ZVJlYWQyKDEsIDAsIDMp
IGlzIDAKK1BBU1MgYXJndW1lbnRzTm90TGl2ZVJlYWQzKDEsIDIsIDApIGlzIDAKK1BBU1MgYXJn
dW1lbnRzTm90TGl2ZVdyaXRlMSgwLCAyLCAzKSBpcyAwCitQQVNTIGFyZ3VtZW50c05vdExpdmVX
cml0ZTIoMSwgMCwgMykgaXMgMAorUEFTUyBhcmd1bWVudHNOb3RMaXZlV3JpdGUzKDEsIDIsIDAp
IGlzIDAKK1BBU1MgYXJndW1lbnRzSWRlbnRpdHkoKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy5qcwkocmV2
aXNpb24gMzczMjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi1k
b3QtYXJndW1lbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNCArMTg1LDEwMyBAQCBmdW5j
dGlvbiB0ZWFyT2ZmVGVzdDIoKQogfQogc2hvdWxkQmVUcnVlKCJ0ZWFyT2ZmVGVzdDIodHJ1ZSlb
MF0iKTsKIAorZnVuY3Rpb24gbGV4aWNhbEFyZ3VtZW50c0xpdmVSZWFkMShhLCBiLCBjKQorewor
ICAgIHZhciBvID0gYXJndW1lbnRzOworICAgIGEgPSAxOworICAgIHJldHVybiBsZXhpY2FsQXJn
dW1lbnRzTGl2ZVJlYWQxLmFyZ3VtZW50c1swXTsKK30KK3Nob3VsZEJlKCJsZXhpY2FsQXJndW1l
bnRzTGl2ZVJlYWQxKDAsIDIsIDMpIiwgIjEiKTsKKworZnVuY3Rpb24gbGV4aWNhbEFyZ3VtZW50
c0xpdmVSZWFkMihhLCBiLCBjKQoreworICAgIHZhciBvID0gYXJndW1lbnRzOworICAgIGIgPSAy
OworICAgIHJldHVybiBsZXhpY2FsQXJndW1lbnRzTGl2ZVJlYWQyLmFyZ3VtZW50c1sxXTsKK30K
K3Nob3VsZEJlKCJsZXhpY2FsQXJndW1lbnRzTGl2ZVJlYWQyKDEsIDAsIDMpIiwgIjIiKTsKKwor
ZnVuY3Rpb24gbGV4aWNhbEFyZ3VtZW50c0xpdmVSZWFkMyhhLCBiLCBjKQoreworICAgIHZhciBv
ID0gYXJndW1lbnRzOworICAgIGMgPSAzOworICAgIHJldHVybiBsZXhpY2FsQXJndW1lbnRzTGl2
ZVJlYWQzLmFyZ3VtZW50c1syXTsKK30KK3Nob3VsZEJlKCJsZXhpY2FsQXJndW1lbnRzTGl2ZVJl
YWQzKDEsIDIsIDApIiwgIjMiKTsKKworZnVuY3Rpb24gbGV4aWNhbEFyZ3VtZW50c0xpdmVXcml0
ZTEoYSwgYiwgYykKK3sKKyAgICB2YXIgbyA9IGFyZ3VtZW50czsKKyAgICBsZXhpY2FsQXJndW1l
bnRzTGl2ZVdyaXRlMS5hcmd1bWVudHNbMF0gPSAxOworICAgIHJldHVybiBhOworfQorc2hvdWxk
QmUoImxleGljYWxBcmd1bWVudHNMaXZlV3JpdGUxKDAsIDIsIDMpIiwgIjEiKTsKKworZnVuY3Rp
b24gbGV4aWNhbEFyZ3VtZW50c0xpdmVXcml0ZTIoYSwgYiwgYykKK3sKKyAgICB2YXIgbyA9IGFy
Z3VtZW50czsKKyAgICBsZXhpY2FsQXJndW1lbnRzTGl2ZVdyaXRlMi5hcmd1bWVudHNbMV0gPSAy
OworICAgIHJldHVybiBiOworfQorc2hvdWxkQmUoImxleGljYWxBcmd1bWVudHNMaXZlV3JpdGUy
KDEsIDAsIDMpIiwgIjIiKTsKKworZnVuY3Rpb24gbGV4aWNhbEFyZ3VtZW50c0xpdmVXcml0ZTMo
YSwgYiwgYykKK3sKKyAgICB2YXIgbyA9IGFyZ3VtZW50czsKKyAgICBsZXhpY2FsQXJndW1lbnRz
TGl2ZVdyaXRlMy5hcmd1bWVudHNbMl0gPSAzOworICAgIHJldHVybiBjOworfQorc2hvdWxkQmUo
ImxleGljYWxBcmd1bWVudHNMaXZlV3JpdGUzKDEsIDIsIDApIiwgIjMiKTsKKworZnVuY3Rpb24g
YXJndW1lbnRzTm90TGl2ZVJlYWQxKGEsIGIsIGMpCit7CisgICAgdmFyIG8gPSBhcmd1bWVudHNO
b3RMaXZlUmVhZDEuYXJndW1lbnRzOworICAgIGEgPSAxOworICAgIHJldHVybiBvWzBdOworfQor
c2hvdWxkQmUoImFyZ3VtZW50c05vdExpdmVSZWFkMSgwLCAyLCAzKSIsICIwIik7CisKK2Z1bmN0
aW9uIGFyZ3VtZW50c05vdExpdmVSZWFkMihhLCBiLCBjKQoreworICAgIHZhciBvID0gYXJndW1l
bnRzTm90TGl2ZVJlYWQyLmFyZ3VtZW50czsKKyAgICBiID0gMjsKKyAgICByZXR1cm4gb1sxXTsK
K30KK3Nob3VsZEJlKCJhcmd1bWVudHNOb3RMaXZlUmVhZDIoMSwgMCwgMykiLCAiMCIpOworCitm
dW5jdGlvbiBhcmd1bWVudHNOb3RMaXZlUmVhZDMoYSwgYiwgYykKK3sKKyAgICB2YXIgbyA9IGFy
Z3VtZW50c05vdExpdmVSZWFkMy5hcmd1bWVudHM7CisgICAgYyA9IDM7CisgICAgcmV0dXJuIG9b
Ml07Cit9CitzaG91bGRCZSgiYXJndW1lbnRzTm90TGl2ZVJlYWQzKDEsIDIsIDApIiwgIjAiKTsK
KworZnVuY3Rpb24gYXJndW1lbnRzTm90TGl2ZVdyaXRlMShhLCBiLCBjKQoreworICAgIGFyZ3Vt
ZW50c05vdExpdmVXcml0ZTEuYXJndW1lbnRzWzBdID0gMTsKKyAgICByZXR1cm4gYTsKK30KK3No
b3VsZEJlKCJhcmd1bWVudHNOb3RMaXZlV3JpdGUxKDAsIDIsIDMpIiwgIjAiKTsKKworZnVuY3Rp
b24gYXJndW1lbnRzTm90TGl2ZVdyaXRlMihhLCBiLCBjKQoreworICAgIGFyZ3VtZW50c05vdExp
dmVXcml0ZTIuYXJndW1lbnRzWzFdID0gMjsKKyAgICByZXR1cm4gYjsKK30KK3Nob3VsZEJlKCJh
cmd1bWVudHNOb3RMaXZlV3JpdGUyKDEsIDAsIDMpIiwgIjAiKTsKKworZnVuY3Rpb24gYXJndW1l
bnRzTm90TGl2ZVdyaXRlMyhhLCBiLCBjKQoreworICAgIGFyZ3VtZW50c05vdExpdmVXcml0ZTMu
YXJndW1lbnRzWzJdID0gMzsKKyAgICByZXR1cm4gYzsKK30KK3Nob3VsZEJlKCJhcmd1bWVudHNO
b3RMaXZlV3JpdGUzKDEsIDIsIDApIiwgIjAiKTsKKworZnVuY3Rpb24gYXJndW1lbnRzSWRlbnRp
dHkoKQoreworICAgIHJldHVybiBhcmd1bWVudHNJZGVudGl0eS5hcmd1bWVudHMgPT0gYXJndW1l
bnRzSWRlbnRpdHkuYXJndW1lbnRzOworfQorc2hvdWxkQmVUcnVlKCJhcmd1bWVudHNJZGVudGl0
eSgpIik7CisKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="10937"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>