-posuere.md
│   ├── _index.md
│   └── pellentesque-dapibus-suscipit.md
├── front
...
```

`content/pages/folder20/folder21/_index.md`

```yaml
---
weight:        21
title:         "Cum sociis natoque (this is level /folder20/folder21)"
date:          "2017-06-08T01:06:13+02:00"
resImgTeaser:  teaserpics/gohugo.io/hugo-dolor.png
---
```

`content/pages/front/_index.md`
```yaml
---
weight:      18
title:       "Frontpage Eye-Catcher (this is level /front)"
date:        2017-11-13T15:37:04+01:00
icon:        "fas fa-globe"
---
```

#### Taxonomy

* Taxonomy bar (only shown if page has a taxonomy)

```toml
[params.taxonomies]
  # used in layouts/partials/main.taxonomy.full.bar.html
  fullBarMinItemsTag       = 1
  fullBarMinItemsCategory = 1
```

![screenshot Taxonomy Bar](https://raw.githubusercontent.com/it-gro/hugo-theme-w3css-basic/master/images/snap_250.jpg)

* Terms lists

![screenshot Categories](https://raw.githubusercontent.com/it-gro/hugo-theme-w3css-basic/master/images/snap_260.jpg)

![screenshot Tags](https://raw.githubusercontent.com/it-gro/hugo-theme-w3css-basic/master/images/snap_270.jpg)

### Color Theme

All W3.CSS predefined monochromatic color themes
(https://www.w3schools.com/w3css/w3css_color_themes.asp) are placed in
the `/static/vendor/w3css/4/` directory.

You may create your own monochromatic color theme using
https://www.w3schools.com/w3css/w3css_color_generator.asp and then put the css file under `/static/css/w3-theme-custom.css`.

Select the actual color theme:

```toml
[params]
 #w3cssColorTheme = "/css/w3-theme-custom.css"
 w3cssColorTheme = "/vendor/w3css/4/w3-theme-orange.css"
```

Available options (theme files) are:
```toml
w3cssColorTheme = "/vendor/w3css/4/w3-theme-amber.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-black.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-blue-grey.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-blue.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-brown.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-cyan.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-dark-grey.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-deep-orange.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-deep-purple.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-green.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-grey.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-indigo.css"
w3cssColorTheme = "/vendor/w3css/4/w3-theme-khaki.css"
w3cssColorTheme = "/vendor/w3css


产漆仅十一担。棬子较多的沿河县，原有棬林十九万三千亩，已毁掉一半左右。毕节县朱昌区有名的“串核桃”，已近绝种。串核桃的家乡林枫生产队，原有核桃树八十八株，砍掉了八十五株。生产楠竹较多的赤水县，只一九六二年春天，就开荒毁竹林二千多亩，滥砍竹林二万五千多根。该县金沙公社靠河边十华里以内的约四百多亩楠竹林，大部分已被毁完。省内其他地区的小片竹园也大大减少，不少地区反映竹材缺乏。棬

   为了制止森林盲目性的破坏，我们拟采取以下措施：

   （1）迅速处理山林的所有权。根据林业政策十八条的精神，在今冬明春贯彻执行农村人民公社工作条例修正草案中，分批进行山林所有权的处理工作，像土改一样，一个队一个队地落实。已经处理的地方，进行复查补课。在林权确定后，即长期固定下来，划清山界，树立村记，由县（市）人民委员会发给林业执照。经济林从种植到老死，用材林从种植到成材采伐，采有权都不再变动。在确定林权的同时，对于社员山林入社的折价款，讨论出归还办法和期限。入社时折价过低或无偿入社的，应该重新折价。在用材林区群众用材也应该给以方便。一般的群众用材，要经过生产队批准，价格可以按入社折价的标准，也可以用未还清的山价款低偿。

   （2）坚决制止盲目开荒。对于近几年来不论集体开的、个人开的荒地，凡是破坏了山林，影响了水土保持的，都应该实行林粮间作，并逐步停耕还林；对于严重破坏山林，造成水土流失的个别户，要立即停耕，并责令造起林来。今后开荒，必须经过生产队统一规划，制止盲目开荒。

   （3）调整林区公余粮负担，逐步解决林粮矛盾。今年已进行了初步调整，林粮矛盾将会初步缓和，毁林开荒的情况将


   种族骚乱破坏了文明社会的秩序，

   应当把暴力改为对资产者良心的呼吁……

   横施暴力既然挽救不了主子的命运，

   花言巧语怎能欺骗英雄的黑人兄弟，

   非暴力主义者死于暴力之下，

   血的教训永远不能忘记！

   “枪杆子里面出政权”

   这是放之四海而皆准的真理！

   毛主席的伟大声明发表了，

   四海翻腾云水怒，五洲震荡风雷激。

   多少种语言汇成一个口号：

   全力支持美国黑人兄弟！

   亿万只拳头指向一个目标，

   坚决打倒美国帝国主义！

   长山南北、刚果河岸的反美战士，

   穿过猛烈的炮火传递着这令人振奋的消息；

   伊里安岛、琵琶湖畔的革命人民，

   从毛主席的伟大声明中汲取了百倍的勇气！

   干革命遥距千山若比邻，

   求解放远隔重洋存知己，

   不管前进的道路上出现多大的风浪，

   中国人民永远同黑人兄弟站在一起。

   我们一天天的好起来，

   敌人一天天的烂下去，

   毛泽东思想的阳光已穿透太平洋上空的乌云，

   北美大地升起了金色的晨曦。

   让新的阿芙乐尔在火红的五月开炮，

   对准白宫轰击、轰击、轰击！

   今天你们把腐朽的美国砸成一片废墟，

   明天你们将在新生的美国实现共�


ing));
          }

          int off;
          if (part.isEmpty()) {
            if (seenEmpty) {
              throw new IOException(String.format("Invalid IP address %s", addressString));
            }

            seenEmpty = true;
            off = 8 - parts.length;
            if (off < 0) {
              throw new IOException(String.format("Invalid IP address %s", addressString));
            }

            partOffset = off * 2;
          } else {
            if (part.length() > 1 && part.charAt(0) == '0') {
              throw new IOException(String.format("Invalid IP address %s", addressString));
            }

            off = Integer.parseInt(part, 16);
            data[i * 2 + partOffset] = (byte) (off >> 8);
            data[i * 2 + partOffset + 1] = (byte) off;
          }
        }

        if (parts.length < 8 && !seenEmpty) {
          throw new IOException(String.format("Invalid IP address %s", addressString));
        } else {
          return InetAddress.getByAddress(data);
        }
      }
    }
  }

  public static String getValidIpv4(String... default0) {
    List<String> addresses = getValidIpv4s();
    return isEmpty(addresses) ? (nonNull(default0) ? default0[0] : "127.0.0.1")
        : addresses.get(addresses.size() - 1);
  }

  public static List<String> getValidIpv4s() {
    List<InetAddress> addresses = getValidIpv4Addresses();
    return isEmpty(addresses) ? null : addresses.stream().map(InetAddress::getHostAddress)
        .collect(Collectors.toList());
  }

  public static InetAddress getValidIpv4Address() {
    List<InetAddress> addresses = getValidIpv4Addresses();
    return isEmpty(addresses) ? null : addresses.get(0);
  }

  public static List<InetAddress> getValidIpv4Addresses() {
    List<InetAddress> addresses = new ArrayList<>();
    try {
      Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
      while (networkInterfaces.hasMoreElements()) {
        NetworkInterface networkInterface = networkInterfaces.nextElement();
        if (networkInterface.isUp() && !networkInterface.isLoopback()) {
          Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
          while (inetAddresses.hasMoreElements()) {
            InetAddress inetAddress = inetAddresses.nextElement();
            if (!inetAddress.isLoopbackAddress()
                && inetAddress.getHostAddress().indexOf(':') == -1) {
              // System.out.println("网卡名称: " + networkInterface.getDisplayName()); -> 网卡名称: en0
              // System.out.println("网卡IP地址: " + inetAddress.getHostAddress()); -> 网卡IP地址: 192.168.1.4
              addresses.add(inetAddress);
            }
          }
        }
      }
    } catch (SocketException e) {
      // e.printStackTrace();
    }
    return isEmpty(addresses) ? null : addresses;
  }

  public static NetworkInterface getLocalNetworkInterface() {
    Enumeration<NetworkInterface> interfaces;
    try {
      interfaces = NetworkInterface.getNetworkInterfaces();
    } catch (SocketException e) {
      throw new RuntimeException("NetworkInterface not found", e);
    }
    while (interfaces.hasMoreElements()) {
      NetworkInterface networkInterface = interfaces.nextElement();
      Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
      while (addresses.hasMoreElements()) {
        InetAddress address = addresses.nextElement();
        if (address.isLoopbackAddress()) {
          continue;
        }
        if (address.getHostAddress().contains(":")) {


:NewCraft(3813, "Small Silk Pack", 150, {SpellSource.Trainer})
    :SetResult(4245)
    :AddReagent(2321, 3) -- Fine Thread
    :AddReagent(4234, 2) -- Heavy Leather
    :AddReagent(4305, 3) -- Bolt of Silk Cloth
    :Save()

module:NewCraft(3839, "Bolt of Silk Cloth", 125, {SpellSource.Trainer})
    :SetResult(4305)
    :AddReagent(4306, 4) -- Silk Cloth
    :Save()

module:NewCraft(3840, "Heavy Linen Gloves", 35, {SpellSource.Trainer})
    :SetResult(4307)
    :AddReagent(2320, 1) -- Coarse Thread
    :AddReagent(2996, 2) -- Bolt of Linen Cloth
    :Save()

module:NewCraft(3841, "Green Linen Bracers", 60, {SpellSource.Trainer})
    :SetResult(4308)
    :AddReagent(2320, 2) -- Coarse Thread
    :AddReagent(2605, 1) -- Green Dye
    :AddReagent(2996, 3) -- Bolt of Linen Cloth
    :Save()

module:NewCraft(3842, "Handstitched Linen Britches", 70, {SpellSource.Trainer})
    :SetResult(4309)
    :AddReagent(2321, 2) -- Fine Thread
    :AddReagent(2996, 4) -- Bolt of Linen Cloth
    :Save()

module:NewCraft(3843, "Heavy Woolen Gloves", 85, {SpellSource.Trainer})
    :SetResult(4310)
    :AddReagent(2321, 1) -- Fine Thread
    :AddReagent(2997, 3) -- Bolt of Woolen Cloth
    :Save()

module:NewCraft(3844, "Heavy Woolen Cloak", 100, {})
    :SetResult(4311)
    :AddRecipe(4346, Quality.Uncommon, {RecipeSource.Chest, RecipeSource.Drop, RecipeSource.Fishing})
    :AddReagent(2321, 2) -- Fine Thread
    :AddReagent(2997, 3) -- Bolt of Woolen Cloth
    :AddReagent(5498, 2) -- Small Lustrous Pearl
    :Save()

module:NewCraft(3845, "Soft-soled Linen Boots", 80, {SpellSource.Trainer})
    :SetResult(4312)
    :AddReagent(2318, 2) -- Light Leather
    :AddReagent(2321, 1) -- Fine Thread
    :AddReagent(2996, 5) -- Bolt of Linen Cloth
    :Save()

module:NewCraft(3847, "Red Woolen Boots", 95, {})
    :SetResult(4313)
    :AddRecipe(4345, Quality.Uncommon, {RecipeSource.Chest, RecipeSource.Drop})
    :AddReagent(2318, 2) -- Light Leather
    :AddReagent(2321, 1) -- Fine Thread
    :AddReagent(2604, 2) -- Red Dye
    :AddReagent(2997, 4) -- Bolt of Woolen Cloth
    :Save()

module:NewCraft(3848, "Double-stitched Woolen Shoulders", 110, {SpellSource.Trainer})
    :SetResult(4314)
    :AddReagent(2321, 2) -- Fine Thread
    :AddReagent(2997, 3) -- Bolt of Woolen Cloth
    :Save()

module:NewCraft(3849, "Reinforced Woolen Shoulders", 120, {})
    :SetResult(4315)
    :AddRecipe(4347, Quality.Uncommon, {RecipeSource.Chest, RecipeSource.Drop})
    :AddReagent(2319, 2) -- Medium Leather


# Volatility
# Copyright (C) 2007-2013 Volatility Foundation
#
# This file is part of Volatility.
#
# Volatility is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Volatility is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Volatility.  If not, see <http://www.gnu.org/licenses/>.
#

"""
@author:       Andrew Case
@license:      GNU General Public License 2.0
@contact:      atcuno@gmail.com
@organization:
"""

import volatility.obj as obj
import volatility.debug as debug
import volatility.plugins.mac.common as common
import volatility.plugins.mac.list_files as mac_list_files

class mac_dump_file(common.AbstractMacCommand):
    """ Dumps a specified file """

    def __init__(self, config, *args, **kwargs):
        common.AbstractMacCommand.__init__(self, config, *args, **kwargs)
        self._config.add_option('FILE-OFFSET', short_option = 'q', default = None, help = 'Virtual address of vnode structure from mac_list_files', action = 'store', type = 'int')
        self._config.add_option('OUTFILE', short_option = 'O', default = None, help = 'output file path', action = 'store', type = 'str')

    def calculate(self):
        common.set_plugin_members(self)

        outfile   = self._config.outfile
        vnode_off = self._config.FILE_OFFSET

        if not outfile:
            debug.error("You must specify an output file (-O/--outfile)")

        if not vnode_off:
            debug.error("You must specificy a vnode address (-q/--file-offset) from mac_list_files")

        vnode = obj.Object("vnode", offset = vnode_off, vm = self.addr_space)

        wrote = common.write_vnode_to_file(vnode, outfile)

        yield vnode_off, outfile, wrote

    def render_text(self, outfd, data):
        for (vnode_off, outfile, wrote) in data:
            outfd.write("Wrote {0} bytes to {1} from vnode at address {2:x}\n".format(wrote, outfile, vnode_off))


le.
		Conjugates.sampleConjugateDirichletCategorical(RNG$, v, cv$countLocal, m[var15]);
	}

	// Method to perform the inference steps to calculate new values for the samples generated
	// by sample task 27 drawn from Beta 20. Inference was performed using a Beta to Bernoulli/Binomial
	// conjugate prior.
	private final void sample27(int var24, int threadID$cv$var24, Rng RNG$) {
		// Local variable to record the number of true samples.
		int cv$sum = 0;

		// Local variable to record the number of samples.
		int cv$count = 0;

		// Processing random variable 51.
		//
		// Looking for a path between Sample 27 and consumer Bernoulli 51.
		for(int j = 0; j < samples; j += 1) {
			if((var24 == st[j])) {
				// Processing sample task 55 of consumer random variable null.
				//
				// Include the value sampled by task 55 from random variable var51.
				// Increment the number of samples.
				cv$count = (cv$count + 1);

				// If the sample value was positive increase the count
				if(flips[j])
					cv$sum = (cv$sum + 1);
			}
		}

		// Write out the value of the sample to a temporary variable prior to updating the
		// intermediate variables.
		bias[var24] = Conjugates.sampleConjugateBetaBinomial(RNG$, 1.0, 1.0, cv$sum, cv$count);
	}

	// Method to perform the inference steps to calculate new values for the samples generated
	// by sample task 36 drawn from Categorical 32. Inference was performed using variable
	// marginalization.
	private final void sample36() {
		// Variable declaration of cv$noStates moved.
		// Declaration comment was:
		// Calculate the number of states to evaluate.
		//
		// variable marginalization
		//
		// cv$noStates's comment
		// Calculate the number of states to evaluate.
		int cv$noStates = Math.max(0, states);
		for(int cv$valuePos = 0; cv$valuePos < cv$noStates; cv$valuePos += 1) {
			// Value of the variable at this index
			st[0] = cv$valuePos;

			// Variable declaration of cv$temp$0$var31 moved.
			//
			// Constructing a random variable input for use later.
			double[] cv$temp$0$var31 = m[0];

			// An accumulator to allow the value for each distribution to be constructed before
			// it is added to the index probabilities.
			//
			// Value of the variable at this index
			double cv$accumulatedProbabilities = ((cv$valuePos < cv$temp$0$var31.length)?Math.log(cv$temp$0$var31[cv$valuePos]):Double.NEGATIVE_INFINITY);

			// Substituted "i" with its value "1".
			if((1 < samples)) {
				// Processing sample task 46 of consumer random variable null.
				// Variable declaration of cv$temp$1$var41 moved.
				//
				// Constructing a random variable input for use later.
				//
				// Processing random variable 42.
				//
				// Looking for a path between Sample 36 and consumer Categorical 42.
				//
				// Value of the variable at this index
				double[] cv$temp$1$var41 = m[cv$valuePos];

				// A check to ensure rounding of floating point values can never result in a negative
				// value.
				//
				// Recorded the probability of reaching sample task 46 with the current configuration.
				//
				// Set an accumulator to record the consumer distributions not seen. Initially set
				// to 1 as seen values will be deducted from this value.
				//
				// Variable declaration of cv$accumulatedConsumerProbabilities moved.
				// Declaration comment was:
				// Set an accumulator to sum the probabilities for each possible configuration of
				// inputs.
				//
				// Substituted "i" with its value "1".
				cv$accumulatedProbabilities = ((((0.0 <= st[1]) && (st[1] < cv$temp$1$var41.length


给50个账户。
        /// * 分享快照无法更改名称，描述，仅可用于创建云硬盘。
        /// * 只支持分享到对方账户相同地域。
        /// * 仅支持分享数据盘快照。
        /// </summary>
        /// <param name="req"><see cref="ModifySnapshotsSharePermissionRequest"/></param>
        /// <returns><see cref="ModifySnapshotsSharePermissionResponse"/></returns>
        public ModifySnapshotsSharePermissionResponse ModifySnapshotsSharePermissionSync(ModifySnapshotsSharePermissionRequest req)
        {
            return InternalRequestAsync<ModifySnapshotsSharePermissionResponse>(req, "ModifySnapshotsSharePermission")
                .ConfigureAwait(false).GetAwaiter().GetResult();
        }

        /// <summary>
        /// 本接口（RenewDisk）用于续费云硬盘。
        ///
        /// * 只支持预付费的云硬盘。云硬盘类型可以通过[DescribeDisks](/document/product/362/16315)接口查询，见输出参数中DiskChargeType字段解释。
        /// * 支持与挂载实例一起续费的场景，需要在[DiskChargePrepaid](/document/product/362/15669#DiskChargePrepaid)参数中指定CurInstanceDeadline，此时会按对齐到子机续费后的到期时间来续费。
        /// </summary>
        /// <param name="req"><see cref="RenewDiskRequest"/></param>
        /// <returns><see cref="RenewDiskResponse"/></returns>
        public Task<RenewDiskResponse> RenewDisk(RenewDiskRequest req)
        {
            return InternalRequestAsync<RenewDiskResponse>(req, "RenewDisk");
        }

        /// <summary>
        /// 本接口（RenewDisk）用于续费云硬盘。
        ///
        /// * 只支持预付费的云硬盘。云硬盘类型可以通过[DescribeDisks](/document/product/362/16315)接口查询，见输出参数中DiskChargeType字段解释。
        /// * 支持与挂载实例一起续费的场景，需要在[DiskChargePrepaid](/document/product/362/15669#DiskChargePrepaid)参数中指定CurInstanceDeadline，此时会按对齐到子机续费后的到期时间来续费。
        /// </summary>
        /// <param name="req"><see cref="RenewDiskRequest"/></param>
        /// <returns><see cref="RenewDiskResponse"/></returns>
        public RenewDiskResponse RenewDiskSync(RenewDiskRequest req)
        {
            return InternalRequestAsync<RenewDiskResponse>(req, "RenewDisk")
                .ConfigureAwait(false).GetAwaiter().GetResult();
        }

        /// <summary>
        /// 本接口（ResizeDisk）用于扩容云硬盘。
        ///
        /// * 只支持扩容弹性云盘。云硬盘类型可以通过[DescribeDisks](/document/product/362/16315)接口


, .two, .three, .many have priority over .oneMany, because they are more specific.
    expect(localizePlural(0, key, t, languageTag: "en-US"), "0 beers");
    expect(localizePlural(1, key, t, languageTag: "en-US"), "1 beer");
    expect(localizePlural(2, key, t, languageTag: "en-US"), "2 beers");
    expect(localizePlural(3, key, t, languageTag: "en-US"), "3 beers");
    expect(localizePlural(4, key, t, languageTag: "en-US"), "many beers");

    // ---

    t = Translations.byText("en-US") +
        {"en-US": "1 beer".oneOrMore("1 or more beers").zero("0 beers").three("3 beers")};

    expect(localizePlural(0, key, t, languageTag: "en-US"), "0 beers");
    expect(localizePlural(1, key, t, languageTag: "en-US"), "1 or more beers");
    expect(localizePlural(2, key, t, languageTag: "en-US"), "1 or more beers");
    expect(localizePlural(3, key, t, languageTag: "en-US"), "3 beers");
    expect(localizePlural(4, key, t, languageTag: "en-US"), "1 or more beers");

    expect(
        t.toString(),
        '\n'
        'Translations: ---------------\n'
        '  en-US | 1 beer\n'
        '          R → 1 or more beers\n'
        '          0 → 0 beers\n'
        '          3 → 3 beers\n'
        '-----------------------------\n');
  });

  test("Comparison between .oneOrMore and .many.", () {
    //
    I18n.define(const Locale('es', 'US'));
    var key = "1 beer";

    // Make sure "1 or more" DOES NOT include zero (but includes 1).
    var t =
        Translations.byText("en-US") + {"en-US": "1 beer".oneOrMore("1 or more beer")};

    expect(localizePlural(0, key, t, languageTag: "en-US"), "1 beer");
    expect(localizePlural(1, key, t, languageTag: "en-US"), "1 or more beer");
    expect(localizePlural(2, key, t, languageTag: "en-US"), "1 or more beer");
    expect(localizePlural(3, key, t, languageTag: "en-US"), "1 or more beer");
    expect(localizePlural(4, key, t, languageTag: "en-US"), "1 or more beer");

    // While "many" DOES INCLUDE zero (but not one).
    t = Translations.byText("en-US") + {"en-US": "1 beer".many("many beers")};

    expect(localizePlural(0, key, t, languageTag: "en-US"), "many beers");
    expect(localizePlural(1, key, t, languageTag: "en-US"), "1 beer");
    expect(localizePlural(2, key, t, languageTag: "en-US"), "many beers");
    expect(localizePlural(3, key, t, languageTag: "en-US"), "many beers");
    expect(localizePlural(4, key, t, languageTag: "en-US"), "many beers");
  });

  test("Empty strings are allowed.", () {
    //
    I18n.define(const Locale('es', 'US'));
    var key = "1 beer";

    var t = Translations.byText("en-US") +
        {"en-US": "1 beer".zero("").three("").many("many beers")};

    expect(localizePlural(0, key, t, languageTag: "en-US"), "");
    expect(localizePlural(1, key, t, languageTag: "en-US"), "1 beer");
    expect(localizePlural(2, key, t, languageTag: "en-US"), "many beers");
    expect(localize


, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 114, 8.6105F, -11.08F, 17.05F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 110, 8.6105F, -11.08F, 18.3F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 134, 8.6105F, -11.08F, 14.55F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 126, 8.6105F, -11.08F, 15.8F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 142, 8.6105F, -11.08F, 12.05F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 150, 138, 8.6105F, -11.08F, 13.3F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 151, 21, 8.6105F, -11.08F, 10.8F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 151, 35, 8.6105F, -11.08F, 9.55F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 151, 43, 8.6105F, -11.08F, 8.3F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 151, 47, 8.6105F, -11.08F, 7.05F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 151, 92, 8.6105F, -11.08F, 5.8F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 100, 151, 8.6105F, -11.08F, 4.55F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 106, 151, 8.6105F, -11.08F, 3.3F, 1, 1, 1, -0.198F, false));
        cube_r11.cubeList.add(new ModelBox(cube_r11, 114, 151, 8.6105F, -11.08F, 2.05F, 1, 1, 1, -0.198F, false));

        cube_r12 = new ModelRenderer(this);
        cube_r12.setRotationPoint(0.0F, 0.0F, -1.25F);
        bone6.addChild(cube_r12);
        setRotationAngle(cube_r12, 0.0F, 0.0F, -0.8901F);
        cube_r12.cubeList.add(new ModelBox(cube_r12, 23, 133, 8.0105F, 10.68F, -0.2F, 1, 1, 2, -0.198F, false));
        cube_r12.cubeList.add(new ModelBox(c


,extend_s:function(c){return a._BinaryenUnary(b,
a.ExtendSInt32,c)},extend_u:function(c){return a._BinaryenUnary(b,a.ExtendUInt32,c)},add:function(c,d){return a._BinaryenBinary(b,a.AddInt64,c,d)},sub:function(c,d){return a._BinaryenBinary(b,a.SubInt64,c,d)},mul:function(c,d){return a._BinaryenBinary(b,a.MulInt64,c,d)},div_s:function(c,d){return a._BinaryenBinary(b,a.DivSInt64,c,d)},div_u:function(c,d){return a._BinaryenBinary(b,a.DivUInt64,c,d)},rem_s:function(c,d){return a._BinaryenBinary(b,a.RemSInt64,c,d)},rem_u:function(c,d){return a._BinaryenBinary(b,
a.RemUInt64,c,d)},and:function(c,d){return a._BinaryenBinary(b,a.AndInt64,c,d)},or:function(c,d){return a._BinaryenBinary(b,a.OrInt64,c,d)},xor:function(c,d){return a._BinaryenBinary(b,a.XorInt64,c,d)},shl:function(c,d){return a._BinaryenBinary(b,a.ShlInt64,c,d)},shr_u:function(c,d){return a._BinaryenBinary(b,a.ShrUInt64,c,d)},shr_s:function(c,d){return a._BinaryenBinary(b,a.ShrSInt64,c,d)},rotl:function(c,d){return a._BinaryenBinary(b,a.RotLInt64,c,d)},rotr:function(c,d){return a._BinaryenBinary(b,
a.RotRInt64,c,d)},eq:function(c,d){return a._BinaryenBinary(b,a.EqInt64,c,d)},ne:function(c,d){return a._BinaryenBinary(b,a.NeInt64,c,d)},lt_s:function(c,d){return a._BinaryenBinary(b,a.LtSInt64,c,d)},lt_u:function(c,d){return a._BinaryenBinary(b,a.LtUInt64,c,d)},le_s:function(c,d){return a._BinaryenBinary(b,a.LeSInt64,c,d)},le_u:function(c,d){return a._BinaryenBinary(b,a.LeUInt64,c,d)},gt_s:function(c,d){return a._BinaryenBinary(b,a.GtSInt64,c,d)},gt_u:function(c,d){return a._BinaryenBinary(b,a.GtUInt64,
c,d)},ge_s:function(c,d){return a._BinaryenBinary(b,a.GeSInt64,c,d)},ge_u:function(c,d){return a._BinaryenBinary(b,a.GeUInt64,c,d)},atomic:{load:function(c,d){return a._BinaryenAtomicLoad(b,8,c,a.i64,d)},load8_u:function(c,d){return a._BinaryenAtomicLoad(b,1,c,a.i64,d)},load16_u:function(c,d){return a._BinaryenAtomicLoad(b,2,c,a.i64,d)},load32_u:function(c,d){return a._BinaryenAtomicLoad(b,4,c,a.i64,d)},store:function(c,d,e){return a._BinaryenAtomicStore(b,8,c,d,e,a.i64)},store8:function(c,d,e){return a


 administradorService;

    private AdministradorDTO administradorDTO;
    private AdministradorUpdateDTO adminDiferente;
    private Administrador administradorEntity;
    private List<String> erros;

    @BeforeEach
    void setUp() {
        administradorDTO = new AdministradorDTO();
        administradorDTO.setKey(1L);
        administradorDTO.setNome("AdmTeste");
        administradorDTO.setNomeUsuario("AdmTeste");
        administradorDTO.setEmail("emailteste@teste.com");
        administradorDTO.setSenha("senha123");
        administradorDTO.setCell("(11) 94345-9969");
        administradorDTO.setFotoPerfil("teste foto");

        administradorEntity = new Administrador();
        administradorEntity.setIdAdministrador(1L);
        administradorEntity.setNome("AdmTeste");
        administradorEntity.setNomeUsuario("AdmTeste");
        administradorEntity.setEmail("emailteste@teste.com");
        administradorEntity.setSenha("senhaCodificada");
        administradorEntity.setCell("(11) 94345-9969");
        administradorEntity.setFotoPerfil("teste foto");
        administradorEntity.setRole(Roles.ADMIN);

        adminDiferente = new AdministradorUpdateDTO();
        adminDiferente.setNome("AdmNomeDiferente");
        adminDiferente.setFotoPerfil("FotoDiferente");
        adminDiferente.setEmail("admdiferente@email.com");
        adminDiferente.setSenha("senhaDiferente");
        adminDiferente.setCell("(11) 95555-5555");

        erros = new ArrayList<>();
    }

    @Test
    void deveCriarAdministradorComSucesso() {
        //doNothing utilizado pois nao queremos que ele lance excecao ou qualquer outra coisa que pode quebrar o teste
        doNothing().when(administradorValidacao).validate(administradorDTO);

        when(passwordEncoder.encode("senha123")).thenReturn("senhaCodificada");

        when(administradorRepository.save(any(Administrador.class))).thenReturn(administradorEntity);

        AdministradorDTO resultado = administradorService.create(administradorDTO);

        assertNotNull(resultado);
        assertEquals("AdmTeste", resultado.getNome());
        assertEquals("emailteste@teste.com", resultado.getEmail());
        assertEquals("senhaCodificada", resultado.getSenha());
        verify(administradorValidacao).validate(administradorDTO);
        verify(passwordEncoder).encode("senha123");
        verify(administradorRepository).save(any(Administrador.class));
    }

    @Test
    void naoDeveSalvarAdministradorQuandoJaExistirAdministradorComEmailInserido() {
        erros.add("E-mail já está em uso");

        doThrow(new ValidacaoException(erros)).when(administradorValidacao).validate(administradorDTO);

        assertThrows(ValidacaoException.class, () -> {
            administradorService.create(administradorDTO);
        });

        verify(administradorRepository, never()).save(any(Administrador.class));
    }

    @Test
    void naoDeveSalvarAdministradorQuandoJaExistirAdministradorComNomeUsuarioInserido() {
        erros.add("Nome de Usuário já está em uso");

        doThrow(new ValidacaoException(erros)).when(administradorValidacao).validate(administradorDTO);

        assertThrows(ValidacaoException.class, () -> {
            administradorService.create(administradorDTO);
        });

        verify(administradorRepository, never()).save(any(Admin


        PMC Copyright Notice

<map name="pmc-banner-imagemap"><area alt="Link to Scientific Reports" title="Link to Scientific Reports" shape="default" href="http://www.nature.com/srep" target="_blank" rel="noopener noreferrer"></map>

<button type="button" class="cursor-pointer text-no-underline bg-transparent border-0 padding-0 text-left margin-0 text-normal text-primary" aria-controls="journal_context_menu">Sci Rep</button>
. 2025 Aug 14;15:29845. doi: 10.1038/s41598-025-15365-2

Search in PMC

Search in PubMed

View in NLM Catalog

Add to search

<hgroup>
Craniological differentiation amongst Southeast Asian small cats
</hgroup>

Athirah N Azli

Athirah N Azli

1Institute of Tropical Biodiversity and Sustainable Development, University of Malaysia Terengganu, 21030 Kuala Nerus, Terengganu Malaysia

Find articles by Athirah N Azli

1, <a href="https://pubmed.ncbi.nlm.nih.gov/?term=%22G


            {
                string uncommentedPostsOutput = Serializer.ExportUncommentedPosts(context);

                File.WriteAllText("files/output/UncommentedPosts.json", uncommentedPostsOutput);

                string usersOutput = Serializer.ExportPopularUsers(context);

                File.WriteAllText("files/output/PopularUsers.json", usersOutput);

                string commentsOutput = Serializer.ExportCommentsOnPosts(context);

                File.WriteAllText("files/output/CommentsOnPosts.xml", commentsOutput);
            }
        }

        private static void ResetDatabase(InstagraphContext context, bool shouldDeleteDatabase = false)
        {
            if (shouldDeleteDatabase)
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
            }

            context.Database.EnsureCreated();

            var disableIntegrityChecksQuery = "EXEC sp_MSforeachtable @command1='ALTER TABLE ? NOCHECK CONSTRAINT ALL'";
            context.Database.ExecuteSqlCommand(disableIntegrityChecksQuery);

            var deleteRowsQuery = "EXEC sp_MSforeachtable @command1='DELETE FROM ?'";
            context.Database.ExecuteSqlCommand(deleteRowsQuery);

            var enableIntegrityChecksQuery = "EXEC sp_MSforeachtable @command1='ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'";
            context.Database.ExecuteSqlCommand(enableIntegrityChecksQuery);

            var reseedQuery = "EXEC sp_MSforeachtable @command1='DBCC CHECKIDENT(''?'', RESEED, 0)'";
            try
            {
                context.Database.ExecuteSqlCommand(reseedQuery);
            }
            catch (SqlException) // OrderItems table has no identity column, which isn't a problem
            {
            }
        }
    }
}


Myq3Z6tAFG+fyUa8XiR6EJuVYY/62xgKOcQWFJQ6MMUIYZIjK6Og7VWb0r7FDwl57Vj3N53RbFNT/c4UBAvTPXFO6stJ5Ok+BPV8bUnV0K27LnpQ0kV7NSRKyQl7WtlRC6gE2ZVeOEXpc0Yk/KGdI/wAJWm7IAAAAeJxtUNlCnEAQpLjZVaOJue9o7piIrrnMz8yyCG2gBxZmXfj6NCS8pV9mpqunuqos2/pbM+v/dQkbDlx48BEgRIQZ5tjBLvZwC/s4wG3cwSHu4h7u4wEe4hEe4wme4hme4wVe4hWOcIzXeIO3eIf3+ICP+IQTfMYXnCLGGc6xwAW+4hu+4wd+4hK/LGydXvH8mlSvqM81Z36jTWP0vDaKK+KsUiu/ydM+p2idcp+nnG2CJif5wn4mQ0sKWrnL228NJblxm9yQXdfeTUpLLc1KYLfQmfZWikoVLknpWqgdVmzzZqc21E7rgn7k4IMkV2szMA3drTB4nSkU7xY0HN2wkLOw1WbAMi9RxMpda13Omk1W6qXii/NQdArPYCrXpkujlqRTDHKu1NIEA3Vh2JUI4jAZrAkcFKOb1B/3xb64FhmHoqSXeHqjO21ao1fycBani31KNJejRs4UFyS2eaWcVle2oehKSNNRvgSUGPc3NU00BRCHaXkzZiKoTM5UPWUc/tMW73Xb65N0W63TpiHNQTuIyGnCzwLh1RJKOP20rD9jlLNm') format('woff'),
    url('iconfont.ttf?t=1512007250695') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ url('iconfont.svg?t=1512007250695#iconfont') format('svg'); /* iOS 4.1- */
}

/* 全局 */
html, body {
    overflow-x: hidden;
}

html body {
    margin-top: 61px;
}

i {
    font-style: normal;
}

.iconfont {
    font-family: "layui-icon-fly" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -webkit-text-stroke-width: 0.2px;
    -moz-osx-font-smoothing: grayscale;
}

.icon-zan:before {
    content: "\e612"
}

.icon-jiazaizhong:before {
    content: "\e60e"
}

.icon-sousuo:before {
    content: "\e621"
}

.icon-quanpingpad:before {
    content: "\e61d"
}

.icon-shezhi:before {
    content: "\e607"
}

.icon-renzhengv:before {


DarkenedSea() { return current_expansion == Expansion::ExpansionNumber::TheDarkenedSea; }
	bool IsCurrentExpansionTheBrokenMirror() { return current_expansion == Expansion::ExpansionNumber::TheBrokenMirror; }
	bool IsCurrentExpansionEmpiresOfKunark() { return current_expansion == Expansion::ExpansionNumber::EmpiresOfKunark; }
	bool IsCurrentExpansionRingOfScale() { return current_expansion == Expansion::ExpansionNumber::RingOfScale; }
	bool IsCurrentExpansionTheBurningLands() { return current_expansion == Expansion::ExpansionNumber::TheBurningLands; }
	bool IsCurrentExpansionTormentOfVelious() { return current_expansion == Expansion::ExpansionNumber::TormentOfVelious; }

	const std::vector<ContentFlagsRepository::ContentFlags> &GetContentFlags() const;
	std::vector<std::string> GetContentFlagsEnabled();
	std::vector<std::string> GetContentFlagsDisabled();
	bool IsContentFlagEnabled(const std::string& content_flag);
	bool IsContentFlagDisabled(const std::string& content_flag);
	void SetContentFlags(const std::vector<ContentFlagsRepository::ContentFlags>& content_flags);
	void ReloadContentFlags();
	WorldContentService * SetExpansionContext();

	bool DoesPassContentFiltering(const ContentFlags& f);
	bool DoesZonePassContentFiltering(const ZoneRepository::Zone& z);

	WorldContentService * SetDatabase(Database *database);
	Database *GetDatabase() const;

	WorldContentService * SetContentDatabase(Database *database);
	Database *GetContentDatabase() const;

	void SetContentFlag(const std::string &content_flag_name, bool enabled);

	void HandleZoneRoutingMiddleware(ZoneChange_Struct *zc);

	struct FindZoneResult {
		uint32                               zone_id = 0;
		InstanceListRepository::InstanceList instance;
		ZoneRepository::Zone                 zone;
	};

	FindZoneResult FindZone(uint32 zone_id, uint32 instance_id);
	bool IsInPublicStaticInstance(uint32 instance_id);

	static WorldContentService* Instance()
	{
		static WorldContentService instance;
		return &instance;
	}

private:
	int current_expansion{};
	std::vector<ContentFlagsRepository::ContentFlags> content_flags;

	// reference to database
	Database *m_database;
	Database *m_content_database;

	// holds a record of the zone table from the database
	WorldContentService *LoadStaticGlobalZoneInstances();
	std::vector<InstanceListRepository::InstanceList> m_zone_static_instances;
};

#endif //EQEMU_WORLD_CONTENT_SERVICE_H


,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#head


This provides a check to prevent loading modules
 compiled for a different kernel.

Kernel module loader

[disable] It gives little benefit on a typical FreeS/WAN gate  and
entails some risk.

General setup

We list here only the options that matter for FreeS/WAN.

Networking support

[required]

Sysctl interface

[optional] If this option is turned on and the <VAR> /proc</VAR>
 filesystem installed, then you can control  various system behaviours
by writing to files under <VAR> /proc/sys</VAR>. For example:

        echo 1 > /proc/sys/net/ipv4/ipforward

 turns IP forwarding on.

Disabling this option breaks many firewall scripts. A true  paranoid
would disable it anyway since it might conceivably be  of use to an
attacker.

Plug and Play support

[anything]

Block devices

[anything]

Networking options

Packet socket

[optional] This kernel feature supports tools such as  tcpdump(8)
which communicate directly with network hardware,  bypassing kernel
protocols. This is very much a two-edged sword:

such tools can be very useful to the firewall admin,  especially
during initial testing

should an evildoer breach your firewall, such tools could  give him
or her a great deal of information about the rest  of your network

 We recommend disabling this option on production gateways.

Kernel/User netlink socket

[optional] Required if you want to use advanced
 router features.

Routing messages

[optional]

Netlink device emulation

[optional]

Network firewalls

[recommended] You need this if the IPSEC gateway also  functions as
a firewall.

Even if the IPSEC gateway is not your primary firewall, we  suggest
setting this so that you can protect the gateway with at  least basic
local packet filters.

Socket filtering

[disable] This enables an older filtering interface. We suggest
 using ipchains(8) instead. To do that, set the "Network  firewalls"
option just above, and not this one.

Unix domain sockets

[required] These sockets are used for communication between the
 ipsec(8) commands and the
ipsec_pluto(8) daemon.

TCP/IP networking

[required]

IP: multicasting

[anything]

IP: advanced router

[optional] This gives you policy routing, which some  people have
used to good advantage in their scripts for  FreeS/WAN gateway
management. It is not used in our  distributed scripts, so not required
unless you want it  for custom scripts. It requires the
netlink interface between kernel code  and the iproute2(8) command.

IP: kernel level autoconfiguration

[disable] It gives little benefit on a typical FreeS/WAN  gate and
entails some risk.

IP: firewall packet netlink device

[disable]</DD


ag71xx *ag, u32 ints)
{
	ag71xx_cb(ag, AG71XX_REG_INT_ENABLE, ints);
}

static inline void ag71xx_mii_ctrl_wr(struct ag71xx *ag, u32 value)
{
	__raw_writel(value, ag->mii_ctrl);

	/* flush write */
	__raw_readl(ag->mii_ctrl);
}

static inline u32 ag71xx_mii_ctrl_rr(struct ag71xx *ag)
{
	return __raw_readl(ag->mii_ctrl);
}

static void inline ag71xx_mii_ctrl_set_if(struct ag71xx *ag,
					  unsigned int mii_if)
{
	u32 t;

	t = ag71xx_mii_ctrl_rr(ag);
	t &= ~(MII_CTRL_IF_MASK);
	t |= (mii_if & MII_CTRL_IF_MASK);
	ag71xx_mii_ctrl_wr(ag, t);
}

static void inline ag71xx_mii_ctrl_set_speed(struct ag71xx *ag,
					     unsigned int speed)
{
	u32 t;

	t = ag71xx_mii_ctrl_rr(ag);
	t &= ~(MII_CTRL_SPEED_MASK << MII_CTRL_SPEED_SHIFT);
	t |= (speed & MII_CTRL_SPEED_MASK) << MII_CTRL_SPEED_SHIFT;
	ag71xx_mii_ctrl_wr(ag, t);
}

#ifdef CONFIG_AG71XX_AR8216_SUPPORT
void ag71xx_add_ar8216_header(struct ag71xx *ag, struct sk_buff *skb);
int ag71xx_remove_ar8216_header(struct ag71xx *ag, struct sk_buff *skb,
				int pktlen);
static inline int ag71xx_has_ar8216(struct ag71xx *ag)
{
	return ag71xx_get_pdata(ag)->has_ar8216;
}
#else
static inline void ag71xx_add_ar8216_header(struct ag71xx *ag,
					   struct sk_buff *skb)
{
}

static inline int ag71xx_remove_ar8216_header(struct ag71xx *ag,
					      struct sk_buff *skb,
					      int pktlen)
{
	return 0;
}
static inline int ag71xx_has_ar8216(struct ag71xx *ag)
{
	return 0;
}
#endif

#endif /* _AG71XX_H */


stroke) {
            if (mSketchView.getEditMode() == SketchView.EDIT_STROKE && mSketchView.getStrokeType() != STROKE_TYPE_ERASER) {
                showParamsPopupWindow(v, STROKE_TYPE_DRAW);
            } else {
                int checkedId = strokeTypeRG.getCheckedRadioButtonId();
                if (checkedId == R.id.stroke_type_rbtn_draw) {
                    strokeType = STROKE_TYPE_DRAW;
                } else if (checkedId == R.id.stroke_type_rbtn_line) {
                    strokeType = STROKE_TYPE_LINE;
                } else if (checkedId == R.id.stroke_type_rbtn_circle) {
                    strokeType = STROKE_TYPE_CIRCLE;
                } else if (checkedId == R.id.stroke_type_rbtn_rectangle) {
                    strokeType = STROKE_TYPE_RECTANGLE;
                } else if (checkedId == R.id.stroke_type_rbtn_text) {
                    strokeType = STROKE_TYPE_TEXT;
                }
                mSketchView.setStrokeType(strokeType);
            }
            mSketchView.setEditMode(SketchView.EDIT_STROKE);
            showBtn(btn_stroke);
        } else if (id == R.id.btn_eraser) {
            if (mSketchView.getEditMode() == SketchView.EDIT_STROKE && mSketchView.getStrokeType() == STROKE_TYPE_ERASER) {
                showParamsPopupWindow(v, STROKE_TYPE_ERASER);
            } else {
                mSketchView.setStrokeType(STROKE_TYPE_ERASER);
            }
            mSketchView.setEditMode(SketchView.EDIT_STROKE);
            showBtn(btn_eraser);
        } else if (id == R.id.btn_undo) {
            mSketchView.undo();
        } else if (id == R.id.btn_redo) {
            mSketchView.redo();
        } else if (id == R.id.btn_empty) {
            askForErase();
        } else if (id == R.id.btn_save) {
            if (mSketchView.getRecordCount() == 0) {
                Toast.makeText(getActivity(), "您还没有绘图", Toast.LENGTH_SHORT).show();
            } else {
                showSaveDialog();
            }
        } else if (id == R.id.btn_photo) {
            startMultiImageSelector(REQUEST_IMAGE);
        } else if (id == R.id.btn_background) {
            startMultiImageSelector(REQUEST_BACKGROUND);
        } else if (id == R.id.btn_drag) {
            mSketchView.setEditMode(SketchView.EDIT_PHOTO);
            showBtn(btn_drag);
        } else if (id == R.id.btn_send) {
            if (sendBtnCallback != null) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        String photoName = TEMP_FILE_NAME + TimeUtils.getNowTimeString();
                        sendBtnCallback.onSendBtnClick(saveInOI(TEMP_FILE_PATH, photoName, 50));
                    }
                }).start();
            }
        }
    }

    private void startMultiImageSelector(int request) {
        MultiImageSelector selector = MultiImageSelector.create(getActivity());
        selector.showCamera(true);
        selector.count(9);
        selector.single();
        selector.origin(mSelectPath);
        Bundle boundsBundle = new Bundle();
        Rect rect = new Rect();
        mSketchView.getLocalVisibleRect(rect);
        int[] boundsInts = new int[4];
        //noinspection Range
        mSketchView.getLocationInWindow(boundsInts);
        boundsInts[1] -= ScreenUtils.getStatusBarHeight(activity);
        boundsInts[2] = mSketchView.getWidth();
        boundsInts[3] = mSketchView.g


n(8)
  }
}
package klite

import klite.Config.useEnvFile
import java.io.File

/**
 * An overridable way to read configuration from env vars or system properties,
 * as per 12-factor apps spec. In development, it is convenient to use [useEnvFile],
 * which will skip already set env vars by default, giving them precedence.
 */
object Config {
  fun optional(env: String): String? = System.getProperty(env) ?: System.getenv(env)
  fun optional(env: String, default: String) = optional(env) ?: default
  fun required(env: String) = optional(env) ?: error("$env should be provided as system property or env var")

  /** For dot-separated inheritance, e.g. logger level */
  fun inherited(env: String): String? = optional(env) ?: if ("." in env) inherited(env.substringBeforeLast(".")) else null
  fun inherited(env: String, default: String): String = inherited(env) ?: default

  /** List of active configurations, e.g. dev or prod, from ENV var */
  val active: Set<String> by lazy {
    optional("ENV", "dev").split(",").map { it.trim() }.toSet()
  }
  fun isActive(conf: String) = conf in active
  fun isAnyActive(vararg confs: String) = confs.any { it in active }

  operator fun get(env: String) = required(env)
  operator fun set(env: String, value: String): String? = System.setProperty(env, value)

  fun overridable(env: String, value: String) {
    if (optional(env) == null) Config[env] = value
  }

  /**
   * Use this as the first thing in your app before creating a Server instance.
   * @param force use to override already set env vars
   */
  fun useEnvFile(name: String = ".env", force: Boolean = false) = useEnvFile(File(name), force)
  fun useEnvFile(file: File, force: Boolean = false) {
    if (!force && !file.exists()) return logger().info("No ${file.absolutePath} found, skipping")
    file.forEachLine {
      val line = it.trim()
      if (line.isNotEmpty() && !line.startsWith('#'))
        line.split('=', limit = 2).let { (key, value) ->
          if (force || optional(key) == null) set(key, value)
        }
    }
  }
}

val Config.isDev get() = isActive("dev")
val Config.isTest get() = isActive("test")
val Config.isProd get() = isActive("prod")
@file:Suppress("UNCHECKED_CAST", "NOTHING_TO_INLINE", "INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
package klite.json

import klite.d

typealias JsonNode = Map<String, Any?>
typealias JsonList = List<JsonNode>

@kotlin.internal.HidesMembers
inline fun <T: Any> JsonNode.get(key: String) = (get(key) ?: throw NullPointerException("$key is absent")) as T
inline fun <T: Any> JsonNode.getOrNull(key: String) = get(key) as T?

inline fun JsonNode.getString(key: String) = get<String>(key)
inline fun JsonNode.getInt(key: String) = get<Number>(key).toInt()
inline fun JsonNode.getLong(key: String) = get<Number>(key).toLong()
inline fun JsonNode.getBigDecimal(key: String) = get<String>(key).toBigDecimal()
inline fun JsonNode.getDecimal(key: String) = get<String>(key).d
inline fun JsonNode.getBoolean(key: String) = get<Boolean>(key)
inline fun <T>


ey2", b"val2", WriteFlags::empty())
                .unwrap();
            assert_eq!(nested.get(&db, b"key1").unwrap(), Some(*b"val1"));
            assert_eq!(nested.get(&db, b"key2").unwrap(), Some(*b"val2"));
        }

        let db = txn.open_db(None).unwrap();
        assert_eq!(txn.get(&db, b"key1").unwrap(), Some(*b"val1"));
        assert_eq!(txn.get::<()>(&db, b"key2").unwrap(), None);
    }

    #[test]
    fn test_clear_db() {
        let dir = tempdir().unwrap();
        let env = Environment::new().open(dir.path()).unwrap();

        {
            let txn = env.begin_rw_txn().unwrap();
            txn.put(
                &txn.open_db(None).unwrap(),
                b"key",
                b"val",
                WriteFlags::empty(),
            )
            .unwrap();
            assert!(!txn.commit().unwrap());
        }

        {
            let txn = env.begin_rw_txn().unwrap();
            txn.clear_db(&txn.open_db(None).unwrap()).unwrap();
            assert!(!txn.commit().unwrap());
        }

        let txn = env.begin_ro_txn().unwrap();
        assert_eq!(
            txn.get::<()>(&txn.open_db(None).unwrap(), b"key").unwrap(),
            None
        );
    }

    #[test]
    fn test_drop_db() {
        let dir = tempdir().unwrap();
        {
            let env = Environment::new().set_max_dbs(2).open(dir.path()).unwrap();

            {
                let txn = env.begin_rw_txn().unwrap();
                txn.put(
                    &txn.create_db(Some("test"), DatabaseFlags::empty()).unwrap(),
                    b"key",
                    b"val",
                    WriteFlags::empty(),
                )
                .unwrap();
                // Workaround for MDBX dbi drop issue
                txn.create_db(Some("canary"), DatabaseFlags::empty())
                    .unwrap();
                assert!(!txn.commit().unwrap());
            }
            {
                let txn = env.begin_rw_txn().unwrap();
                let db = txn.open_db(Some("test")).unwrap();
                unsafe {
                    txn.drop_db(db).unwrap();
                }
                assert!(matches!(
                    txn.open_db(Some("test")).unwrap_err(),
                    Error::NotFound
                ));
                assert!(!txn.commit().unwrap());
            }
        }

        let env = Environment::new().set_max_dbs(2).open(dir.path()).unwrap();

        let txn = env.begin_ro_txn().unwrap();
        txn.open_db(Some("canary")).unwrap();
        assert!(matches!(
            txn.open_db(Some("test")).unwrap_err(),
            Error::NotFound
        ));
    }

    #[test]
    fn test_concurrent_readers_single_writer() {
        let dir = tempdir().unwrap();
        let env: Arc<Environment> = Arc::new(Environment::new().open(dir.path()).unwrap());

        let n = 10usize; // Number of concurrent readers
        let barrier = Arc::new(Barrier::new(n + 1));
        let mut threads: Vec<JoinHandle<bool>> = Vec


ff]
vfnmadd213ss {ru-sae}, %xmm15, %xmm15, %xmm15 {%k2}

// CHECK: vfnmadd213ss {ru-sae}, %xmm15, %xmm15, %xmm15 {%k2} {z}
// CHECK: encoding: [0x62,0x52,0x05,0xda,0xad,0xff]
vfnmadd213ss {ru-sae}, %xmm15, %xmm15, %xmm15 {%k2} {z}

// CHECK: vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1
// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xad,0xc9]
vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1

// CHECK: vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1 {%k2}
// CHECK: encoding: [0x62,0xf2,0x75,0x5a,0xad,0xc9]
vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1 {%k2}

// CHECK: vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1 {%k2} {z}
// CHECK: encoding: [0x62,0xf2,0x75,0xda,0xad,0xc9]
vfnmadd213ss {ru-sae}, %xmm1, %xmm1, %xmm1 {%k2} {z}

// CHECK: vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15
// CHECK: encoding: [0x62,0x52,0x05,0x78,0xad,0xff]
vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15

// CHECK: vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15 {%k2}
// CHECK: encoding: [0x62,0x52,0x05,0x7a,0xad,0xff]
vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15 {%k2}

// CHECK: vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15 {%k2} {z}
// CHECK: encoding: [0x62,0x52,0x05,0xfa,0xad,0xff]
vfnmadd213ss {rz-sae}, %xmm15, %xmm15, %xmm15 {%k2} {z}

// CHECK: vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1
// CHECK: encoding: [0x62,0xf2,0x75,0x78,0xad,0xc9]
vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1

// CHECK: vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1 {%k2}
// CHECK: encoding: [0x62,0xf2,0x75,0x7a,0xad,0xc9]
vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1 {%k2}

// CHECK: vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1 {%k2} {z}
// CHECK: encoding: [0x62,0xf2,0x75,0xfa,0xad,0xc9]
vfnmadd213ss {rz-sae}, %xmm1, %xmm1, %xmm1 {%k2} {z}

// CHECK: vfnmadd213ss %xmm15, %xmm15, %xmm15
// CHECK: encoding: [0xc4,0x42,0x01,0xad,0xff]
vfnmadd213ss %xmm15, %


// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the LGPL License, Version 3.0. See License.txt in the project root for license information.
// Website: https://admin.blazor.zone

namespace BootstrapAdmin.Web.HealthChecks;

/// <summary>
/// Gitee HttpClient 操作类
/// </summary>
public class GiteeHttpClient
{
    /// <summary>
    /// HttpClient 实例
    /// </summary>
    public HttpClient HttpClient { get; private set; }

    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param


y saleSummary;

  final Map _typeMap = {
    Payment_PaymentType.DEPOSIT: PaymentType.DEPOSIT,
    Payment_PaymentType.WITHDRAWAL: PaymentType.WITHDRAWAL,
    Payment_PaymentType.SENT: PaymentType.SENT,
    Payment_PaymentType.RECEIVED: PaymentType.RECEIVED,
    Payment_PaymentType.CLOSED_CHANNEL: PaymentType.CLOSED_CHANNEL,
  };

  @override
  PaymentType get type => _typeMap[_paymentResponse.type];

  @override
  Int64 get amount => _paymentResponse.amount;

  @override
  Int64 get fee => _paymentResponse.fee;

  @override
  Int64 get creationTimestamp => _paymentResponse.creationTimestamp;

  @override
  String get destination => _paymentResponse.destination;

  @override
  String get redeemTxID => _paymentResponse.redeemTxID;

  @override
  String get paymentHash => _paymentResponse.paymentHash;

  @override
  String get preimage => _paymentResponse.preimage;

  @override
  String get paymentGroup =>
      _paymentResponse.groupKey?.isNotEmpty == true ? _paymentResponse.groupKey : paymentHash;

  @override
  String get paymentGroupName => _paymentResponse.groupName;

  @override
  bool get pending => _paymentResponse.pendingExpirationHeight > 0 || _paymentResponse.isChannelPending;

  @override
  bool get fullPending => pending && _paymentResponse.pendingFull == true;

  String get closedChannelPoint => _paymentResponse.closedChannelPoint;

  String get closeChannelTx {
    if (_paymentResponse.closedChannelSweepTxID?.isNotEmpty == true) {
      return _paymentResponse.closedChannelSweepTxID;
    }
    if (_paymentResponse.closedChannelTxID?.isNotEmpty == true) {
      return _paymentResponse.closedChannelTxID;
    }
    return "";
  }

  String get closeChannelTxUrl {
    if (closeChannelTx.isEmpty) {
      return null;
    }
    return "https://blockstream.info/tx/$closeChannelTx";
  }

  String get remoteCloseChannelTx {
    return _paymentResponse.closedChannelRemoteTxID;
  }

  String get localCloseChannelTx {
    return _paymentResponse.closedChannelTxID;
  }

  String get remoteCloseChannelTxUrl {
    if (remoteCloseChannelTx.isEmpty) {
      return null;
    }
    return "https://blockstream.info/tx/$remoteCloseChannelTx";
  }

  @override
  bool get keySend => _paymentResponse.isKeySend;

  int get pendingExpirationHeight => _paymentResponse.pendingExpirationHeight;

  double get hoursToExpire =>
      max(_paymentResponse.pendingExpirationHeight - _account.tipHeight.toInt(), 0) * 10 / 60;

  @override
  Int64 get pendingExpirationTimestamp => _paymentResponse.pendingExpirationTimestamp > 0
      ? _paymentResponse.pendingExpirationTimestamp
      : Int64(
          DateTime.now().add(Duration(hours: hoursToExpire.round())).millisecondsSinceEpoch,
        );

  @override
  bool get containsPaymentInfo {
    String remoteName = (type == PaymentType.SENT
        ? _paymentResponse.invoiceMemo?.payeeName
        : _paymentResponse.invoiceMemo?.payerName);
    String description = _paymentResponse.invoiceMemo?.description;
    return remoteName?.isNotEmpty == true || description.isNotEmpty == true;
  }

  @override
  bool get isTransferRequest => _paymentResponse?.invoiceMemo?.transferRequest == true;

  @override
  String get description {
    final texts = getSystemAppLocalizations();
    if (type == PaymentType.WITHDRAWAL) {
      if (pending) {
        return texts.description_waiting_broadcast;
      } else {
        return texts.description_broadcast_done;
      }
    }

    final description = _paymentResponse.in


X is 1
        X is 2
        X is 3
        X is 4
    */
```

### Do...while loop: Runs at least once and if the condition is true, it continues the code execution

```php
    $x = 1;
    do {
        echo "X is $x
"; // This block will run first
        $x++;
    } while ($x > 5); // Then the condition is evaluated
     /* Output
        X is 1
    */
```

### For loop: Used when we know in advance how many times the script should run

```php
    /* Syntax
        for (initializing the counter; condition; increment the counter) {
            code to be executed for each iteration;
        }
    */

    for ($x = 1; $x <= 3; $x++) {
        echo "X is $x
";
    }

    /* Output
        X is 1
        X is 2
        X is 3
    */
```

### For...each loop: Works only on arrays, and it is used to loop through each key/value pair in an array

```php
    /* Syntax
        foreach ($array as $value) {
            code to be executed;
        }
    */

    $fruits = ["apple", "pear", "orange"];
    foreach ($fruits as $fruit) {
        echo "I like $fruit.
";
    }

    /* Output
        I like apple.
        I like pear.
        I like orange.
    */

    $person = ['name' => 'Jon', 'pet' => 'dog'];
    foreach ($person as $key => $value) {
        echo "$key: $value
";
    }

    /* Output
        name: Jon
        pet: dog
    */
```

### Break and continue statement

```php
    // The break statement can be used to jump out of a loop.
    for ($x = 1; $x < 5; $x++) {
        if ($x == 4) {
            break; // Jumps out of the loops when x is 4
        }
        echo "X is: $x
";
    }

    /* Output
        X is: 1
        X is: 2
        X is: 3
    */
```

```php
    // The continue statement breaks one iteration of the loop if a specified condition occurs, then continues with the next iteration in the loop..
    for ($x = 1; $x <= 5; $x++) {
        if ($x == 4) {
            continue; // Value 4 is skipped/ignored
        }
        echo "X is: $x
";
    }

    /* Output
        X is: 1
        X is: 2
        X is: 3
        X is: 5
    */
```

## Functions

A function declaration starts with the keyword `function`, followed by the name, and it must start with a letter or an underscore. *Function names are NOT case-sensitive*.

### Functions scope

Functions have their own scope

```php
    $name = 'Jon'; // Global variable

    function greet() {
        $user = $name; // $name is not defined
        global $name; // To access global variables, use 'global' keyword
        echo 'Hello ' . $name;
    }

    function sayHi() {
        $msg = 'Hello World!'; // Only accessible inside this function
    }

    echo $msg; // ERROR: $msg is not defined
```

### Simple function

```php
    // Function declaration
    function greet() {
        echo 'Hello World!';
    }

    // Function execution
    greet(); // Hello World!
```

### Function with parameters

```php
     // Function declaration
    function greetGuest($name) {
        echo "Hello $name";
    }

    // Function execution
    greetGuest('Jon'); // Hello Jon
    greetGuest(); // ERROR : Need


redicate = `printByValue(objectList, "Objects with value less than 25", new Predicate<SomeClass>() {
  @Override
  public boolean test(SomeClass obj) {
      return obj.getValue() < 25;
  }
});`;

  function = `Function<Student, String> getLastName = (Student student) -> {
  return student.getName().substring(student.getName().indexOf(' ') + 1);
};

// get the last name of the second student
String lastName = getLastName.apply(students.get(1));`

  moreFunctions = `Function<Student, String> getFirstName = (Student student) -> {
  return student.getName().substring(0, student.getName().indexOf(' '));
};

private static String getAName(Function<Student, String> getName, Student student) {
  return getName.apply(student);
}

// call getFirstName with getAName
System.out.println(getAName(getFirstName, student));

// call getLastName with getAName
System.out.println(getAName(getFirstName, employee));`;

  chainedFunc = `Function<Student, String> upperCase = student -> student.getName().toUpperCase();

Function chainedFunction = getLastName.andThen(upperCase);

// print the last name of the first student in uppercase
System.out.println(chainedFunction.apply(students.get(0)));`;

  bifunction = `BiFunction<String, Student, String> concatAge = (String name, Student student) -> {
  return name.concat(" " + student.getAge());
};

String upperName = upperCase.apply(students.get(0));

// pass the returns of upperName and get() to concatAge.apply()
System.out.println(concatAge.apply(upperName, students.get(0)));`;

  streams = `List<String> someBingoNumbers = Arrays.asList(
  "N40", "N36",
    "B12", "B6",
    "G53", "G49", "G60", "G50", "g64",
    "I26", "I17", "I29",
    "O71");

// each method is part of the Stream interface
someBingoNumbers.stream()
        // pass each element as the argument to String.toUpperCase()
        // and return them to the stream
        .map(String::toUpperCase)
        // pass a predicate here; only elements s which return true pass here
        .filter(s->s.startsWith("G"))
        .sorted()
        .forEach(System.out::println);`;

  moreStreams = `Stream<String> ioNumberStream = Stream.of("I26", "I17", "I29", "O71");
Stream<String> inNumberStream = Stream.of("N40", "N36", "I26", "I17", "I29", "O71");
Stream<String> concatStream = Stream.concat(ioNumberStream, inNumberStream);

System.out.println(concatStream
        .distinct()
        .peek(System.out::println)
        .count());`;

  evenMoreStreams = `ArrayList<SomeClass> list = stream(someCollection)
  .map(SomeClass::someStaticMethod)
  .collect(Collectors.toList);`

flatMap = `// departments is a List, which also contains a List of employees
departments.stream()
.flatMap(department -> department.getEmployees().stream())
// print the employees, by department; the department is not printed
.forEach(System.out::println);`;

savingStream = `Map<Integer, List<Employee>> groupedByAge = departments.stream()
.flatMap(department -> department.getEmployees().stream())
// gather the employees and group them by age
.collect(Collectors.groupingBy(employee -> employee.getAge()));`

reduceStream = `departments.stream()
.flatMap(department -> department.getEmployees().stream())
// e1 and e2 are employees, through a BiFunction, to return the youngest employee
.reduce((e1, e2) -> e1.getAge() < e2


l 	1
eff_2      ds.l 	1
txt_ptr    ds.l 	1
coor_ptr   ds.l 	1
eff_tab1   ds.b 	244*17
eff_tab2   ds.b 	244*17

;
; ***************************************************************
; Donnees & variables pour le deplacement du cercle
; ***************************************************************
;

; ---------------------------------------------------------------
;               - SCRIPT DE DEPLACEMENT DU CERCLE -
;
; dc.l nbr_fois,wave_n,fin_wave
;
;          nbr_fois: Nbre de fois que le cercle fera le deplacement
;          wave_n  : Type de deplacement (0 < n < 4)
;          fin_wave: Adresse de fin du deplacement wave_n
;
; wave_0 : Le cercle ne bouge pas ...!
; wave_1 : Le cercle de deplace a gauche & droite
; wave_2 : Le cercle rebondit
; wave_3 : Le cercle rebondit et se deplace a gauche & a droite
; wave_4 : Le cercle tourne en spirale et revient a sa place
;
; ---------------------------------------------------------------

script     dc.l 	0002,wave_2,wave_2+0136
           dc.l 	0001,wave_4,wave_4+0728
           dc.l 	0001,wave_3,wave_3+0544
           dc.l 	0001,wave_1,wave_1+3600
           dc.l 	0200,wave_0,wave_0+0004
           dc.l 	0002,wave_4,wave_4+0728
           dc.l 	0002,wave_3,wave_3+0544
           dc.l 	0004,wave_2,wave_2+0136
           dc.l 	0001,wave_1,wave_1+3600
           dc.l 	0004,wave_4,wave_4+0728
           dc.l 	0200,wave_0,wave_0+0004
           dc.l 	0004,wave_4,wave_4+0728

; -------------------------
; Fichiers des deplacements
; -------------------------

wave_0     dc.w 	0,0         	        ; Fin: wave_0 + 0004
wave_1     incbin 	"A:\CDOC.SRC\DATA\WAVE_1.DAT" ; Fin: wave_1 + 3600
wave_2     incbin 	"A:\CDOC.SRC\DATA\WAVE_2.DAT" ; Fin: wave_2 + 0136
wave_3     incbin 	"A:\CDOC.SRC\DATA\WAVE_3.DAT" ; Fin: wave_3 + 0544
wave_4	incbin 	"A:\CDOC.SRC\DATA\WAVE_4.DAT" ; Fin: wave_4 + 0728

; --------------------
;
; Tables des ordonnes
;
; --------------------

y_tab:

i          set 0
           rept 200
           dc.w i
i          set i+160
           endr

; -----------------------------
; Variables pour le deplacement
; -----------------------------

script_ptr ds.l 	1            ; Adresse en cours (script)
wave_ptr   ds.l 	1            ; Adresse en cours (coordonnees)
wave_deb   ds.l 	1            ; Adresse debut wave
wave_end   ds.l 	1            ; Adresse fin wave
anim       ds.l 	1            ; Nombre de fois

;
; ***************************************************************
; Donnees & variables pour l'ense


 from './models';

describe('mask-formatter', () => {
  function expectOutput(input: InputObject, expected: StringMaskResult) {
    const processed = StringMask.process(
      input.value,
      input.pattern,
      input.options
    );

    expect(processed).toEqual(expected);
  }

  describe('number', () => {
    it('reverse \'#.##0,00\' should format \'7612345678980\' to \'76.123.456.789,80\'', () => {
      const input = {
        value: '7612345678980',
        pattern: '#.##0,00',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '76.123.456.789,80',
        valid: true,
      });
    });

    it('reverse \'#.##0,00\' should format \'112\' to \'1,12\'', () => {
      const input = {
        value: '112',
        pattern: '#.##0,00',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '1,12',
        valid: true
      });
    });

    it('reverse \'#.##0,00\' should format \'12345678a80\' to \',80\' and be invalid', () => {
      const input = {
        value: '12345678a80',
        pattern: '#.##0,00',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: ',80',
        valid: false
      });
    });

    it('reverse \'#.##0\' should format \'123456789\' to \'123.456.789\'', () => {
      const input = {
        value: '123456789',
        pattern: '#.##0',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '123.456.789',
        valid: true
      });
    });

    it('reverse \'#0\' should format \'123456788\' to \'123456788\'', () => {
      const input = {
        value: '123456788',
        pattern: '#0',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '123456788',
        valid: true
      });
    });

    it('reverse \'#,0\' should format \'123456788\' to \'12345678,8\'', () => {
      const input = {
        value: '123456788',
        pattern: '#,0',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '12345678,8',
        valid: true
      });
    });

    /**
     * @whyIgnored Test seems incorrect.
     * '0' is a required token but has a default value. The default value could be applied in these cases
     * but at the moment that implementation breaks other tests
     */
    xit('reverse \'#.##0,00\' should format \'1\' to \'0,01\'', () => {
      const input = {
        value: '1',
        pattern: '#.##0,00',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '0,01',
        valid: true
      });
    });
  });

  describe('percentage', () => {
    it('reverse \'#.##0,00 %\' should format \'7612345678980\' to \'76.123.456.789,80 %\'', () => {
      const input = {
        value: '7612345678980',
        pattern: '#.##0,00 %',
        options: {
          reverse: true
        }
      };

      expectOutput(input, {
        result: '76.123.456


round: #2f2f2f;
}

.window.focus #main .sidebar .nav-group-item.active .filename {
    color: #CCC;
}

.window.focus #main .sidebar .nav-group-item.nav-tooltip {
    color: #7b7b7b;
}

.window.focus #toolbar .button:hover .icon {
    color: #999;
}

.window.focus #toolbar .button.selected .icon {
    color: #CCC;
}

/* e.g. filename input */
.window.focus #main .sidebar .footer input {
    background: #333;
    border: 1px solid #888;
    color: #888;
}

.window.focus #main .sidebar .footer .checkbox {
    color: #888;
}

.window.focus #toolbar {
    border-bottom: 1px solid #222;
}

.window.focus #toolbar div.issuesSummary .issueCount {
    color: #888;
}

.window.focus #main .sidebar .footer {
    border-top: 1px solid #555;
}

.window.focus .ace_editor .ace_marker-layer .ace_selection {
    background-color: #444;
}

.window.focus .ace_editor .ace_marker-layer .ace_selected-word {
    background-color: #999;
    border-color: #dedede;
}

.window.focus #editor,
.window.focus #player,
.window.focus .ace_editor .ace_cursor {
    /*color: #f0f0f0; */
    color: #faf1c6;
}

.window.focus .ace_editor .ace_indent-guide {
    opacity: .1;
}

.window.focus .ace_editor .ace_marker-layer .ace_active-line {
    background-color: rgba(255, 255, 255, 0.05);
}

.window.focus #player hr {
    border-top-color: #444;
}

.window.focus #player p.choice a:hover {
    color: #999;
}

.window.focus #editor .ace-error {
    background: #580000
}

.window.focus #editor .ace_todo,
.window.focus #editor .ace-todo {
    background: #5f6238;
    color:  #444;
}

.window.focus #editor .ace_warning,
.window.focus #editor .ace-warning {
    background: #0f3553;
}

.window.focus .ace_editor span.ace_flow.ace_declaration,
.window.focus .ace_editor span.ace_divert,
.window.focus .ace_editor span.ace_choice.ace_label,
.window.focus .ace_editor span.ace_gather.ace_label,
.window.focus .ace_editor span.ace_glue,
.window.focus .ace_editor span.ace_include,
.window.focus .ace_editor span.ace_external {
    color: #434f53;
}

.window.focus .ace_editor span.ace_choice.ace_bullets,
.window.focus .ace_editor span.ace_choice.ace_weaveBracket,
.window.focus .ace_editor span.ace_gather.ace_bullets {
    color:  #535353;
}

.window.focus .ace_editor span.ace_var-decl,
.window.focus .ace_editor span.ace_list-decl {
    color: #535353;
}
.window.focus .ace_editor span.ace_logic:not(.ace_innerContent) {
    color: #535353;
}

.window.focus #main.hideTags .ace_editor span.ace_tag {
    color: #535353;
}

/* Custom instructions, e.g. >>> */
.window.focus .ace_editor span.ace_customInstruction {
    color: #5f4c4c;
}

.window.focus ::-


lic = { styles = { "bold", "italic", "underline" } },
        htmlUnderline = { link = "Underlined" },
        htmlUnderlineItalic = { styles = { "italic", "underline" } },
        htmlItalic = { styles = { "italic" } },
        htmlTag = { link = "Delimiter" },
        htmlEndTag = { link = "Delimiter" },
        htmlTagN = { link = "Tag" },
        htmlTagName = { link = "Label" },
        htmlArg = { link = "Type" },
        htmlScriptTag = { link = "SpecialChar" },
        htmlSpecialTagName = { link = "Special" },
        htmlString = { link = "String" },
    }
end

return M


ts: []inputInfo{
				{0, 1048576}, // R20
			},
			clobbers: 1048576, // R20
		},
	},
	{
		name:           "LoweredZeroShort",
		auxType:        auxInt64,
		argLen:         2,
		faultOnNilArg0: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
			},
		},
	},
	{
		name:           "LoweredQuadZeroShort",
		auxType:        auxInt64,
		argLen:         2,
		faultOnNilArg0: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
			},
		},
	},
	{
		name:           "LoweredQuadZero",
		auxType:        auxInt64,
		argLen:         2,
		clobberFlags:   true,
		faultOnNilArg0: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1048576}, // R20
			},
			clobbers: 1048576, // R20
		},
	},
	{
		name:           "LoweredMove",
		auxType:        auxInt64,
		argLen:         3,
		clobberFlags:   true,
		faultOnNilArg0: true,
		faultOnNilArg1: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1048576}, // R20
				{1, 2097152}, // R21
			},
			clobbers: 3145728, // R20 R21
		},
	},
	{
		name:           "LoweredMoveShort",
		auxType:        auxInt64,
		argLen:         3,
		faultOnNilArg0: true,
		faultOnNilArg1: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
				{1, 1073733624}, // R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29
			},
		},
	},
	{
		name:           "LoweredQuadMove",
		auxType:        auxInt64,
		argLen:         3,
		clobberFlags:   true,
		faultOnNilArg0: true,
		faultOnNilArg1: true,
		unsafePoint:    true,
		reg: regInfo{
			inputs: []inputInfo{
				{0, 1048576}, // R20
				{1, 2097152}, // R21
			},
			clobbers: 3145728, // R20 R21
		},
	},
	{
		name:           "LoweredQuadMoveShort",
		auxType:        auxInt64,
		argLen:         3,
		faultOnNilArg0: true,
		faultOnNilArg1: true


dcrumb .active a,
.toolbar .breadcrumb a.active {
  font-weight: bold;
}

.actions {
  margin: 0;
  list-style: none;
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 1;
}

.actions li {
  display: inline-block;
  margin-right: 5px;
}
.actions li ul li {
  display: block;
}

.actions li:last-of-type {
  margin-right: 0;
}

.hide-heading {
  display: none;
}

.page-header {
  margin-top: 1.5rem;
  border-bottom: 1px solid #ddd;
  background-color: #f6f6f6;
  border-radius: 0 3px 0 0;
}
.page-header.module-content {
  padding-top: 0.75rem;
  padding-bottom: 0;
}
.page-header::after {
  display: block;
  clear: both;
  content: "";
}
.page-header .nav-tabs {
  float: left;
  margin-bottom: -1px;
}
.page-header .nav-tabs li a {
  padding: 10px 15px;
}
.page-header .nav-tabs li.active a,
.page-header .nav-tabs a:hover {
  border: 1px solid #dee2e6;
  background-color: #fff;
  border-bottom-color: transparent;
}
.page-header .content_action {
  float: right;
  margin-top: -3px;
}

.no-nav .page-header {
  border-radius: 3px 3px 0 0;
}

.nav-tabs-plain {
  padding: 0 25px;
}
.nav-tabs-plain > .active > a, .nav-tabs-plain > .active > a:hover {
  background-color: #fff;
}

@media (max-width: 575.98px) {
  .page-header .nav-tabs {
    margin: 5px 10px 10px -5px;
    border: none;
  }

  .page-header .nav-tabs > li {
    float: none;
  }

  .page-header .nav-tabs > li a {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
  }

  .page-header .nav-tabs > .active > a,
.page-header .nav-tabs > .active > a:hover,
.page-header .nav-tabs > .active > a:focus {
    border-bottom-color: #dddddd;
  }
}
.prose h1, .prose .h1,
.prose heading-1 h2,
.prose heading-1 .h2,
.prose heading-2 {
  margin-bottom: 15px;
}
.prose h3, .prose .h3,
.prose heading-3 {
  margin-bottom: 10px;
}

.ellipsis {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wrapper {
  position: relative;
  min-height: 300px;
  background-color: #fff;
}
.wrapper::after {
  display: block;
  clear: both;
  content: "";
}
@media (min-width: 768px) {
  .wrapper:before {
    content: "";
    display: block;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 25%;
    border-right: 1px solid #ddd;
    z-index: 1;
  }
  .wrapper.no-nav:before {
    display: none;
  }
  .wrapper.no-nav .module > .page-header {
    margin-top: 0;
  }
}

[role=main],
.main {
  position: relative;
}


fun `test complete true in match`() = doSingleCompletion("""
        fn main() { match tr/*caret*/ { } }
    """, """
        fn main() { match true/*caret*/ { } }
    """)
}
/*
 * Use of this source code is governed by the MIT license that can be
 * found in the LICENSE file.
 */

package org.rust.lang.core.completion

class RsPartialParseCompletionTest : RsCompletionTestBase() {
    fun `test match`() = @Suppress("DEPRECATION") checkSingleCompletion("tokenizer", """
            pub fn parse(tokenizer: lexer::Tokenizer) -> ast::Expr {
                match tok/*caret*/
            }
    """)

    fun `test if let`() = @Suppress("DEPRECATION") checkSingleCompletion("tokenizer", """
        pub fn parse(tokenizer: lexer::Tokenizer) -> ast::Expr {
            if let Some(_) = tok/*caret*/
        }
    """)

    fun `test while let`() = @Suppress("DEPRECATION") checkSingleCompletion("numbers", """
        fn main() {
            let numbers = vec![1, 2, 3].iter();
            while let Some(_) = num/*caret*/
        }
    """)

    fun `test if`() = @Suppress("DEPRECATION") checkSingleCompletion("quuz", """
        fn foo(quuz: bool) {
            if qu/*caret*/
        }
    """)

    fun `test while`() = @Suppress("DEPRECATION") checkSingleCompletion("condition", """
        fn foo() {
            let condition: bool = true;

            while cond/*caret*/
        }
    """)

    fun `test type params`() = @Suppress("DEPRECATION") checkSingleCompletion("Walrus", """
        struct Walrus {
            stomach: Vec<()>
        }

        fn make_walrus() -> Result<(), Wal/*caret*/
    """)

    fun `test impl`() = @Suppress("DEPRECATION") checkSingleCompletion("AutomatonTrait", """
        trait AutomatonTrait { }

        impl Auto/*caret*/
    """)

    fun `test impl 2`() = @Suppress("DEPRECATION") checkSingleCompletion("AutomatonStruct", """
        struct AutomatonStruct { }

        impl Auto/*caret*/
    """)

    fun `test impl 3`() = @Suppress("DEPRECATION") checkSingleCompletion("FooBar", """
        trait Automaton { }

        struct FooBar;

        impl Automaton for Foo/*caret*/
    """)

    fun `test let`() = @Suppress("DEPRECATION") checkSingleCompletion("Spam", """
        struct Spam;

        fn main() {
            let x = Sp/*caret*/
            ()
        }
    """)

    fun `test impl method type`() = @Suppress("DEPRECATION") checkSingleCompletion("FooBar", """
        pub struct FooBar;

        struct S;

        trait T {
            fn foo(self, f: &mut FooBar);
        }

        impl T for S {
            fn foo(self, f: Fo/*caret*/)
        }
    """)

    fun `test struct field 1`() = @Suppress("DEPRECATION") checkSingleCompletion("foobar", """
        struct S {
            foobar: i32,
            frobnicator: i32,
        }

        fn main() {
            let _ = S {
                foo/*caret*/
                frobnicator: 92
            };
        }
    """)

    fun `test static`() = @Suppress("DEPRECATION") checkSingleCompletion("FooBar", """
        struct FooBar;

        static C: Foo/*caret*/
    """)

    fun `test const`() = @Suppress("DEPRECATION") checkSingleCompletion("FooBar", """
        struct FooBar;

        const C: Foo/*caret*/
    """)

    f


 engine.Seal(chain, block); err != nil {
			t.Errorf("Failed to seal the block: %v", err)
		}
	}()

	newHeadCh := make(chan bccore.ChainHeadEvent, 10)
	sub := chain.SubscribeChainHeadEvent(newHeadCh)
	defer sub.Unsubscribe()

	select {
	case newHead := <-newHeadCh:
		if newHead.Block.Hash() != expectedBlock.Hash() {
			t.Errorf("Expected result block hash of %v, but got %v", expectedBlock.Hash(), newHead.Block.Hash())
		}
	case <-time.After(1 * time.Second):
		t.Fatal("Timed out when waiting for a new block")
	}
}

func TestVerifyHeader(t *testing.T) {
	g := NewGomegaWithT(t)
	chain, engine := newBlockChain(1, true)
	defer stopEngine(engine)
	defer chain.Stop()

	// errEmptyAggregatedSeal case
	block := makeBlockWithoutSeal(chain, engine, chain.Genesis())
	block, _ = engine.signBlock(block)
	err := engine.VerifyHeader(chain, block.Header(), false)
	g.Expect(err).Should(BeIdenticalTo(errEmptyAggregatedSeal))

	// short extra data
	header := block.Header()
	header.Extra = []byte{}
	err = engine.VerifyHeader(chain, header, false)
	g.Expect(err).Should(BeIdenticalTo(errInvalidExtraDataFormat))

	// incorrect extra format
	header.Extra = []byte("0000000000000000000000000000000012300000000000000000000000000000000000000000000000000000000000000000")
	err = engine.VerifyHeader(chain, header, false)
	g.Expect(err).Should(BeIdenticalTo(errInvalidExtraDataFormat))

	// invalid timestamp
	block = makeBlockWithoutSeal(chain, engine, chain.Genesis())
	header = block.Header()
	header.Time = chain.Genesis().Time() + engine.config.BlockPeriod - 1
	err = engine.VerifyHeader(chain, header, false)
	g.Expect(err).Should(BeIdenticalTo(errInvalidTimestamp))

	// future block
	block = makeBlockWithoutSeal(chain, engine, chain.Genesis())
	header = block.Header()
	header.Time = uint64(now().Unix() + 10)
	err = engine.VerifyHeader(chain, header, false)
	g.Expect(err).Should(BeIdenticalTo(consensus.ErrFutureBlock))
}

func TestVerifySeal(t *testing.T) {
	g := NewGomegaWithT(t)
	numValidators := 1
	genesisCfg, nodeKeys := getGenesisAndKeys(numValidators, true)
	chain, engine, _ := newBlockChainWithKeys(false, common.Address{}, false, genesisCfg, nodeKeys[0])
	defer stopEngine(engine)
	defer chain.Stop()

	genesis := chain.Genesis()

	// cannot verify genesis
	err := engine.VerifySeal(genesis.Header())
	g.Expect(err).Should(BeIdenticalTo(errUnknownBlock))

	// should verify
	block, err := makeBlock(nodeKeys, chain, engine, genesis)
	g.Expect(err).ToNot(HaveOccurred())
	header := block.Header()
	err = engine.VerifySeal(header)
	g.Expect(err).ToNot(HaveOccurred())

	// change header content and expect to invalidate signature
	header.Number = big.NewInt(4)
	err = engine.VerifySeal(header)
	g.Expect(err).Should(BeIdenticalTo(errInvalidSignature))

	// delete istanbul extra data and expect invalid extra data format
	header = block.Header()
	header.Extra = nil
	err = engine.VerifySeal(header)
	g.Expect(err).Should(BeIdenticalTo(errInvalidExtraDataFor


target.Target(target, host=env.target_host),
            name="dense",
        )
    else:
        mod = tvm.build(
            s,
            [data, kernel, res],
            target=tvm.target.Target(target, host=env.target_host),
            name="dense",
        )
    temp = utils.tempdir()
    mod.save(temp.relpath("dense.o"))
    remote.upload(temp.relpath("dense.o"))
    f = remote.load_module("dense.o")
    dev = remote.device(str(target))

    res_np = np.zeros(topi.utils.get_const_tuple(res.shape)).astype(res.dtype)
    data_arr = tvm.nd.array(data_np, dev)
    kernel_arr = tvm.nd.array(kernel_np, dev)
    res_arr = tvm.nd.array(res_np, dev)
    time_f = f.time_evaluator("dense", dev, number=samples)

    # In vta sim mode, collect simulator runtime statistics
    stats = {}
    cost = None
    if env.TARGET in ["sim", "tsim"]:
        # Check if we're in local RPC mode (allows us to rebuild the
        # runtime on the fly when varying the VTA designs)
        local_rpc = int(os.environ.get("VTA_LOCAL_SIM_RPC", "0"))
        if local_rpc:
            if env.TARGET == "sim":
                remote.get_function("vta.simulator.profiler_clear")()
            else:
                remote.get_function("vta.tsim.profiler_clear")()
            cost = time_f(data_arr, kernel_arr, res_arr)
            if env.TARGET == "sim":
                stats = json.loads(remote.get_function("vta.simulator.profiler_status")())
            else:
                stats = json.loads(remote.get_function("vta.tsim.profiler_status")())
        else:
            simulator.clear_stats()
            cost = time_f(data_arr, kernel_arr, res_arr)
            stats = simulator.stats()
    else:
        cost = time_f(data_arr, kernel_arr, res_arr)

    # Check correctness
    correct = False
    if check_correctness:
        res_orig = res_arr.numpy()
        if data_pack:
            res_orig = res_orig.reshape(batch_size, out_feat)
        res_ref = res_ref >> 8
        res_ref = np.clip(res_ref, 0, (1 << env.OUT_WIDTH - 1) - 1)
        res_ref = res_ref.astype(env.out_dtype)
        correct = np.allclose(res_orig, res_ref)

    gops = (num_ops / cost.mean) / float(10**9)
    status = "PASSED" if correct else "FAILED"
    if "arm_cpu" in target.keys:
        device = "CPU"
    elif "vta" in target.keys:
        device = "VTA"
    print("%s DENSE TEST %s: Time cost = %g sec/op, %g GOPS" % (device, status, cost.mean, gops))

    return correct, cost, stats

def test_gemm(device="vta", batch=128, in_feat=128, out_feat=128):
    def _run(env, remote):
        if device == "vta":
            target = env.target
            if env.TARGET not in ["sim", "tsim"]:
                assert tvm.runtime.enabled("rpc")
                program_fpga(remote, bitstream=None)
                reconfig_runtime(remote)
        elif device == "arm_cpu":
            target = env.target_vta_cpu
        with autotvm.tophub.context(target):  # load pre-tuned schedule parameters
            run_gemm(env, remote, target, batch, in_feat, out_feat)

    vta.testing.run(_run)

if __name__ == "__main__":
    test_gemm("vta", 16, 512, 1008)


slot1 = ys.Battle.BattleEvent
slot2 = ys.Battle.BattleFormulas
slot3 = ys.Battle.BattleConst
slot4 = ys.Battle.BattleConfig
slot5 = ys.Battle.BattleDataFunction
slot6 = ys.Battle.BattleAttr
slot7 = ys.Battle.BattleVariable

function ys.Battle.BattleDataProxy.__debug__BlockCldUpdate__(slot0, slot1)
	slot0:UpdateCountDown(slot1)

	for slot5, slot6 in pairs(slot0._fleetList) do
		slot6:UpdateMotion()
	end

	for slot5, slot6 in pairs(slot0._unitList) do
		slot6:Update(slot1)
	end

	for slot5, slot6 in pairs(slot0._bulletList) do
		slot7 = slot6:GetSpeed()

		if slot0._bulletRightBound < slot6:GetPosition().x and slot7.x > 0 or slot8.z < slot0._bulletLowerBound and slot7.z < 0 then
			slot0:RemoveBulletUnit(slot6:GetUniqueID())
		elseif slot8.x < slot0._bulletLeftBound and slot7.x < 0 and slot6:GetType() ~= uv0.BulletType.BOMB then
			slot0:RemoveBulletUnit(slot6:GetUniqueID())
		else
			slot6:Update(slot1)

			if slot0._bulletUpperBound < slot8.z and slot7.z > 0 or


ivate sealed class ElementComparer : IComparer<IPostPolicyElement>
            {
                public int Compare(IPostPolicyElement x, IPostPolicyElement y) =>
                    x.ElementName.CompareTo(y.ElementName);
            }
        }
    }
}


 ; Load R22 with byte cont high if flash page is large.
#endif

	ldi	r21, ((APP_SECTION_PAGE_SIZE)&0xFF)   ; Load R21 with byte count.

SP_ReadFlashPage_1:
	elpm	r24, Z+                         ; Load Flash bytes into R18:r19
	elpm	r25, Z+
	st	X+, r24                         ; Write bytes to buffer.
	st	X+, r25

#if APP_SECTION_PAGE_SIZE > 512
	subi	r21, 1                          ; Decrement word count.
	sbci	r22, 0
#else
	dec	r21                             ; Decrement word count.
#endif

	brne	SP_ReadFlashPage_1              ; Repeat until byte count is zero.

	out	RAMPZ, r19
	ret

; ---
; This routine writes the page buffer to the Flash page at address R25:R24:R23:R22
; in the application section. The address can point anywhere inside the page.
;
; Input:
;     R25:R24:R23:R22 - Byte address into Flash page.
;
; Returns:
;     Nothing.
; ---

.section .text
.global SP_WriteApplicationPage

SP_WriteApplicationPage:
	in	r19, RAMPZ                       ; Save RAMPZ, which is restored in SP_CommonSPM.
	out	RAMPZ, r24                       ; Load RAMPZ with the MSB of the address.
	movw	r24, r22                         ; Move low bytes of address to ZH:ZL from R23:R22
	ldi	r20, NVM_CMD_WRITE_APP_PAGE_gc   ; Prepare NVM command in R20.
	jmp	SP_CommonSPM                     ; Jump to common SPM code.

; ---
; This routine erases first and then writes the page buffer to the
; Flash page at address R25:R24:R23:R22 in the application section. The address
; can point anywhere inside the page.
;
; Input:
;     R25:R24:R23:R22 - Byte address into Flash page.
;
; Returns:
;     Nothing.
; ---

.section .text
.global SP_EraseWriteApplicationPage

SP_EraseWriteApplicationPage:
	in	r19, RAMPZ                            ; Save RAMPZ, which is restored in SP_CommonSPM.
	out	RAMPZ, r24                            ; Load RAMPZ with the MSB of the address.
	movw	r24, r22                              ; Move low bytes of address to ZH:ZL from R23:R22
	ldi	r20, NVM_CMD_ERASE_WRITE_APP_PAGE_gc  ; Prepare NVM command in R20.
	jmp	SP_CommonSPM                          ; Jump to common SPM code.

; ---
; This routine flushes the Flash page buffer.
;
; Input:
;     Nothing.
;
; Returns:
;     Nothing.
; ---

.section .text
.global SP_EraseFlashBuffer

SP_EraseFlashBuffer:
	in	r19, RAMPZ                          ; Save RAMPZ, which is restored in SP_CommonSPM.
	ldi	r20, NVM_CMD_ERASE_FLASH_BUFFER_gc  ; Prepare NVM command in R20.
	jmp	SP_CommonSPM                        ; Jump to common SPM code.

; ---
; This routine erases the page at address R25:R24:R23:R22 in the Boot section. The
; address can point anywhere inside the page.
;
; Input:
;     R25:R24:R23:R22 - Byte address into Flash page.
;
; Returns:
;     Nothing.
; ---

.section .text
.global SP_EraseBootPage

SP_EraseBootPage:
	in	r19, RAMPZ                         ; Save RAMPZ, which is restored in SP_CommonSPM.
	out	RAMPZ


e}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small,h4 .small,h5 .small,h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#8a6d3b}.text-warning:hover{color:#66512c}.text-danger{color:#a94442}.text-danger:hover{color:#843534}.text-success{color:#3c763d}.text-success:hover{color:#2b542c}.text-info{color:#31708f}.text-info:hover{color:#245269}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min


;
import javax.media.opengl.glu.GLU;
import javax.vecmath.Point2d;
import javax.vecmath.Vector3d;

import kendzi.jogl.util.DrawUtil;
import kendzi.jogl.model.render.ModelRender;
import kendzi.jogl.texture.TextureCacheServiceImpl;
import kendzi.josm.kendzi3d.jogl.RenderJOSM;
import kendzi.josm.kendzi3d.jogl.model.ground.Ground;
import kendzi.josm.kendzi3d.jogl.model.roof.mk.ui.CameraMoveListener;
import kendzi.josm.kendzi3d.jogl.model.roof.mk.ui.SimpleMoveAnimator;
import kendzi.josm.kendzi3d.service.TextureLibraryService;
import kendzi.josm.kendzi3d.ui.debug.AxisLabels;
import kendzi.math.geometry.point.PointUtil;

import org.apache.log4j.Logger;

/**
 * Draws 3d.
 *
 * @author Tomasz Kędziora (Kendzi)
 *
 */
public class Kendzi3dTitleGLEventListener {

    /** Log. */
    private static final Logger log = Logger.getLogger(Kendzi3dTitleGLEventListener.class);

    /**
     * Position of sun. XXX
     */
    private float [] lightPos = new float[] { 0.0f, 1.0f, 1.0f, 0f };

    /**
     * Animator of camera movement.
     */
    private SimpleMoveAnimator simpleMoveAnimator;

    /**
     * Key and mouse listener for camera movement.
     */
    private CameraMoveListener cameraMoveListener;

    /**
     * Axis labels.
     */
    private AxisLabels axisLabels;

    /**
     * Model renderer.
     */
    @Inject
    private ModelRender modelRender;

    /**
     * Temporary. Renderer of josm opengl object.
     */
    @Inject
    private RenderJOSM renderJosm;

    /**
     * Ground.
     */
    private Ground ground;

    /**
     * Texture cache service.
     */
    @Inject
    private TextureCacheServiceImpl textureCacheService;

    /**
     * Texture library service.
     */
    @Inject
    private TextureLibraryService textureLibraryService;

    /**
     * Default constructor.
     */
    public Kendzi3dTitleGLEventListener() {

        this.ground  = new Ground(this.textureCacheService, this.textureLibraryService);

        this.axisLabels = new AxisLabels();

        this.simpleMoveAnimator = new SimpleMoveAnimator();

    }

    //    Point2d camraCenter;
    //    Point2d leftTopPoint;
    //    Point2d rightBottomPoint;

    //    private double cameraAngleX;
    //
    //
    //    private double cameraAngleY;

    public void display(
            GLAutoDrawable pDrawable,
            Point2d camraCenter,
            double cameraAngleX,
            double cameraAngleY) {

        GL2 gl = pDrawable.getGL().getGL2();
        // System.err.println("INIT GL IS: " + gl.getClass().getName());

        GLU glu = new GLU();

        // _direction_
        gl.glLightfv(GLLightingFunc.GL_LIGHT0, GLLightingFunc.GL_POSITION, this.lightPos, 0);

        //        // Clear the drawing area
        //        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
        //
        //
        //
        //
        //        // Reset the current matrix to the "identity"
        //        gl.glLoadIdentity();
        //
        //        gl.glMatrixM


client: HyperClient,
        mut request: RequestBuilder,
        payload: Result<String, serde_json::Error>,
    ) -> QueryDocumentRequest {
        request
            .header(HEADER_DOCUMENTDB_ISQUERY, HeaderValue::from_static("true"))
            .header(header::CONTENT_TYPE, HeaderValue::from_static(QUERY_CONTENT_TYPE));
        QueryDocumentRequest {
            hyper_client,
            request,
            payload,
        }
    }

    request_option!(max_item_count, u64, HEADER_MAX_ITEM_COUNT);
    request_bytes_ref!(continuation_token, str, HEADER_CONTINUATION);
    request_option!(enable_cross_partition, bool, HEADER_DOCUMENTDB_QUERY_ENABLECROSSPARTITION);
    request_option!(consistency_level, ConsistencyLevel, HEADER_CONSISTENCY_LEVEL);

    pub fn execute<T: DeserializeOwned>(self) -> impl Future<Item = QueryDocumentResponse<T>, Error = AzureError> {
        trace!("get_document called(request == {:?}", self.request);
        self.execute_json().and_then(Self::convert_query_document_type)
    }

    pub fn execute_json(self) -> impl Future<Item = QueryDocumentResponse<serde_json::Value>, Error = AzureError> {
        trace!("query_document called(request == {:?}", self.request);
        let hc = self.hyper_client;
        let mut req = self.request;
        future::result(self.payload)
            .from_err()
            .and_then(move |payload| Ok(req.body(payload.into())?))
            .and_then(move |r| check_status_extract_headers_and_body(hc.request(r), StatusCode::OK))
            .and_then(move |(headers, body)| Self::extract_result_json(&body, &headers))
    }

    fn extract_result_json(body: &[u8], headers: &HeaderMap) -> Result<QueryDocumentResponse<serde_json::Value>, AzureError> {
        trace!("headers == {:?}", headers);

        let additional_headers = QueryDocumentResponseAdditonalHeaders {
            // This match just tries to extract the info and convert it
            // into the correct type. It is complicated because headers
            // can be missing and also because headers.get<T> will return
            // a T reference (&T) so we need to cast it into the
            // correct type and clone it (in this case into a &str that will
            // become a String using to_owned())
            continuation_token: derive_continuation_token(headers),
            // Here we assume the Charge header to always be present.
            // If problems arise we
            // will change the field to be Option(al).
            charge: derive_request_charge(headers),
        };
        debug!("additional_headers == {:?}", additional_headers);

        let query_response_meta = serde_json::from_slice::<QueryResponseMeta>(body)?;
        debug!("query_response_meta == {:?}", &query_response_meta);

        let json = str::from_utf8(body)?;
        debug!("json == {}", json);

        let mut v: serde_json::Value = serde_json::from_slice(body)?;

        // Work on Documents section
        let mut d = v.get_mut("Documents").unwrap().take();
        debug!("\n\nd == {:?}\n\n", d);

        let docs = d.as_array_mut().unwrap().into_iter().map(|doc| {
            // We could either have a Document or a plain entry.
            // We will find out here.
            let mut doc = doc.take();

            let attrs = {
                if let Some(map) = doc.as_object_mut() {
                    DocumentAttributes::try_extract(map)
                } else {
                    None
                }
            };

            debug!("attrs == {:?}", attrs);

            QueryResult {
                document_attributes: attrs,
                re