diff --git a/ForRelease/Latest-Release/latest.zip b/ForRelease/Latest-Release/latest.zip
new file mode 100644
index 0000000..83750e7
Binary files /dev/null and b/ForRelease/Latest-Release/latest.zip differ
diff --git a/ForRelease/Latest-Release/latest/bin/Latest.js b/ForRelease/Latest-Release/latest/bin/Latest.js
new file mode 100644
index 0000000..8b07b2a
--- /dev/null
+++ b/ForRelease/Latest-Release/latest/bin/Latest.js
@@ -0,0 +1,852 @@
+/**
+ * element作成の親クラス
+ */
+class HTML_Element {
+ /**
+ * elementを作成する。(idとzは必ず指定する)
+ * @param id elementがもつid属性
+ * @param z 重なり順
+ * @param url コメントのurl(作成時は""でok)
+ * @param type elementのタイプ("PIN"や"close")
+ * @param element_type elementの属性(基本的に"div")
+ * @param click_function クリックしたときに発動する関数(指定しなくても良い)
+ */
+ constructor(id, url = "", type = "", element_type = "div", class_name = "") {
+ // elementの作成
+ this.node = document.createElement(element_type);
+ this.uniid = id;
+ this.id = this.make_id(id, type);
+ this.type = type;
+ this.element_type = type;
+ this.url = url;
+ this.class = class_name;
+ }
+ /**
+ * 各値をノードに書き込む
+ */
+ set_Value() {
+ // idの付与
+ this.node.id = this.id;
+ // classの付与
+ this.node.className = this.class;
+ }
+ /**
+ * 指定した関数をクリックしたときに発火する関数をセットする関数
+ * @param click_function クリックしたときに発火する関数
+ */
+ set_Function(click_function) {
+ // elementをクリックしたときの関数を追加
+ this.node.onclick = function () {
+ click_function();
+ };
+ }
+ /**
+ * 指定したURLから画像をセットする関数
+ * @param image セットするイメージの画像を指定する(本来は画像のURLを指定)
+ */
+ set_Image(image = "") {
+ this.node.innerHTML = image;
+ }
+ set_CurrentURL() {
+ this.url = location.origin;
+ }
+ /**
+ * 指定したidのclose-idやPIN-idを返す
+ * @param id コメントのid
+ * @param add_id 追加したいid("close"or"PIN")
+ */
+ make_id(id, add_id) {
+ if (add_id == "") {
+ return id;
+ }
+ return id + "_" + add_id;
+ }
+}
+/**
+ * PINを作成するためのclass
+ */
+class PIN_Node extends HTML_Element {
+ /**
+ * PINを作成する
+ * @param id PINのid属性
+ * @param x pin-nodeのx座標
+ * @param y pin-nodeのy座標
+ * @param z pin-nodeのz座標
+ */
+ constructor(id, x, y, set_function, url = "") {
+ super(id, url, "PIN", "div", "latest_pin");
+ this.x = x;
+ this.y = y;
+ this.set_function = set_function;
+ }
+ set_Value() {
+ super.set_Value();
+ // 位置を付与(absolute)
+ this.Set_Position_absolute(this.x, this.y);
+ // クリックしたときのアクションをセット
+ super.set_Function(this.set_function);
+ // 表示する言葉(将来的には画像)
+ // super.set_Image()
+ }
+ /**
+ * pin-nodeの座標を指定する。
+ * @param x pin-nodeのx座標
+ * @param y pin-nodeのy座標
+ */
+ Set_Position_absolute(x, y) {
+ this.node.style.position = "absolute";
+ this.node.style.left = x + "px";
+ this.node.style.top = y + "px";
+ }
+}
+/**
+ * コメントのノードを作成
+ */
+class Comment_Node extends HTML_Element {
+ constructor(id, comment, url = "") {
+ super(id, "", "", "div", "latest_comment");
+ this.comment = comment;
+ }
+ set_Value() {
+ super.set_Value();
+ // コメントの内容を付与
+ this.node.innerHTML = this.comment;
+ }
+}
+/**
+ * コメントをクローズするためのノードを作成
+ */
+class Close_Node extends HTML_Element {
+ constructor(id, set_function, url = "") {
+ super(id, "", "close", "div", "latest_close");
+ this.set_function = set_function;
+ }
+ set_Value() {
+ super.set_Value();
+ // 表示する言葉(将来的には画像)
+ super.set_Image("x");
+ // このノードをクリックしたときに発火する関数を指定
+ super.set_Function(this.set_function);
+ }
+}
+class Comments {
+ /**
+ * pin,comment,closeノードを作成するのに必要な値をセットする。
+ * @param id ノードのid
+ * @param x pinノードのx座標
+ * @param y pinノードのy座標
+ * @param z pinノードのz座標(重なり順)
+ * @param comment commentノードに表示するコメント内容
+ */
+ constructor(id, x, y, z = "1000", comment, url = "") {
+ this.comment_node = new Comment_Node(id, comment, url);
+ this.cls_node = new Close_Node(id, this.close_comment.bind(this), url);
+ this.pin_node = new PIN_Node(id, x, y, this.Display_Comment.bind(this), url);
+ this.id = id;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.comment = comment;
+ this.url = url;
+ }
+ /**
+ * 各ノードを作成する。
+ */
+ createComments() {
+ this.comment_node.set_Value();
+ this.cls_node.set_Value();
+ this.pin_node.set_Value();
+ }
+ /**
+ * 作成したノードをサイトに追加する
+ */
+ appendComments() {
+ document.body.appendChild(this.comment_node.node);
+ document.body.appendChild(this.cls_node.node);
+ document.body.appendChild(this.pin_node.node);
+ }
+ /**
+ * コメントを新規作成時に実行。各ノードに現在のURLを格納
+ */
+ set_CurrentURL() {
+ this.comment_node.set_CurrentURL();
+ this.cls_node.set_CurrentURL();
+ this.pin_node.set_CurrentURL();
+ this.url = location.origin;
+ }
+ /**
+ * コメントを表示させる関数
+ */
+ Display_Comment() {
+ let comment_id = this.comment_node.id;
+ $("#" + this.pin_node.id).on("click", function (e) {
+ if ($("#" + comment_id).is(":hidden")) {
+ this.Move_Comment(e.pageX, e.pageY, this.id);
+ }
+ }.bind(this));
+ }
+ /**
+ * コメントとバツマークを指定した位置に表示させる。
+ * @param x 指定したx座標
+ * @param y 指定したy座標
+ * @param id クリックしたPINに対応したコメントのid属性
+ */
+ Move_Comment(x, y, id) {
+ // 対象のidのコメントとそのコメントのバツマークを表示状態に変更
+ $("#" + this.comment_node.id).show();
+ $("#" + this.cls_node.id).show();
+ // 指定の位置にコメントを移動
+ this.Set_Position_jQuery(x, y, this.comment_node.id);
+ // バツマークの移動座標を計算
+ let cls_btn_x = x;
+ // コメントの幅を取得
+ let target_width = $("#" + this.comment_node.id).outerWidth(true);
+ // コメントの幅が取得できればその分右にずらす
+ if (target_width != undefined) {
+ cls_btn_x += target_width - 5;
+ }
+ let cls_btn_y = y - 5;
+ // 指定の位置の右上にバツマークを移動
+ this.Set_Position_jQuery(cls_btn_x, cls_btn_y, this.cls_node.id);
+ }
+ /**
+ * コメントをクローズするための関数
+ */
+ close_comment() {
+ if ($("#" + this.cls_node.id).is(":visible")) {
+ $("#" + this.cls_node.id).hide();
+ $("#" + this.comment_node.id).hide();
+ }
+ }
+ remove_comment() {
+ if ($('#' + this.comment_node.id).length) {
+ $('#' + this.comment_node.id).remove();
+ $('#' + this.cls_node.id).remove();
+ $('#' + this.pin_node.id).remove();
+ }
+ }
+ /**
+ * 対象となるノードの座標を変更する。
+ * @param x 対象のx座標
+ * @param y 対象のy座標
+ * @param id 対象のid属性
+ */
+ Set_Position_jQuery(x, y, id) {
+ $("#" + id).css({
+ "position": "absolute",
+ "left": x,
+ "top": y
+ });
+ }
+}
+class CommentManager {
+ /**
+ * db関係の変数を渡す。
+ */
+ constructor() {
+ this.db = new DB();
+ this.manageid = new ManageID();
+ this.current_url = location.origin;
+ this.all_node = [];
+ }
+ /**
+ * 各ノードを作成する。
+ */
+ createComments(id, x, y, z = "1000", comment, url) {
+ if (id == undefined)
+ return;
+ let node = new Comments(id, x, y, z, comment, url);
+ console.log("DEBUG: CreateComment = {id = " + id + ",x = " + x + ",y = " + y + ",z = " + z + ",comment = " + comment + ",url = " + url + "}");
+ node.createComments();
+ node.appendComments();
+ this.all_node.push(node);
+ }
+ /**
+ * 新しいノードをサイトに追加した後、データベースに追加する
+ */
+ creteNewComments(x, y, z = "1000", comment, urlmanage) {
+ let id = this.manageid.get_Random_id();
+ let [relative_x, relative_y] = this.Change_from_abs_to_rel(Number(x), Number(y));
+ console.log("DEBUG: relative_x = " + relative_x + ", relative_y = " + relative_y);
+ let node = new Comments(id, x, y, z, comment);
+ node.createComments();
+ node.appendComments();
+ node.set_CurrentURL();
+ this.db.Save_PIN(id, String(relative_x), String(relative_y), comment, urlmanage);
+ this.all_node.push(node);
+ }
+ /*
+ サーバーから情報を読み込む
+ 読み込んだ内容を1つずつ取り出してCreate_PIN()にいれる。
+ */
+ loadComment(urlmanage) {
+ let createComments = this.createComments.bind(this);
+ let changefromreltoabs = this.Change_from_rel_to_abs.bind(this);
+ this.db.Load_Comment(urlmanage)
+ .then(function (e) {
+ e.forEach(e => {
+ let [absolute_x, absolute_y] = changefromreltoabs(Number(e.x), Number(e.y));
+ console.log("DEBUG: absolute_x = " + absolute_x + ", absolute_y = " + absolute_y);
+ createComments(e.id, String(absolute_x), String(absolute_y), "1000", e.comment, e.url);
+ });
+ });
+ }
+ close_all_Comment() {
+ this.all_node.forEach(n => {
+ n.close_comment();
+ });
+ }
+ close_all_pin() {
+ var flag = true;
+ const target_node = document.getElementsByClassName("latest_button--four");
+ this.all_node.forEach(n => {
+ if ($('#' + n.pin_node.node.id).is(":hidden")) {
+ flag = false;
+ }
+ });
+ this.all_node.forEach(n => {
+ if (flag) {
+ if ($("#" + n.pin_node.id).is(":visible")) {
+ $("#" + n.pin_node.id).hide();
+ }
+ if (!$(target_node).hasClass("latest_button--six")) {
+ $(target_node).addClass("latest_button--six");
+ }
+ }
+ else {
+ if ($("#" + n.pin_node.id).is(":hidden")) {
+ $("#" + n.pin_node.id).show();
+ }
+ if ($(target_node).hasClass("latest_button--six")) {
+ $(target_node).removeClass("latest_button--six");
+ }
+ }
+ });
+ }
+ Change_from_abs_to_rel(abs_x, abs_y) {
+ let rel_x = abs_x / document.body.clientWidth;
+ let rel_y = abs_y / document.body.clientHeight;
+ return [rel_x, rel_y];
+ }
+ Change_from_rel_to_abs(rel_x, rel_y) {
+ let abs_x = rel_x * document.body.clientWidth;
+ let abs_y = rel_y * document.body.clientHeight;
+ return [abs_x, abs_y];
+ }
+ remove_pin() {
+ while (this.all_node.length> 0) {
+ let n = this.all_node.pop();
+ n.remove_comment();
+ }
+ }
+}
+class DB {
+ /**
+ * 何かしらdbに接続するためのステータスをセットする
+ */
+ constructor() {
+ }
+ /**
+ * サーバーから情報を読み込む
+ */
+ Load_Comment(urlmanage) {
+ let server_url = urlmanage.get_url_get_from_url();
+ var info = [{}];
+ var parameter = { url: urlmanage.current_url, sharenum: urlmanage.sharenum };
+ return new Promise(function (resolve) {
+ $.ajax({
+ type: 'GET',
+ url: server_url,
+ data: parameter,
+ dataType: 'text'
+ }).done(function (data) {
+ console.log("DEBUG: LoadData = " + data);
+ JSON.parse(data).forEach((e) => {
+ info.push({ id: e.node_id, x: e.x, y: e.y, comment: e.comment, url: e.url });
+ });
+ resolve(info);
+ });
+ });
+ }
+ /**
+ * 作成したPIN及びコメントをサーバに形式を整えて送信し、保存
+ * @param id コメントのid属性
+ * @param x PINのx座標
+ * @param y PINのy座標
+ * @param comment コメントの内容
+ */
+ Save_PIN(id, x, y, comment, urlmanage) {
+ // サーバに形式を整えて送信
+ console.log("DEBUG id = " + id + "x = " + x);
+ let comments = {};
+ if (urlmanage.sharenum != null) {
+ comments = {
+ node_id: id,
+ x: x,
+ y: y,
+ comment: comment,
+ url: urlmanage.current_url,
+ sharenum: urlmanage.sharenum
+ };
+ }
+ else {
+ comments = {
+ node_id: id,
+ x: x,
+ y: y,
+ comment: comment,
+ url: urlmanage.current_url
+ };
+ }
+ $.ajax({
+ type: 'POST',
+ url: urlmanage.server_url,
+ data: {
+ comment: comments
+ }
+ }).done(function (data) {
+ console.log("DEBUG: data = " + data);
+ console.log("DEBUG: data = " + data.comment);
+ console.log("DEBUG: SaveData = {id: " + data.comment.node_id + ", x: " + data.comment.x + ", y: " + data.comment.y + ", comment: " + data.comment.comment + ", url: " + data.comment.url + "}");
+ });
+ }
+}
+class Mode {
+ constructor(munu) {
+ this.flag = "read";
+ this.writing = false;
+ this.menu = menu;
+ }
+ /**
+ * 状態を変更するための関数
+ * @param command セットした状態
+ */
+ Change_mode(command) {
+ if (command == "none") {
+ this.menu.nondisplay_menubar();
+ }
+ else {
+ this.menu.display_menubar();
+ }
+ }
+ /**
+ * 指定したモードになっているかどうかを返す
+ * @param mode 確かめるモード
+ */
+ Judge_mode(mode) {
+ if (this.flag == mode) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ Writing_mode() {
+ if (this.writing) {
+ this.writing = false;
+ }
+ else {
+ this.writing = true;
+ }
+ }
+ Change_reverse_mode() {
+ if (this.writing) {
+ return;
+ }
+ const target_node = document.getElementsByClassName("latest_button--one");
+ console.log("DEBUG: Mode: flag = " + this.flag);
+ if (this.flag == "read") {
+ this.flag = "write";
+ $(target_node).toggleClass("latest_button--five");
+ }
+ else {
+ this.flag = "read";
+ $(target_node).toggleClass("latest_button--five");
+ }
+ }
+}
+class ManageID {
+ constructor() {
+ this.maxnum = 100000;
+ this.minnum = 1;
+ }
+ get_Random_id() {
+ let id = this.make_random_id();
+ return id;
+ }
+ getRandomInt(min, max) {
+ min = Math.ceil(min);
+ max = Math.floor(max);
+ return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
+ }
+ make_random_id() {
+ let id = String(this.getRandomInt(this.minnum, this.maxnum));
+ return "Comment" + id;
+ }
+}
+class Form {
+ constructor() {
+ this.form_id = "latest_form";
+ }
+ /**
+ * formを作る関数
+ */
+ make_form() {
+ //ポップアップとして表示するもの全体のdivを用意
+ this.form = document.createElement("div");
+ this.form.id = this.form_id;
+ // table作成
+ const latest_table = document.createElement("table");
+ this.user_name_form = this.make_table_input("ユーザーネーム", latest_table);
+ this.comment_form = this.make_table_textarea("コメント", latest_table);
+ this.form.appendChild(latest_table);
+ }
+ /**
+ * ダイアログを開くための関数
+ */
+ open(x, y, comment_manager, mode, urlmanage) {
+ const user_name = this.user_name_form;
+ const comment = this.comment_form;
+ //ポップアップの呼び出し。
+ $(this.form).dialog({
+ title: 'コメント入力フォーム',
+ width: "400",
+ height: "auto",
+ modal: true,
+ buttons: {
+ "登録": function () {
+ const tmp_user = user_name.value;
+ const tmp_comment = comment.value;
+ console.log("ユーザーネーム: " + tmp_user + " コメント: " + tmp_comment + " ShareNum: " + urlmanage.sharenum);
+ // コメントを作成
+ comment_manager.creteNewComments(x, y, "1000", tmp_comment, urlmanage);
+ $(this).dialog('close');
+ }
+ },
+ open: function () {
+ mode.Writing_mode();
+ },
+ close: function () {
+ user_name.value = "";
+ comment.value = "";
+ mode.Writing_mode();
+ }
+ });
+ }
+ /**
+ * テーブルにinputフォームを追加してそれを返す。
+ * @param line_name フォームの名前を指定
+ * @param table 追加したいテーブルを指定
+ */
+ make_table_input(line_name, table) {
+ //table 1行作成
+ const row = table.insertRow(-1);
+ //table 作った1行の1列目を追加(フォームの名前)
+ row.insertCell(-1).appendChild(document.createTextNode(line_name));
+ ;
+ //tabel n行目の値を作成。
+ const input = document.createElement("input");
+ row.appendChild(input);
+ return input;
+ }
+ make_table_textarea(line_name, table) {
+ //table 1行作成
+ const row = table.insertRow(-1);
+ //table 作った1行の1列目を追加(フォームの名前)
+ row.insertCell(-1).appendChild(document.createTextNode(line_name));
+ ;
+ //tabel n行目の値を作成。
+ const textarea = document.createElement("textarea");
+ row.appendChild(textarea);
+ return textarea;
+ }
+}
+class URLManage {
+ constructor() {
+ this.current_url = location.href;
+ this.server_url = "https://stark-coast-28712.herokuapp.com/comments";
+ this.sharenum = null;
+ console.log("DEBUG: current_url = " + this.current_url);
+ }
+ get_url_get_from_url() {
+ let get_url = "/get_from_url";
+ return this.server_url + get_url;
+ }
+ /**
+ * Get the URL parameter value(from https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript)
+ *
+ * @param name {string} パラメータのキー文字列
+ * @param url {url} 対象のURL文字列(任意)
+ * @return パラメーターの値
+ */
+ getParam(name, url = "") {
+ if (url == "")
+ url = window.location.href;
+ name = name.replace(/[\[\]]/g, "\\$&");
+ var regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)"), results = regex.exec(url);
+ if (!results)
+ return;
+ if (!results[2])
+ return;
+ this.sharenum = decodeURIComponent(results[2].replace(/\+/g, " "));
+ }
+ get_href() {
+ const sharenum = "sharenum";
+ var regex = new RegExp("[?&]" + sharenum + "(=([^]*)|&|#|$)");
+ this.current_url = this.current_url.replace(regex, "");
+ console.log("DEBUG GET_HREF: current_url2 = " + this.current_url);
+ }
+}
+class Menu_Node {
+ constructor() {
+ this.body = document.createElement("div");
+ this.menu_class = "latest_menubar";
+ this.uni_button_class = "latest_button";
+ this.button_n_list = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nien", "ten", "eleven", "twelve", "thirteen", "fourteen"];
+ this.button_index = 0;
+ this.img_root = document.documentElement;
+ this.img_count = 1;
+ this.img_url = chrome.extension.getURL('img/'); //共通するURLを取得
+ }
+ make_body() {
+ this.body = document.createElement("div");
+ this.body.className = this.menu_class;
+ }
+ make_and_append_button(set_function) {
+ let new_button = document.createElement("div");
+ new_button.classList.add(this.uni_button_class);
+ let only_button_class = this.uni_button_class + "--" + this.button_n_list[this.button_index];
+ this.button_index += 1;
+ new_button.classList.add(only_button_class);
+ new_button.onclick = function () {
+ set_function();
+ };
+ this.body.appendChild(new_button);
+ }
+ appendmenubar() {
+ document.body.append(this.body);
+ }
+ get_img(img_name) {
+ let css_img_id = "--eyeurl" + this.img_count;
+ let target_img_url = "url(" + this.img_url + img_name + ")";
+ console.log("DEBUG: css_img_id = " + css_img_id);
+ console.log("DEBUG: url = " + target_img_url);
+ this.img_count += 1;
+ this.img_root.style.setProperty(css_img_id, target_img_url);
+ }
+ display_menubar() {
+ console.log("ttt");
+ $('.' + this.menu_class).show();
+ }
+ nondisplay_menubar() {
+ console.log("nondisplay");
+ $('.' + this.menu_class).hide();
+ }
+}
+class Share {
+ constructor(urlmanage, comment_manager) {
+ this.urlmanage = urlmanage;
+ this.comment_manager = comment_manager;
+ this.current_sharenum = urlmanage.sharenum;
+ this.limit = false;
+ this.setLimit = this.setLimit_false.bind(this);
+ }
+ get_Sharenum() {
+ this.urlmanage.getParam("sharenum");
+ this.current_sharenum = this.urlmanage.sharenum;
+ }
+ Init_Share() {
+ this.urlmanage.sharenum = this.make_share_num();
+ this.current_sharenum = this.urlmanage.sharenum;
+ this.comment_manager.remove_pin();
+ this.Result_Init_Share(this.make_share_url(this.urlmanage.current_url, this.current_sharenum));
+ }
+ make_share_num() {
+ const max_sharenum = 10000;
+ const min_sharenum = 0;
+ let min = Math.ceil(min_sharenum);
+ let max = Math.floor(max_sharenum);
+ let num = Math.floor(Math.random() * (max - min)) + min;
+ return String(num);
+ }
+ Change_Share() {
+ console.log("DEBUG: Change_Share: limit = " + this.limit);
+ if (this.limit) {
+ return;
+ }
+ this.Change_Share_img();
+ if (this.current_sharenum == null) {
+ this.Init_Share();
+ }
+ else {
+ this.comment_manager.remove_pin();
+ if (this.urlmanage.sharenum == null) {
+ // 共有状態off->on
+ this.urlmanage.sharenum = this.current_sharenum;
+ }
+ else {
+ // 共有状態on->off
+ this.urlmanage.sharenum = null;
+ }
+ this.comment_manager.loadComment(this.urlmanage);
+ this.limit = true;
+ setTimeout(this.setLimit, 1000);
+ }
+ const target_node = document.getElementsByClassName("latest_button--four");
+ if ($(target_node).hasClass("latest_button--six")) {
+ $(target_node).removeClass("latest_button--six");
+ }
+ }
+ setLimit_false() {
+ this.limit = false;
+ console.log("DEBUG: setLimit: limit = " + this.limit);
+ }
+ Change_Share_img() {
+ const target_node = document.getElementsByClassName("latest_button--three");
+ $(target_node).toggleClass("latest_button--seven");
+ }
+ make_share_url(current_url, share_num) {
+ let para = "sharenum=" + share_num;
+ console.log("DEBUG: location.search = " + location.search);
+ if (location.search != "") {
+ para = '&' + para;
+ }
+ else {
+ para = '?' + para;
+ }
+ return current_url + para;
+ }
+ Result_Init_Share(url) {
+ //ポップアップとして表示するもの全体のdivを用意
+ const form = document.createElement("div");
+ form.id = "latest_result_share";
+ form.style.textAlign = "center";
+ const title = document.createElement("h1");
+ title.innerHTML = "共有URLはこちら";
+ form.appendChild(title);
+ const context = document.createElement("input");
+ context.id = "latest_share_url";
+ context.type = "text";
+ context.value = url;
+ context.readOnly = true;
+ context.width = 400;
+ context.size = 40;
+ context.style.textAlign = "center";
+ context.select();
+ form.appendChild(context);
+ //ポップアップの呼び出し。
+ $(form).dialog({
+ title: '共有URL',
+ width: "400",
+ height: "auto",
+ modal: true,
+ buttons: {
+ "URLをコピーする": function () {
+ $(context).select();
+ document.execCommand("Copy");
+ const result = document.createElement("div");
+ result.innerHTML = "コピーできました!";
+ form.appendChild(result);
+ }
+ }
+ });
+ }
+}
+class Debug {
+ constructor() {
+ }
+ make_random_comment() {
+ let comments = ["ようこそLatestへ!!", "これ、楽しそう!", "これならどうかな?", "こんなのできたんだね!"];
+ let min = Math.ceil(0);
+ let max = Math.floor(comments.length);
+ let num = Math.floor(Math.random() * (max - min)) + min;
+ return comments[num];
+ }
+ get_random_comment() {
+ let comment = this.make_random_comment();
+ return comment;
+ }
+}
+// 新しいファイルを作った時には必ずここに書き込んでください。
+///
")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodename+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
+}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\1ドル")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li> :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("